Add edit function to flashcard
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.nextSpacedRepetitionMilestone = 0
|
||||
flashcard.lastSeenOn = nil
|
||||
flashcard.shownCount = 0
|
||||
flashcard.dateAdded = Date()
|
||||
flashcard.deck = selectedDeck
|
||||
if !edit {
|
||||
flashcard.nextSpacedRepetitionMilestone = 0
|
||||
flashcard.lastSeenOn = nil
|
||||
flashcard.shownCount = 0
|
||||
flashcard.dateAdded = Date()
|
||||
}
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user