diff --git a/WordAX/Views/Deck/AddDeckView.swift b/WordAX/Views/Deck/AddDeckView.swift index c8f0e14..9efc8be 100644 --- a/WordAX/Views/Deck/AddDeckView.swift +++ b/WordAX/Views/Deck/AddDeckView.swift @@ -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, 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,13 +37,19 @@ 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 } catch { - print("Something went wrong while saving the deck") + print("Something went wrong while saving the deck") } }, label: { Text(edit ? "Edit": "Create") @@ -44,7 +58,7 @@ struct AddDeckView: View { .disabled(name.isEmpty) } } - .navigationTitle("Add Deck") + .navigationTitle(edit ? "Edit Deck" : "Add Deck") } } } diff --git a/WordAX/Views/Deck/DeckListView.swift b/WordAX/Views/Deck/DeckListView.swift index e3d0424..0486a8f 100644 --- a/WordAX/Views/Deck/DeckListView.swift +++ b/WordAX/Views/Deck/DeckListView.swift @@ -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 {