✨ (history) add last visited repo method
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
41
src/modules/history/hooks/useVisitRepo.hook.ts
Normal file
41
src/modules/history/hooks/useVisitRepo.hook.ts
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user