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