Add edit function to flashcard

This commit is contained in:
2024-05-05 17:45:21 +02:00
parent e0b6365eeb
commit 492518ccdb
4 changed files with 32 additions and 11 deletions

View File

@@ -48,7 +48,7 @@ public class Flashcard: NSManagedObject {
}
func getSpacedRepetitionMilestone() -> SpacedRepetitionMilestoneEnum {
var milestone = SpacedRepetitionMilestoneEnum.getMilestoneFromInt(value: self.nextSpacedRepetitionMilestone)
return milestone == .Now ? .TenMinutes : milestone
let milestone = SpacedRepetitionMilestoneEnum.getMilestoneFromInt(value: self.nextSpacedRepetitionMilestone)
return milestone == .Now || milestone == .OneMinute ? .TenMinutes : milestone
}
}

View File

@@ -16,6 +16,8 @@ struct AddFlashCardView: View {
@FetchRequest(sortDescriptors: []) var decks: FetchedResults<Deck>
@State var selectedDeck: Deck?
@State var createDisabled: Bool = true
@State var flashcard: Flashcard
var edit: Bool = false
var body: some View {
NavigationStack {
List {
@@ -54,7 +56,7 @@ struct AddFlashCardView: View {
self.createFlashcard()
self.isShowing = false
}, label: {
Text("Create")
Text(edit ? "Save" : "Create")
.bold()
})
.disabled(text.count == 0 || description.count == 0 || selectedDeck == nil)
@@ -65,15 +67,15 @@ struct AddFlashCardView: View {
}
private func createFlashcard() {
let flashcard = Flashcard(context: moc)
flashcard.id = UUID()
flashcard.name = self.text
flashcard.desc = self.description
flashcard.deck = selectedDeck
if !edit {
flashcard.nextSpacedRepetitionMilestone = 0
flashcard.lastSeenOn = nil
flashcard.shownCount = 0
flashcard.dateAdded = Date()
flashcard.deck = selectedDeck
}
try? moc.save()
}
@@ -81,6 +83,8 @@ struct AddFlashCardView: View {
#Preview {
@State var isShowing = true
return AddFlashCardView(isShowing: $isShowing)
let flashcard = Flashcard(context: DataController.preview.container.viewContext)
flashcard.id = UUID()
return AddFlashCardView(isShowing: $isShowing, flashcard: flashcard)
.environment(\.managedObjectContext, DataController.preview.container.viewContext)
}

View File

@@ -75,11 +75,17 @@ struct FlashCardListView: View {
}
}
.sheet(isPresented: $addFlashcard, content: {
AddFlashCardView(isShowing: $addFlashcard, selectedDeck: deck)
AddFlashCardView(isShowing: $addFlashcard, selectedDeck: deck, flashcard: createFlashcard())
})
}
}
private func createFlashcard() -> Flashcard {
let flashcard = Flashcard(context:moc)
flashcard.id = UUID()
return flashcard
}
private func refreshFlashcards() {
let request = NSFetchRequest<Flashcard>(entityName: "Flashcard")
request.sortDescriptors = [NSSortDescriptor(key: "favorite", ascending: false), NSSortDescriptor(key: "dateAdded", ascending: false)]

View File

@@ -13,6 +13,7 @@ struct FlashCardView: View {
var flashcard: Flashcard
@Binding var showDescription: Bool
@Environment(\.colorScheme) var colorScheme
@State var editFlashcard: Bool = false
var body: some View {
@@ -48,6 +49,16 @@ struct FlashCardView: View {
.onTapGesture {
self.showDescription = true
}
.sheet(isPresented: $editFlashcard) {
AddFlashCardView(text: flashcard.name ?? "", description: flashcard.desc ?? "", isShowing: $editFlashcard, selectedDeck: flashcard.deck, flashcard: flashcard, edit: true)
}
.toolbar {
Button {
self.editFlashcard = true
} label: {
Text("Edit")
}
}
}
}