From c3345987363ec4d467e617d9614264daf3d8fe00 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sat, 8 Jul 2023 00:24:54 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20(card)=20add=20failed=20repetition?= =?UTF-8?q?=20to=20reset=20to=20level=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/card/components/FlipCardList.vue | 5 ++++- .../card/hooks/useSpacedRepetitionCards.ts | 20 ++++++++++++++++++- src/views/SpacedRepetitionCard.vue | 9 +++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/modules/card/components/FlipCardList.vue b/src/modules/card/components/FlipCardList.vue index 66b3380..f2d9bcd 100644 --- a/src/modules/card/components/FlipCardList.vue +++ b/src/modules/card/components/FlipCardList.vue @@ -6,6 +6,7 @@ import { computed, ref } from 'vue' const props = defineProps<{ cards: Repetition[] }>() const emits = defineEmits<{ success: [id: string] + fail: [id: string] }>() const cards = ref(props.cards) @@ -17,14 +18,16 @@ const cardsToDisplay = computed(() => { }) const goToNextCard = (success: boolean) => { + const id = cardsToDisplay.value[currentIndex.value].repetition._id ?? '' + if (success) { - const id = cardsToDisplay.value[currentIndex.value].repetition._id ?? '' emits('success', id) } else { const failedCard = cards.value.at(currentIndex.value) if (failedCard) { cards.value.push(failedCard) } + emits('fail', id) } currentIndex.value++ diff --git a/src/modules/card/hooks/useSpacedRepetitionCards.ts b/src/modules/card/hooks/useSpacedRepetitionCards.ts index 3271d0d..3f918a9 100644 --- a/src/modules/card/hooks/useSpacedRepetitionCards.ts +++ b/src/modules/card/hooks/useSpacedRepetitionCards.ts @@ -96,6 +96,24 @@ export const useSpacedRepetitionCards = () => { repeatDate: addDays(new Date(), newLevel) }) } + const failRepetition = async (cardId: string) => { + const repetition = await data.get( + cardId + ) + if (!repetition) { + return + } + + const level = 1 + + await data.update({ + ...repetition, + level, + repeatDate: addDays(new Date(), level) + }) + + await execute() + } watch( cards, @@ -108,5 +126,5 @@ export const useSpacedRepetitionCards = () => { watch(cardFiles, () => execute()) - return { cards, successRepetition, isLoading: !isReady } + return { cards, successRepetition, failRepetition, isLoading: !isReady } } diff --git a/src/views/SpacedRepetitionCard.vue b/src/views/SpacedRepetitionCard.vue index e473a54..42bc7b2 100644 --- a/src/views/SpacedRepetitionCard.vue +++ b/src/views/SpacedRepetitionCard.vue @@ -8,7 +8,8 @@ defineProps<{ repo: string }>() -const { cards, isLoading, successRepetition } = useSpacedRepetitionCards() +const { cards, isLoading, successRepetition, failRepetition } = + useSpacedRepetitionCards()