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