diff --git a/src/hooks/useFile.hook.ts b/src/hooks/useFile.hook.ts index c1ef97a..3299bd7 100644 --- a/src/hooks/useFile.hook.ts +++ b/src/hooks/useFile.hook.ts @@ -2,7 +2,7 @@ import { computed, Ref, ref, toValue } from 'vue' import { useMarkdown } from '@/hooks/useMarkdown.hook' import { prepareNoteCache } from '@/modules/note/cache/prepareNoteCache' -import { getFileContent } from '@/modules/repo/services/repo' +import { queryFileContent } from '@/modules/repo/services/repo' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' export const useFile = (sha: Ref | string, retrieveContent = true) => { @@ -48,7 +48,7 @@ export const useFile = (sha: Ref | string, retrieveContent = true) => { return cachedNote.content } - const contentFile = await getFileContent( + const contentFile = await queryFileContent( store.user, store.repo, toValue(sha) diff --git a/src/modules/repo/services/repo.ts b/src/modules/repo/services/repo.ts index 2b2773d..87fb766 100644 --- a/src/modules/repo/services/repo.ts +++ b/src/modules/repo/services/repo.ts @@ -98,7 +98,7 @@ export const getUserSettingsContent = async ( return null } - const content = await getFileContent(user, repo, configFile.sha) + const content = await queryFileContent(user, repo, configFile.sha) if (!content) { return null @@ -107,7 +107,7 @@ export const getUserSettingsContent = async ( return JSON.parse(atob(content)) as UserSettings } -export const getFileContent = async ( +export const queryFileContent = async ( user: string, repo: string, sha: string diff --git a/src/modules/repo/store/userRepo.store.ts b/src/modules/repo/store/userRepo.store.ts index db9e8f2..407b0d4 100644 --- a/src/modules/repo/store/userRepo.store.ts +++ b/src/modules/repo/store/userRepo.store.ts @@ -2,6 +2,7 @@ import { defineStore } from 'pinia' import { data } from '@/data/data' import { DataType } from '@/data/DataType.enum' +import { prepareNoteCache } from '@/modules/note/cache/prepareNoteCache' import { RepoFile } from '@/modules/repo/interfaces/RepoFile' import { UserSettings } from '@/modules/repo/interfaces/UserSettings' import { SavedRepo } from '@/modules/repo/models/SavedRepo' @@ -9,7 +10,8 @@ import { getCachedMainReadme, getFiles, getMainReadme, - getUserSettingsContent + getUserSettingsContent, + queryFileContent } from '@/modules/repo/services/repo' import { refreshToken } from '@/modules/user/service/signIn' @@ -114,6 +116,42 @@ export const useUserRepoStore = defineStore({ this.files = [] this.readme = null this.userSettings = undefined + }, + async cacheAllFiles() { + const isInitialized = this.user && this.repo && this.files.length > 0 + + if (!isInitialized) { + return + } + + for (const file of this.files) { + if (!file.sha) { + continue + } + + const { getCachedNote, saveCacheNote } = prepareNoteCache( + file.sha, + file.path + ) + + const isNoteCached = (await getCachedNote()) !== null + + if (isNoteCached) { + continue + } + + const contentFile = await queryFileContent( + this.user, + this.repo, + file.sha + ) + + if (!contentFile) { + return null + } + + saveCacheNote(contentFile) + } } } })