Adding is a bit funky, Editing decks works
This commit is contained in:
@@ -11,6 +11,8 @@ 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
|
||||||
|
var edit: Bool = false
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
List {
|
List {
|
||||||
@@ -27,8 +29,6 @@ struct AddDeckView: View {
|
|||||||
}
|
}
|
||||||
ToolbarItemGroup(placement: .topBarTrailing) {
|
ToolbarItemGroup(placement: .topBarTrailing) {
|
||||||
Button(action: {
|
Button(action: {
|
||||||
let deck = Deck(context: moc)
|
|
||||||
deck.id = UUID()
|
|
||||||
deck.name = name
|
deck.name = name
|
||||||
deck.dateAdded = Date()
|
deck.dateAdded = Date()
|
||||||
do {
|
do {
|
||||||
@@ -38,7 +38,7 @@ struct AddDeckView: View {
|
|||||||
print("Something went wrong while saving the deck")
|
print("Something went wrong while saving the deck")
|
||||||
}
|
}
|
||||||
}, label: {
|
}, label: {
|
||||||
Text("Create")
|
Text(edit ? "Edit": "Create")
|
||||||
.bold()
|
.bold()
|
||||||
})
|
})
|
||||||
.disabled(name.isEmpty)
|
.disabled(name.isEmpty)
|
||||||
@@ -51,6 +51,8 @@ struct AddDeckView: View {
|
|||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
@State var isShowing = true
|
@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)
|
.environment(\.managedObjectContext, DataController.preview.container.viewContext)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,15 @@ struct DeckListView: View {
|
|||||||
@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "dateAdded", ascending: false)]) var decks: FetchedResults<Deck>
|
@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "dateAdded", ascending: false)]) var decks: FetchedResults<Deck>
|
||||||
@State var addDeck = false
|
@State var addDeck = false
|
||||||
@Environment(\.managedObjectContext) var moc
|
@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 {
|
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")
|
||||||
@@ -24,11 +27,24 @@ struct DeckListView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ForEach(decks) { deck in
|
ForEach(decks) { deck in
|
||||||
|
HStack {
|
||||||
|
Button {
|
||||||
|
deckToEdit = deck
|
||||||
|
editDeck = true
|
||||||
|
} label: {
|
||||||
|
Image(systemName: "pencil")
|
||||||
|
.contentShape(Rectangle())
|
||||||
|
.foregroundStyle(.blue)
|
||||||
|
}
|
||||||
|
.buttonStyle(PlainButtonStyle())
|
||||||
|
|
||||||
NavigationLink {
|
NavigationLink {
|
||||||
FlashCardListView(deck: deck)
|
FlashCardListView(deck: deck)
|
||||||
} label: {
|
} label: {
|
||||||
Text(deck.name ?? "Unknown deck name")
|
Text(deck.name ?? "Unknown deck name")
|
||||||
}
|
}
|
||||||
|
.contentShape(Rectangle())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.onDelete(perform: { offsets in
|
.onDelete(perform: { offsets in
|
||||||
for index in offsets {
|
for index in offsets {
|
||||||
@@ -50,10 +66,22 @@ struct DeckListView: View {
|
|||||||
}
|
}
|
||||||
.navigationTitle("All decks")
|
.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: {
|
.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 {
|
#Preview {
|
||||||
|
|||||||
Reference in New Issue
Block a user