Now files from repo are cached to be quickly retrieved even offline

This commit is contained in:
Julien Calixte
2024-07-19 20:05:42 +02:00
parent 277db96fcd
commit 15296b8832
3 changed files with 37 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
export enum DataType { export enum DataType {
GithubAccessToken = 'GithubAccessToken', GithubAccessToken = 'GithubAccessToken',
FavoriteRepo = 'FavoriteRepo', FavoriteRepo = 'FavoriteRepo',
SavedRepo = 'SavedRepo',
Note = 'Note', Note = 'Note',
BacklinkNote = 'BacklinkNote', BacklinkNote = 'BacklinkNote',
RepetitionCard = 'RepetitionCard', RepetitionCard = 'RepetitionCard',

View File

@@ -0,0 +1,9 @@
import { DataType } from '@/data/DataType.enum'
import { Model } from '@/data/models/Model'
import { RepoFile } from '@/modules/repo/interfaces/RepoFile'
export interface SavedRepo extends Model<DataType.SavedRepo> {
user: string
repo: string
files: RepoFile[]
}

View File

@@ -4,6 +4,7 @@ import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { RepoFile } from '@/modules/repo/interfaces/RepoFile' import { RepoFile } from '@/modules/repo/interfaces/RepoFile'
import { UserSettings } from '@/modules/repo/interfaces/UserSettings' import { UserSettings } from '@/modules/repo/interfaces/UserSettings'
import { SavedRepo } from '@/modules/repo/models/SavedRepo'
import { import {
getCachedMainReadme, getCachedMainReadme,
getFiles, getFiles,
@@ -39,6 +40,11 @@ export const useUserRepoStore = defineStore({
this.user = user this.user = user
this.repo = repo this.repo = repo
const savedRepoId = data.generateId(DataType.SavedRepo, `${user}-${repo}`)
this.files =
(await data.get<DataType.SavedRepo, SavedRepo>(savedRepoId))?.files ??
[]
try { try {
await refreshToken() await refreshToken()
} catch (error) { } catch (error) {
@@ -56,7 +62,14 @@ export const useUserRepoStore = defineStore({
} }
getFiles(user, repo) getFiles(user, repo)
.then((files) => { .then(async (files) => {
data.update<DataType.SavedRepo, SavedRepo>({
_id: savedRepoId,
$type: DataType.SavedRepo,
repo,
user,
files
})
this.files = files this.files = files
return getUserSettingsContent(user, repo, files) return getUserSettingsContent(user, repo, files)
}) })
@@ -87,7 +100,19 @@ export const useUserRepoStore = defineStore({
}) })
}, },
addFile(file: RepoFile) { addFile(file: RepoFile) {
this.files = [...this.files.filter((f) => f.sha !== file.sha), file] const savedRepoId = data.generateId(
DataType.SavedRepo,
`${this.user}-${this.repo}`
)
const newFiles = [...this.files.filter((f) => f.sha !== file.sha), file]
data.update<DataType.SavedRepo, SavedRepo>({
_id: savedRepoId,
$type: DataType.SavedRepo,
repo: this.repo,
user: this.user,
files: newFiles
})
this.files = newFiles
}, },
resetUserRepo() { resetUserRepo() {
this.user = '' this.user = ''