Adding is a bit funky, Editing decks works

This commit is contained in:
2024-05-06 20:30:42 +02:00
parent 492518ccdb
commit a136ee333a
2 changed files with 40 additions and 10 deletions

View File

@@ -11,6 +11,8 @@ struct AddDeckView: View {
@Binding var isShowing: Bool
@Environment(\.managedObjectContext) var moc
@State var name: String = ""
var deck: Deck
var edit: Bool = false
var body: some View {
NavigationStack {
List {
@@ -27,8 +29,6 @@ struct AddDeckView: View {
}
ToolbarItemGroup(placement: .topBarTrailing) {
Button(action: {
let deck = Deck(context: moc)
deck.id = UUID()
deck.name = name
deck.dateAdded = Date()
do {
@@ -38,7 +38,7 @@ struct AddDeckView: View {
print("Something went wrong while saving the deck")
}
}, label: {
Text("Create")
Text(edit ? "Edit": "Create")
.bold()
})
.disabled(name.isEmpty)
@@ -51,6 +51,8 @@ struct AddDeckView: View {
#Preview {
@State var isShowing = true
return AddDeckView(isShowing: $isShowing)
let deck = Deck(context: DataController.preview.container.viewContext)
deck.id = UUID()
return AddDeckView(isShowing: $isShowing, deck: deck)
.environment(\.managedObjectContext, DataController.preview.container.viewContext)
}

View File

@@ -11,12 +11,15 @@ struct DeckListView: View {
@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "dateAdded", ascending: false)]) var decks: FetchedResults<Deck>
@State var addDeck = false
@Environment(\.managedObjectContext) var moc
@State var addFlashcard = false
@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")
@@ -24,11 +27,24 @@ struct DeckListView: View {
}
}
ForEach(decks) { deck in
HStack {
Button {
deckToEdit = deck
editDeck = true
} label: {
Image(systemName: "pencil")
.contentShape(Rectangle())
.foregroundStyle(.blue)
}
.buttonStyle(PlainButtonStyle())
NavigationLink {
FlashCardListView(deck: deck)
} label: {
Text(deck.name ?? "Unknown deck name")
}
.contentShape(Rectangle())
}
}
.onDelete(perform: { offsets in
for index in offsets {
@@ -50,10 +66,22 @@ 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)
}
.sheet(isPresented: $addDeck, content: {
AddDeckView(isShowing: $addDeck)
AddDeckView(isShowing: $addDeck, deck: createdDeck ?? createDeck())
})
}
func createDeck() -> Deck {
let deck = Deck(context: moc)
deck.id = UUID()
return deck
}
}
#Preview {