(history) add last visited repo method

This commit is contained in:
Julien Calixte
2021-12-12 10:18:10 +01:00
parent 4a4597afbc
commit e90afc56f8
4 changed files with 49 additions and 3 deletions

View File

@@ -54,7 +54,8 @@ import {
watch, watch,
nextTick, nextTick,
toRefs, toRefs,
onUnmounted onUnmounted,
onMounted
} from 'vue' } from 'vue'
import HeaderNote from '@/components/HeaderNote.vue' import HeaderNote from '@/components/HeaderNote.vue'
import { useNote } from '@/hooks/useNote.hook' import { useNote } from '@/hooks/useNote.hook'
@@ -62,6 +63,7 @@ import { useMarkdown } from '@/hooks/useMarkdown.hook'
import { useLinks } from '@/hooks/useLinks.hook' import { useLinks } from '@/hooks/useLinks.hook'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { useUserSettings } from '@/modules/user/hooks/useUserSettings.hook' import { useUserSettings } from '@/modules/user/hooks/useUserSettings.hook'
import { useVisitRepo } from '@/modules/history/hooks/useVisitRepo.hook'
const StackedNote = defineAsyncComponent( const StackedNote = defineAsyncComponent(
() => import('@/components/StackedNote.vue') () => import('@/components/StackedNote.vue')
@@ -85,6 +87,7 @@ export default defineComponent({
const refProps = toRefs(props) const refProps = toRefs(props)
const store = useUserRepoStore() const store = useUserRepoStore()
useUserSettings() useUserSettings()
const { visitRepo } = useVisitRepo({ user: props.user, repo: props.repo })
const { renderString } = useMarkdown(props.repo) const { renderString } = useMarkdown(props.repo)
const { listenToClick } = useLinks('note-display') const { listenToClick } = useLinks('note-display')
const { stackedNotes, resetStackedNotes } = useQueryStackedNotes() const { stackedNotes, resetStackedNotes } = useQueryStackedNotes()
@@ -120,6 +123,8 @@ export default defineComponent({
{ immediate: true } { immediate: true }
) )
onMounted(() => visitRepo())
onUnmounted(() => { onUnmounted(() => {
store.resetFiles() store.resetFiles()
resetStackedNotes() resetStackedNotes()

View File

@@ -7,7 +7,7 @@
<router-link <router-link
:to="{ :to="{
name: `Home`, name: `Home`,
props: { user: lastVisitedRepo.user, repo: lastVisitedRepo.repo } params: { user: lastVisitedRepo.user, repo: lastVisitedRepo.repo }
}" }"
>{{ lastVisitedRepo.user }}/{{ lastVisitedRepo.repo }}</router-link >{{ lastVisitedRepo.user }}/{{ lastVisitedRepo.repo }}</router-link
> >

View File

@@ -7,7 +7,7 @@ import { computed } from 'vue'
export const useLastVisitedRepos = () => { export const useLastVisitedRepos = () => {
const history = useAsyncState( const history = useAsyncState(
data.get<DataType.History, History>( data.get<DataType.History, History>(
data.generateId(DataType.BacklinkNote, 'history') data.generateId(DataType.History, 'history')
), ),
null null
) )

View File

@@ -0,0 +1,41 @@
import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum'
import { History } from '@/data/models/History'
const HISTORY_ID = data.generateId(DataType.History, 'history')
const MAX_REPO_HISTORY = 10
export const useVisitRepo = (newRepo: { user: string; repo: string }) => {
const visitRepo = async () => {
const history = await data.get<DataType.History, History>(HISTORY_ID)
if (!history) {
const newHistory: History = {
_id: HISTORY_ID,
$type: DataType.History,
repos: [newRepo]
}
await data.add<DataType.History>(newHistory)
return
}
const clearedRepos = history.repos.filter(
(repo) => repo.user !== newRepo.user && repo.repo !== newRepo.repo
)
const historyRepos = [newRepo, ...clearedRepos].slice(
0,
MAX_REPO_HISTORY - 1
)
const newHistory: History = {
...history,
repos: historyRepos
}
await data.update(newHistory)
}
return {
visitRepo
}
}