Working version of editing decks and adding decks
This commit is contained in:
		| @@ -11,8 +11,16 @@ struct AddDeckView: View { | ||||
|     @Binding var isShowing: Bool | ||||
|     @Environment(\.managedObjectContext) var moc | ||||
|     @State var name: String = "" | ||||
|     var deck: Deck | ||||
|     var edit: Bool = false | ||||
|     @State var deck: Deck? | ||||
|     var edit: Bool | ||||
|      | ||||
|     init(isShowing: Binding<Bool>, deck: Deck? = nil) { | ||||
|         self._isShowing = isShowing | ||||
|         self._name = State(initialValue: deck?.name ?? "") | ||||
|         self.deck = deck | ||||
|         self.edit = deck != nil | ||||
|     } | ||||
|      | ||||
|     var body: some View { | ||||
|         NavigationStack { | ||||
|             List { | ||||
| @@ -29,8 +37,14 @@ struct AddDeckView: View { | ||||
|                 } | ||||
|                 ToolbarItemGroup(placement: .topBarTrailing) { | ||||
|                     Button(action: { | ||||
|                         deck.name = name | ||||
|                         deck.dateAdded = Date() | ||||
|                         if let existingDeck = deck { | ||||
|                             existingDeck.name = name | ||||
|                         } else { | ||||
|                             let currentDeck = Deck(context: moc) | ||||
|                             currentDeck.id = UUID() | ||||
|                             currentDeck.dateAdded = Date() | ||||
|                             currentDeck.name = name | ||||
|                         } | ||||
|                         do { | ||||
|                             try moc.save() | ||||
|                             self.isShowing = false | ||||
| @@ -44,7 +58,7 @@ struct AddDeckView: View { | ||||
|                     .disabled(name.isEmpty) | ||||
|                 } | ||||
|             } | ||||
|             .navigationTitle("Add Deck") | ||||
|             .navigationTitle(edit ? "Edit Deck" : "Add Deck") | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -13,13 +13,11 @@ struct DeckListView: View { | ||||
|     @Environment(\.managedObjectContext) var moc | ||||
|     @State var editDeck: Bool = false | ||||
|     @State var deckToEdit: Deck? | ||||
|     @State var createdDeck: Deck? | ||||
|     var body: some View { | ||||
|         NavigationStack { | ||||
|             List { | ||||
|                 Button(action: { | ||||
|                     self.addDeck = true | ||||
|                     self.createdDeck = createDeck() | ||||
|                 }) { | ||||
|                     HStack { | ||||
|                         Image(systemName: "plus.circle.fill") | ||||
| @@ -66,22 +64,14 @@ struct DeckListView: View { | ||||
|             } | ||||
|             .navigationTitle("All decks") | ||||
|         } | ||||
|         .onAppear { | ||||
|             print(decks.count) | ||||
|         } | ||||
|         .sheet(isPresented: Binding(get: {editDeck}, set: {editDeck = $0})) { | ||||
|             AddDeckView(isShowing: $editDeck, name: deckToEdit?.name ?? "", deck: deckToEdit ?? createDeck(), edit: deckToEdit != nil) | ||||
|             AddDeckView(isShowing: $editDeck, deck: deckToEdit) | ||||
|         } | ||||
|         .sheet(isPresented: $addDeck, content: { | ||||
|             AddDeckView(isShowing: $addDeck, deck: createdDeck ?? createDeck()) | ||||
|             AddDeckView(isShowing: $addDeck) | ||||
|         }) | ||||
|     } | ||||
|      | ||||
|     func createDeck() -> Deck { | ||||
|         let deck = Deck(context: moc) | ||||
|         deck.id = UUID() | ||||
|         return deck | ||||
|     } | ||||
| } | ||||
|  | ||||
| #Preview { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user