Mercurial > public > geoquiz
diff GeoQuiz/Components/ProfileEditModalView.swift @ 14:136928bae534
add user profile
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Wed, 19 Oct 2022 07:56:33 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GeoQuiz/Components/ProfileEditModalView.swift Wed Oct 19 07:56:33 2022 +0200 @@ -0,0 +1,70 @@ +// +// ProfileEditModalView.swift +// GeoQuiz +// +// Created by Dennis Concepción Martín on 19/10/22. +// + +import SwiftUI +import PhotosUI + +struct ProfileEditModalView: View { + @ObservedObject var user: User + @Environment(\.dismiss) var dismiss + + @State private var selectedItem: PhotosPickerItem? = nil + + var body: some View { + NavigationStack { + Form { + Section { + HStack { + Spacer() + ZStack { + UserImage(uiImage: user.data.uiImage) + .onChange(of: selectedItem) { newItem in + Task { + if let data = try? await newItem?.loadTransferable(type: Data.self) { + user.data.imageData = data + } + } + } + + PhotosPicker( + selection: $selectedItem, + matching: .images, + photoLibrary: .shared()) { + EmptyView() + } + } + + Spacer() + } + } header: { + Text("Profile image") + } + + Section { + TextField("Enter a username", text: $user.data.username) + } header: { + Text("Username") + } + } + .navigationTitle("Edit profile") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button("Done") { + dismiss() + } + } + } + } + } +} + +struct ProfileEditModalView_Previews: PreviewProvider { + static var previews: some View { + ProfileEditModalView(user: User()) + } +}