save editedSha in cached note to remember even after navigations
This commit is contained in:
@@ -41,11 +41,17 @@ const user = computed(() => props.user)
|
||||
const repo = computed(() => props.repo)
|
||||
const sha = computed(() => props.sha)
|
||||
const index = computed(() => props.index)
|
||||
const editedSha = ref(sha.value)
|
||||
|
||||
const { scrollToFocusedNote } = useRouteQueryStackedNotes()
|
||||
|
||||
const { path, content, rawContent, getRawContent, saveCacheNote } = useFile(sha)
|
||||
const {
|
||||
path,
|
||||
content,
|
||||
rawContent,
|
||||
getRawContent,
|
||||
saveCacheNote,
|
||||
getEditedSha
|
||||
} = useFile(sha)
|
||||
const initialRawContent = ref<string | null>(null)
|
||||
const className = computed(() => `stacked-note-${props.index}`)
|
||||
const { listenToClick } = useLinks(className.value, sha)
|
||||
@@ -83,18 +89,19 @@ watch([content, mode], () => {
|
||||
|
||||
watch(mode, async (newMode) => {
|
||||
if (newMode === 'read' && rawContent.value !== initialRawContent.value) {
|
||||
const editedSha = (await getEditedSha()) ?? sha.value
|
||||
|
||||
const newSha = await updateFile({
|
||||
content: rawContent.value,
|
||||
path: path.value,
|
||||
sha: editedSha.value
|
||||
sha: editedSha
|
||||
})
|
||||
|
||||
if (!newSha) {
|
||||
return
|
||||
}
|
||||
|
||||
editedSha.value = newSha
|
||||
await saveCacheNote(encodeUTF8ToBase64(rawContent.value))
|
||||
await saveCacheNote(encodeUTF8ToBase64(rawContent.value), newSha)
|
||||
initialRawContent.value = rawContent.value
|
||||
}
|
||||
})
|
||||
|
||||
@@ -26,6 +26,16 @@ export const useFile = (sha: Ref<string> | string, retrieveContent = true) => {
|
||||
rawContent.value ? renderFromUTF8(rawContent.value) : ''
|
||||
)
|
||||
|
||||
const getEditedSha = async () => {
|
||||
const note = await getCachedNote()
|
||||
|
||||
if (!note) {
|
||||
return null
|
||||
}
|
||||
|
||||
return note.editedSha ?? null
|
||||
}
|
||||
|
||||
const getCachedFileContent = async (): Promise<string | null> => {
|
||||
const cachedNote = await getCachedNote()
|
||||
|
||||
@@ -86,6 +96,7 @@ export const useFile = (sha: Ref<string> | string, retrieveContent = true) => {
|
||||
getRawContent,
|
||||
getContent,
|
||||
getCachedFileContent,
|
||||
getEditedSha,
|
||||
fromCache,
|
||||
saveCacheNote
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ export const useGitHubContent = ({
|
||||
|
||||
return response?.data.content?.sha ?? null
|
||||
} catch (error) {
|
||||
errorMessage('File could not be saved')
|
||||
errorMessage('Note could not be saved')
|
||||
}
|
||||
|
||||
return null
|
||||
|
||||
5
src/modules/note/cache/prepareNoteCache.ts
vendored
5
src/modules/note/cache/prepareNoteCache.ts
vendored
@@ -6,11 +6,12 @@ export const prepareNoteCache = (sha: string) => {
|
||||
const noteId = data.generateId(DataType.Note, sha)
|
||||
const getCachedNote = async () => data.get<DataType.Note, Note>(noteId)
|
||||
|
||||
const saveCacheNote = async (content: string) => {
|
||||
const saveCacheNote = async (content: string, editedSha?: string) => {
|
||||
const newNote: Note = {
|
||||
_id: noteId,
|
||||
$type: DataType.Note,
|
||||
content
|
||||
content,
|
||||
editedSha
|
||||
}
|
||||
|
||||
await data.update(newNote)
|
||||
|
||||
@@ -3,4 +3,5 @@ import { Model } from '@/data/models/Model'
|
||||
|
||||
export interface Note extends Model<DataType.Note> {
|
||||
content: string
|
||||
editedSha?: string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user