File tree Expand file tree Collapse file tree 4 files changed +24
-2
lines changed
ACHNBrowserUI/ACHNBrowserUI
packages/Backend/Sources/Backend/environments Expand file tree Collapse file tree 4 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -247,6 +247,12 @@ public class UserCollection: ObservableObject {
247247 save ( )
248248 }
249249
250+ public func updateDesign( _ design: Design ) {
251+ guard let index = designs. firstIndex ( of: design) else { return }
252+ designs [ index] = design
253+ save ( )
254+ }
255+
250256 // MARK: - Chores
251257
252258 public func addChore( _ chore: Chore ) {
Original file line number Diff line number Diff line change @@ -18,17 +18,23 @@ final class DesignFormViewModel: ObservableObject {
1818 // MARK: - Private properties
1919
2020 private let userCollection : UserCollection
21+ private let isEditing : Bool
2122
2223 // MARK: - Life cycle
2324
2425 init ( design: Design ? , userCollection: UserCollection = . shared) {
26+ self . isEditing = design != nil
2527 self . design = design ?? Design ( )
2628 self . userCollection = userCollection
2729 }
2830
2931 // MARK: - Public
3032
3133 func save( ) {
32- userCollection. addDesign ( design)
34+ if isEditing {
35+ userCollection. updateDesign ( design)
36+ } else {
37+ userCollection. addDesign ( design)
38+ }
3339 }
3440}
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ struct DesignListView: View {
1414
1515 @ObservedObject private var viewModel : DesignListViewModel
1616 @State private var sheet : Sheet . SheetType ?
17+ @State private var editingMode : EditMode = . inactive
1718
1819 // MARK: - Life cycle
1920
@@ -34,12 +35,20 @@ struct DesignListView: View {
3435
3536 ForEach ( viewModel. designs) { design in
3637 DesignRowView ( viewModel: DesignRowViewModel ( design: design) )
38+ . contentShape ( Rectangle ( ) )
39+ . onTapGesture {
40+ if self . editingMode == . active {
41+ self . sheet = . designForm( editingDesign: design)
42+ }
43+ }
3744 } . onDelete { indexes in
3845 self . viewModel. deleteDesign ( at: indexes. first!)
3946 }
4047 }
4148 . navigationBarTitle ( Text ( " Designs " ) , displayMode: . automatic)
49+ . navigationBarItems ( trailing: EditButton ( ) )
4250 . sheet ( item: $sheet, content: { Sheet ( sheetType: $0) } )
51+ . environment ( \. editMode, self . $editingMode)
4352 }
4453}
4554
Original file line number Diff line number Diff line change @@ -13,7 +13,8 @@ struct DesignRowView: View {
1313
1414 // MARK: - Properties
1515
16- let viewModel : DesignRowViewModel
16+ private let viewModel : DesignRowViewModel
17+ private let id = UUID ( )
1718
1819 // MARK: - Life cycle
1920
You can’t perform that action at this time.
0 commit comments