annotate GeoQuiz/ProfileModalView.swift @ 14:136928bae534

add user profile
author Dennis C. M. <dennis@denniscm.com>
date Wed, 19 Oct 2022 07:56:33 +0200
parents e09959b4e4a8
children f1967f8cc67b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // ProfileModalView.swift
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 25/9/22.
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
9 import PhotosUI
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 struct ProfileModalView: View {
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
12 @ObservedObject var user: User
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
13 @ObservedObject var storeKitRC: StoreKitRC
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
15 @Environment(\.dismiss) var dismiss
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
16
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
17 @State private var showingEditModalView = false
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
18
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 var body: some View {
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
20 NavigationView {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
21 Form {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
22 Section {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
23 HStack(spacing: 20) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
24 UserImage(uiImage: user.data.uiImage)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
25
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
26 VStack(alignment: .leading, spacing: 8) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
27 Text(user.data.username)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
28 .font(.title)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
29 .fontWeight(.semibold)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
30
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
31 if storeKitRC.isActive {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
32 Text("Premium user ⭐️")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
33 .foregroundColor(.secondary)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
34 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
35 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
36 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
37 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
38
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
39 Section {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
40 VStack(alignment: .leading) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
41 Text("Game 1")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
42 Capsule()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
43 .frame(height: 6)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
44 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
45
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
46 VStack(alignment: .leading) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
47 Text("Game 1")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
48 Capsule()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
49 .frame(height: 6)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
50 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
51 VStack(alignment: .leading) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
52 Text("Game 1")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
53 Capsule()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
54 .frame(height: 6)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
55 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
56 VStack(alignment: .leading) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
57 Text("Game 1")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
58 Capsule()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
59 .frame(height: 6)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
60 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
61 } header: {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
62 Text("Progress")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
63 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
64
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
65 Section {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
66 ForEach(1..<10) { _ in
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
67 Text("Hello")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
68 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
69 } header: {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
70 Text("Recent games")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
71 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
72 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
73 .navigationTitle("Profile")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
74 .navigationBarTitleDisplayMode(.inline)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
75 .toolbar {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
76 ToolbarItem(placement: .cancellationAction) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
77 Button {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
78 dismiss()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
79 } label: {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
80 Label("Exit", systemImage: "multiply")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
81 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
82 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
83
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
84 ToolbarItem(placement: .navigationBarTrailing) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
85 Button("Edit") {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
86 showingEditModalView = true
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
87 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
88 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
89 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
90
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
91 .sheet(isPresented: $showingEditModalView) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
92 ProfileEditModalView(user: user)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
93 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
94 }
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
95 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
96 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
97
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
98 struct ProfileView_Previews: PreviewProvider {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
99 static var previews: some View {
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
100 ProfileModalView(user: User(), storeKitRC: StoreKitRC())
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
101 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
102 }