Got rid of TODOs

This commit is contained in:
2024-04-10 13:57:19 +02:00
parent 2727467fd9
commit 823d28637a
7 changed files with 27 additions and 73 deletions

View File

@@ -26,56 +26,6 @@ class DataController: ObservableObject {
}
}
// public func addFlashcard(name: String, description: String) {
public func addFlashcard(name: String, description: String) {
let flashcard = Flashcard(context: viewContext)
flashcard.id = UUID()
flashcard.name = name
flashcard.desc = description
flashcard.shown = false
flashcard.nextSpacedRepetitionMilestone = 0
flashcard.lastSeenOn = nil
flashcard.shownCount = 0
flashcard.dateAdded = Date()
try? viewContext.save()
}
// TODO: Figure out if this does anything?
public func setNextSpacedRepetitionMilestone(flashcard: Flashcard) {
let current = SpacedRepetitionMilestoneEnum.allCasesSorted.firstIndex(of: flashcard.getSpacedRepetitionMilestone()) ?? SpacedRepetitionMilestoneEnum.allCases.count
let predicate = NSPredicate(format: "id == %@", flashcard.id! as CVarArg)
let flashcards = self.getAllFlashcards(predicate: predicate)
if !flashcards.isEmpty {
if current + 1 < SpacedRepetitionMilestoneEnum.allCases.count {
flashcards[0].nextSpacedRepetitionMilestone = SpacedRepetitionMilestoneEnum.allCasesSorted[current + 1].rawValue
}
}
}
public func setSpacedRepetitionMilestone(flashcardId: UUID, milestone: SpacedRepetitionMilestoneEnum?) {
let predicate = NSPredicate(format: "id == %@", flashcardId as CVarArg)
let flashcards = self.getAllFlashcards(predicate: predicate)
if !flashcards.isEmpty {
if milestone != nil {
flashcards[0].nextSpacedRepetitionMilestone = milestone!.rawValue
} else {
flashcards[0].nextSpacedRepetitionMilestone = 0
}
if !flashcards[0].shown {
flashcards[0].shown = true
}
flashcards[0].lastSeenOn = Date()
}
}
public func flashcardShown(flashcardId: UUID) {
let predicate = NSPredicate(format: "id == %@", flashcardId as CVarArg)
let flashcards = self.getAllFlashcards(predicate: predicate)
if !flashcards.isEmpty {
flashcards[0].shownCount += 1
try? viewContext.save()
}
}
public func getAllFlashcards(predicate: NSPredicate? = nil) -> [Flashcard]{
let request = NSFetchRequest<Flashcard>(entityName: "Flashcard")

View File

@@ -1,33 +0,0 @@
//
// Flashcard+CoreDataProperties.swift
// WordAX
//
// Created by Oliver Hnát on 09.04.2024.
//
//
import Foundation
import CoreData
extension Flashcard {
// TODO: Get rid of shown and instead just use lastSeenOn == nil
@nonobjc public class func fetchRequest() -> NSFetchRequest<Flashcard> {
return NSFetchRequest<Flashcard>(entityName: "Flashcard")
}
@NSManaged public var name: String?
@NSManaged public var desc: String?
@NSManaged public var id: UUID?
@NSManaged public var shown: Bool
@NSManaged public var nextSpacedRepetitionMilestone: Int64
@NSManaged public var lastSeenOn: Date?
@NSManaged public var dateAdded: Date?
@NSManaged public var shownCount: Int64
}
extension Flashcard : Identifiable {
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22757" systemVersion="23D60" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
<entity name="Flashcard" representedClassName="Flashcard" syncable="YES">
<attribute name="dateAdded" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="desc" optional="YES" attributeType="String"/>
<attribute name="id" attributeType="UUID" usesScalarValueType="NO"/>
<attribute name="lastSeenOn" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="name" attributeType="String"/>
<attribute name="nextSpacedRepetitionMilestone" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="shownCount" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
</entity>
</model>

View File

@@ -35,7 +35,6 @@ struct AddFlashCard: View {
flashcard.id = UUID()
flashcard.name = self.text
flashcard.desc = self.description
flashcard.shown = false
flashcard.nextSpacedRepetitionMilestone = 0
flashcard.lastSeenOn = nil
flashcard.shownCount = 0

View File

@@ -20,7 +20,7 @@ struct FlashCardView: View {
.font(.title)
.bold()
VStack {
if flashcard.shown && flashcard.lastSeenOn != nil {
if flashcard.lastSeenOn != nil {
Text("Last seen: " + model.getDateFormatter().string(from: flashcard.lastSeenOn!))
.font(.subheadline)
}

View File

@@ -30,12 +30,6 @@ class WordAXModelView: ObservableObject {
public func getDateFormatter() -> DateFormatter {
self.settings.dateFormatter
}
public func ankiButtonClicked(flashcardId: UUID, milestone: Flashcard.SpacedRepetitionMilestoneEnum?, moc: DataController) {
moc.setSpacedRepetitionMilestone(flashcardId: flashcardId, milestone: milestone)
moc.flashcardShown(flashcardId: flashcardId)
}
}