mirror of
https://github.com/ivanvorobei/SwiftUI.git
synced 2026-04-01 06:53:19 +02:00
Update
This commit is contained in:
53
Other Projects/SwiftUI + Redux/SwiftUIDemo/views/users/UserDetailView.swift
Executable file
53
Other Projects/SwiftUI + Redux/SwiftUIDemo/views/users/UserDetailView.swift
Executable file
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// UserDetailView.swift
|
||||
// SwiftUIDemo
|
||||
//
|
||||
// Created by Thomas Ricouard on 04/06/2019.
|
||||
// Copyright © 2019 Thomas Ricouarf. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Combine
|
||||
|
||||
struct UserDetailView : View {
|
||||
@EnvironmentObject var state: AppState
|
||||
let userId: Int
|
||||
|
||||
var editModal: Modal {
|
||||
let user = state.usersState.users[userId]
|
||||
return Modal(UserEditForm(userId: user.id, saveHandler: { saved in
|
||||
self.state.dispatch(action: UserActions.stopEditUser)
|
||||
}).environmentObject(state)) {
|
||||
self.state.dispatch(action: UserActions.stopEditUser)
|
||||
}
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
let user = state.usersState.users[userId]
|
||||
return VStack {
|
||||
Image(systemName: user.imageName)
|
||||
Text(user.name)
|
||||
Text(user.username).lineLimit(0)
|
||||
}
|
||||
.navigationBarTitle(Text(user.name), displayMode: .inline)
|
||||
.navigationBarItems(trailing:
|
||||
Button(action: {
|
||||
self.state.dispatch(action: UserActions.startEditUser)
|
||||
}) {
|
||||
Text("Edit user")
|
||||
}
|
||||
.presentation(self.state.usersState.isEditingUser ? self.editModal : nil))
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
struct UserDetailView_Previews : PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationView {
|
||||
UserDetailView(userId: 0).environmentObject(sampleStore)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user