Adding is a bit funky, Editing decks works
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user