parent
6ea7146860
commit
3b7d4f410b
@ -0,0 +1,88 @@
|
|||||||
|
//
|
||||||
|
// EditPlayerView.swift
|
||||||
|
// DouShouQi_App
|
||||||
|
//
|
||||||
|
// Created by étudiant on 17/06/2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct EditPlayerView: View {
|
||||||
|
@Binding var isPresented: Bool
|
||||||
|
@ObservedObject var player: PlayerVM
|
||||||
|
@ObservedObject var playersVM: PlayersVM
|
||||||
|
|
||||||
|
@State private var profileImage: UIImage? = nil
|
||||||
|
@State private var showImagePicker = false
|
||||||
|
@State private var imagePickerSourceType: UIImagePickerController.SourceType = .photoLibrary
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
VStack(spacing: 20) {
|
||||||
|
Text("Edit Player")
|
||||||
|
.font(.headline)
|
||||||
|
|
||||||
|
TextField("Player Name", text: $player.player.name)
|
||||||
|
.padding()
|
||||||
|
.background(Color(.systemGray6))
|
||||||
|
.cornerRadius(10)
|
||||||
|
|
||||||
|
if let profileImage = profileImage {
|
||||||
|
Image(uiImage: profileImage)
|
||||||
|
.resizable()
|
||||||
|
.frame(width: 100, height: 100)
|
||||||
|
.clipShape(Circle())
|
||||||
|
} else {
|
||||||
|
Button(action: {
|
||||||
|
showImagePicker = true
|
||||||
|
}) {
|
||||||
|
Text("Select Profile Photo")
|
||||||
|
.foregroundColor(.white)
|
||||||
|
.padding()
|
||||||
|
.background(Color.blue)
|
||||||
|
.cornerRadius(10)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HStack {
|
||||||
|
Button(action: {
|
||||||
|
if let image = profileImage, let imageData = image.jpegData(compressionQuality: 0.8) {
|
||||||
|
let filename = UUID().uuidString + ".jpg"
|
||||||
|
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
|
||||||
|
let documentsDirectory = paths[0]
|
||||||
|
let fileURL = documentsDirectory.appendingPathComponent(filename)
|
||||||
|
try? imageData.write(to: fileURL)
|
||||||
|
player.player.photo = fileURL.path
|
||||||
|
}
|
||||||
|
playersVM.updatePlayer(playerVM: player)
|
||||||
|
playersVM.refreshPlayers()
|
||||||
|
isPresented = false
|
||||||
|
}) {
|
||||||
|
Text("Save")
|
||||||
|
.foregroundColor(.white)
|
||||||
|
.padding()
|
||||||
|
.background(Color.blue)
|
||||||
|
.cornerRadius(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
Button(action: {
|
||||||
|
isPresented = false
|
||||||
|
}) {
|
||||||
|
Text("Cancel")
|
||||||
|
.foregroundColor(.white)
|
||||||
|
.padding()
|
||||||
|
.background(Color.red)
|
||||||
|
.cornerRadius(10)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.padding()
|
||||||
|
.frame(maxWidth: 300)
|
||||||
|
.background(Color.white)
|
||||||
|
.cornerRadius(20)
|
||||||
|
.shadow(radius: 10)
|
||||||
|
.sheet(isPresented: $showImagePicker) {
|
||||||
|
ImagePicker(image: $profileImage, sourceType: imagePickerSourceType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue