From 6c251f797d448d9db4e2eed2e631e440f3f6e8a4 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sun, 2 Jul 2023 23:25:14 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20(card)=20make=20the=20buttons=20wor?= =?UTF-8?q?k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/data.ts | 25 +++- src/hooks/useMarkdown.hook.ts | 8 +- src/modules/card/components/FlipCard.vue | 42 +++--- .../card/hooks/useSpacedRepetitionCards.ts | 123 +++++++++++------- src/views/SpacedRepetitionCard.vue | 59 ++++----- 5 files changed, 148 insertions(+), 109 deletions(-) diff --git a/src/data/data.ts b/src/data/data.ts index d354d1a..831ec69 100644 --- a/src/data/data.ts +++ b/src/data/data.ts @@ -1,8 +1,8 @@ +import { nanoid } from 'nanoid' +import indexedDb from 'pouchdb-adapter-indexeddb' +import PouchDb from 'pouchdb-browser' import { DataType } from './DataType.enum' import { Model } from './models/Model' -import PouchDb from 'pouchdb-browser' -import indexedDb from 'pouchdb-adapter-indexeddb' -import { nanoid } from 'nanoid' PouchDb.plugin(indexedDb) @@ -38,7 +38,9 @@ class Data { } } - public async update
(model: Model
): Promise { + public async update
>( + model: T + ): Promise { try { if (model._id) { const oldModel = await this.get(model._id) @@ -82,6 +84,21 @@ class Data { } } + public async getOrCreate
>( + id: string, + initialValue: T + ): Promise { + const element = await this.get(id) + + if (element) { + return element + } + + await data.add
({ ...initialValue, _id: id }) + + return this.getOrCreate(id, initialValue) + } + public async getAll
>({ prefix, includeDocs = true, diff --git a/src/hooks/useMarkdown.hook.ts b/src/hooks/useMarkdown.hook.ts index c79bb26..a4cd7b7 100644 --- a/src/hooks/useMarkdown.hook.ts +++ b/src/hooks/useMarkdown.hook.ts @@ -1,11 +1,11 @@ -import MarkdownIt from 'markdown-it' +import { decodeBase64ToUTF8 } from '@/utils/decodeBase64ToUTF8' +import { html5Media } from '@/utils/markdown/markdown-html5-media' import markdownItClass from '@toycode/markdown-it-class' +import MarkdownIt from 'markdown-it' import blockEmbedPlugin from 'markdown-it-block-embed' import markdownItCheckbox from 'markdown-it-checkbox' -import markdownItSvgCodeCopy from 'markdown-it-svg-code-copy' import markdownItFootnote from 'markdown-it-footnote' -import { html5Media } from '@/utils/markdown/markdown-html5-media' -import { decodeBase64ToUTF8 } from '@/utils/decodeBase64ToUTF8' +import markdownItSvgCodeCopy from 'markdown-it-svg-code-copy' const md = new MarkdownIt({ typographer: true, diff --git a/src/modules/card/components/FlipCard.vue b/src/modules/card/components/FlipCard.vue index 2392b77..985671e 100644 --- a/src/modules/card/components/FlipCard.vue +++ b/src/modules/card/components/FlipCard.vue @@ -1,3 +1,18 @@ + + - -