Now files from repo are cached to be quickly retrieved even offline
This commit is contained in:
@@ -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',
|
||||||
|
|||||||
9
src/modules/repo/models/SavedRepo.ts
Normal file
9
src/modules/repo/models/SavedRepo.ts
Normal 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[]
|
||||||
|
}
|
||||||
@@ -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 = ''
|
||||||
|
|||||||
Reference in New Issue
Block a user