Working version of editing decks and adding decks

This commit is contained in:
2024-05-06 20:53:31 +02:00
parent a136ee333a
commit e11d79acb9
2 changed files with 22 additions and 18 deletions

View File

@@ -11,8 +11,16 @@ struct AddDeckView: View {
@Binding var isShowing: Bool @Binding var isShowing: Bool
@Environment(\.managedObjectContext) var moc @Environment(\.managedObjectContext) var moc
@State var name: String = "" @State var name: String = ""
var deck: Deck @State var deck: Deck?
var edit: Bool = false 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 { var body: some View {
NavigationStack { NavigationStack {
List { List {
@@ -29,13 +37,19 @@ struct AddDeckView: View {
} }
ToolbarItemGroup(placement: .topBarTrailing) { ToolbarItemGroup(placement: .topBarTrailing) {
Button(action: { Button(action: {
deck.name = name if let existingDeck = deck {
deck.dateAdded = Date() existingDeck.name = name
} else {
let currentDeck = Deck(context: moc)
currentDeck.id = UUID()
currentDeck.dateAdded = Date()
currentDeck.name = name
}
do { do {
try moc.save() try moc.save()
self.isShowing = false self.isShowing = false
} catch { } catch {
print("Something went wrong while saving the deck") print("Something went wrong while saving the deck")
} }
}, label: { }, label: {
Text(edit ? "Edit": "Create") Text(edit ? "Edit": "Create")
@@ -44,7 +58,7 @@ struct AddDeckView: View {
.disabled(name.isEmpty) .disabled(name.isEmpty)
} }
} }
.navigationTitle("Add Deck") .navigationTitle(edit ? "Edit Deck" : "Add Deck")
} }
} }
} }

View File

@@ -13,13 +13,11 @@ struct DeckListView: View {
@Environment(\.managedObjectContext) var moc @Environment(\.managedObjectContext) var moc
@State var editDeck: Bool = false @State var editDeck: Bool = false
@State var deckToEdit: Deck? @State var deckToEdit: Deck?
@State var createdDeck: Deck?
var body: some View { var body: some View {
NavigationStack { NavigationStack {
List { List {
Button(action: { Button(action: {
self.addDeck = true self.addDeck = true
self.createdDeck = createDeck()
}) { }) {
HStack { HStack {
Image(systemName: "plus.circle.fill") Image(systemName: "plus.circle.fill")
@@ -66,22 +64,14 @@ struct DeckListView: View {
} }
.navigationTitle("All decks") .navigationTitle("All decks")
} }
.onAppear {
print(decks.count)
}
.sheet(isPresented: Binding(get: {editDeck}, set: {editDeck = $0})) { .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: { .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 { #Preview {