annotate GeoQuiz/ProfileModalView.swift @ 22:56add5561261

add mock data creation
author Dennis C. M. <dennis@denniscm.com>
date Wed, 26 Oct 2022 08:20:19 +0200
parents b145c408f791
children 02dcebb8cc4a
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
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct ProfileModalView: View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
11 @ObservedObject var userController: UserController
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
12 @ObservedObject var storeKitController: StoreKitController
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
13
20
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
14 @State private var showingEditModalView = false
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
16 @FetchRequest(sortDescriptors: [
16
1011e56b7832 implement user profile
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
17 SortDescriptor(\.date, order: .reverse),
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 14
diff changeset
18 ]) var playedGames: FetchedResults<PlayedGame>
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
19
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
20 @Environment(\.dismiss) var dismiss
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
21 @Environment(\.managedObjectContext) var moc
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
22
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 var body: some View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
24 NavigationStack {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
25 ScrollView {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
26 VStack(spacing: 30) {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
27 UserProfile(
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
28 userController: userController,
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
29 storeKitController: storeKitController,
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
30 isShowing: $showingEditModalView
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
31 )
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
32
21
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
33 if !playedGames.isEmpty {
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
34 VStack(spacing: 20) {
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
35 HStack {
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
36 Text("Latest games")
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
37 .foregroundColor(.secondary)
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
38
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
39 Spacer()
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
40
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
41 NavigationLink {
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
42 PlayedGamesList()
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
43 } label: {
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
44 HStack {
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
45 Text("Show all")
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
46 Image(systemName: "chevron.right")
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
47 }
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
48 }
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
49 .disabled(playedGames.isEmpty)
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
50 }
20
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
51
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
52 ForEach(playedGames.prefix(8)) { playedGame in
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
53 RecentGame(game: playedGame)
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
54 .padding()
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
55 .background(Color(.secondarySystemGroupedBackground))
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
56 .cornerRadius(20)
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
57 }
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
58 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
59 }
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
60 }
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
61 .padding()
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
62 }
20
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
63 .frame(maxWidth: .infinity)
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
64 .navigationTitle("Profile")
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
65 .navigationBarTitleDisplayMode(.inline)
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
66 .background(Color(.systemGroupedBackground))
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
67 .toolbar {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
68 ToolbarItem(placement: .cancellationAction) {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
69 Button {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
70 dismiss()
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
71 } label: {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
72 Label("Exit", systemImage: "multiply")
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
73 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
74 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
75 }
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
76
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
77 .sheet(isPresented: $showingEditModalView) {
21
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
78 ProfileEditModalView(userController: userController)
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
79 }
21
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
80
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
81 #if DEBUG
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
82 .onAppear {
22
56add5561261 add mock data creation
Dennis C. M. <dennis@denniscm.com>
parents: 21
diff changeset
83 PersistenceController.createMockData(playedGames, moc)
21
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
84 }
b145c408f791 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 20
diff changeset
85 #endif
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents: 16
diff changeset
86 }
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
87 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
88 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
89
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
90 struct ProfileView_Previews: PreviewProvider {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
91 static var previews: some View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 17
diff changeset
92 ProfileModalView(userController: UserController(), storeKitController: StoreKitController())
16
1011e56b7832 implement user profile
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
93 .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
94 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
95 }