diff --git a/src/data/DataType.enum.ts b/src/data/DataType.enum.ts
index a3e4f6c..4f4af0d 100644
--- a/src/data/DataType.enum.ts
+++ b/src/data/DataType.enum.ts
@@ -2,5 +2,6 @@ export enum DataType {
GithubAccessToken = 'GithubAccessToken',
FavoriteRepo = 'FavoriteRepo',
Note = 'Note',
- BacklinkNote = 'BacklinkNote'
+ BacklinkNote = 'BacklinkNote',
+ RepetitionCard = 'RepetitionCard'
}
diff --git a/src/modules/card/components/FlipCard.vue b/src/modules/card/components/FlipCard.vue
index 1c43d7a..1de1167 100644
--- a/src/modules/card/components/FlipCard.vue
+++ b/src/modules/card/components/FlipCard.vue
@@ -8,8 +8,8 @@
@@ -25,15 +25,15 @@ export default defineComponent({
props: {
card: { type: Object as PropType, required: true }
},
- setup() {
+ setup(_, context) {
const flipped = ref(false)
-
const flip = () => (flipped.value = !flipped.value)
- const action = () => {
- console.log('action')
- }
- return { flip, flipped, action }
+ const success = () => context.emit('success')
+
+ const fail = () => context.emit('fail')
+
+ return { flip, flipped, success, fail }
}
})
diff --git a/src/modules/card/hooks/useSpacedRepetitionCards.ts b/src/modules/card/hooks/useSpacedRepetitionCards.ts
index 0775b65..e5fc42d 100644
--- a/src/modules/card/hooks/useSpacedRepetitionCards.ts
+++ b/src/modules/card/hooks/useSpacedRepetitionCards.ts
@@ -1,11 +1,20 @@
+import { data } from '@/data/data'
+import { DataType } from '@/data/DataType.enum'
import { useFile } from '@/hooks/useFile.hook'
import { useLinks } from '@/hooks/useLinks.hook'
import { useMarkdown } from '@/hooks/useMarkdown.hook'
import { Card } from '@/modules/card/models/Card'
+import { RepetitionCard } from '@/modules/card/models/RepetitionCard'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { asyncComputed } from '@vueuse/core'
+import { isAfter, isBefore } from 'date-fns'
import { computed, nextTick, watch } from 'vue'
+interface Repetition {
+ repetition: RepetitionCard
+ card: Card
+}
+
export const useSpacedRepetitionCards = () => {
const { renderString } = useMarkdown()
const store = useUserRepoStore()
@@ -18,13 +27,39 @@ export const useSpacedRepetitionCards = () => {
)
const cards = asyncComputed(async () => {
- const cards: Card[] = []
+ const cards: Repetition[] = []
for (const cardFile of cardFiles.value) {
if (!cardFile.sha) {
continue
}
+ const repetitionId = data.generateId(
+ DataType.RepetitionCard,
+ cardFile.sha
+ )
+
+ let repetition = await data.get(
+ repetitionId
+ )
+
+ if (!repetition) {
+ const newRepetition: RepetitionCard = {
+ _id: repetitionId,
+ $type: DataType.RepetitionCard,
+ level: 1,
+ repeatDate: new Date()
+ }
+ await data.add(newRepetition)
+ repetition = (await data.get(
+ repetitionId
+ )) as RepetitionCard
+ }
+
+ if (isAfter(new Date(repetition.repeatDate), new Date())) {
+ continue
+ }
+
const { getRawContent } = useFile(cardFile.sha, false)
const content = await getRawContent()
@@ -32,9 +67,12 @@ export const useSpacedRepetitionCards = () => {
decodeURIComponent(escape(atob(content ?? '')))?.split('___') ?? []
cards.push({
- front: renderString(front),
- back: renderString(back),
- references: renderString(references)
+ repetition,
+ card: {
+ front: renderString(front),
+ back: renderString(back),
+ references: renderString(references)
+ }
})
}
diff --git a/src/modules/card/models/RepetitionCard.ts b/src/modules/card/models/RepetitionCard.ts
new file mode 100644
index 0000000..1dd49f5
--- /dev/null
+++ b/src/modules/card/models/RepetitionCard.ts
@@ -0,0 +1,7 @@
+import { DataType } from '@/data/DataType.enum'
+import { Model } from '@/data/models/Model'
+
+export interface RepetitionCard extends Model {
+ level: number
+ repeatDate: Date
+}
diff --git a/src/views/SpacedRepetitionCard.vue b/src/views/SpacedRepetitionCard.vue
index c022944..7284524 100644
--- a/src/views/SpacedRepetitionCard.vue
+++ b/src/views/SpacedRepetitionCard.vue
@@ -6,7 +6,10 @@
:repo="repo"
:with-content="false"
>
-
+
+ Level: {{ firstCard.repetition.level }}
+
+
@@ -31,8 +34,8 @@ export default defineComponent({
setup() {
const { cards } = useSpacedRepetitionCards()
const firstCard = computed(() => {
- const [firstCard] = cards.value
- return firstCard
+ const [repetitionCard] = cards.value
+ return repetitionCard
})
return {