annotate GeoQuiz/ProfileEditModalView.swift @ 17:8dac58bb4569

fix build bug
author Dennis C. M. <dennis@denniscm.com>
date Thu, 20 Oct 2022 18:07:51 +0200
parents 1011e56b7832
children f140bb277c96
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // ProfileEditModalView.swift
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 19/10/22.
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9 import PhotosUI
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 struct ProfileEditModalView: View {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12 @ObservedObject var user: User
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13 @Environment(\.dismiss) var dismiss
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 @State private var selectedItem: PhotosPickerItem? = nil
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 var body: some View {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 NavigationStack {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 Form {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20 Section {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 HStack {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 Spacer()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 ZStack {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 UserImage(uiImage: user.data.uiImage)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 .onChange(of: selectedItem) { newItem in
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26 Task {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 if let data = try? await newItem?.loadTransferable(type: Data.self) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28 user.data.imageData = data
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33 PhotosPicker(
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34 selection: $selectedItem,
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 matching: .images,
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 photoLibrary: .shared()) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 EmptyView()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41 Spacer()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 } header: {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 Text("Profile image")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 Section {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48 TextField("Enter a username", text: $user.data.username)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 } header: {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50 Text("Username")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 .navigationTitle("Edit profile")
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 .navigationBarTitleDisplayMode(.inline)
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55 .toolbar {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56 ToolbarItem(placement: .navigationBarTrailing) {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
57 Button("Done") {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
58 dismiss()
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 struct ProfileEditModalView_Previews: PreviewProvider {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 static var previews: some View {
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68 ProfileEditModalView(user: User())
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 }
136928bae534 add user profile
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 }