(history) remove repo from history

This commit is contained in:
Julien Calixte
2021-12-12 10:29:44 +01:00
parent e90afc56f8
commit f8b78e85e4
2 changed files with 59 additions and 19 deletions

View File

@@ -1,9 +1,12 @@
<template> <template>
<ul v-if="lastVisitedRepos.length" class="last-visited"> <section v-if="lastVisitedRepos.length" class="last-visited">
<h4>Last visited repos</h4>
<ul>
<li <li
v-for="lastVisitedRepo in lastVisitedRepos" v-for="lastVisitedRepo in lastVisitedRepos"
:key="`${lastVisitedRepo.user}-${lastVisitedRepo.repo}`" :key="`${lastVisitedRepo.user}-${lastVisitedRepo.repo}`"
> >
<div>
<router-link <router-link
:to="{ :to="{
name: `Home`, name: `Home`,
@@ -11,8 +14,16 @@
}" }"
>{{ lastVisitedRepo.user }}/{{ lastVisitedRepo.repo }}</router-link >{{ lastVisitedRepo.user }}/{{ lastVisitedRepo.repo }}</router-link
> >
<button
class="button is-link is-inverted is-small"
@click="removeRepo(lastVisitedRepo)"
>
</button>
</div>
</li> </li>
</ul> </ul>
</section>
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -22,10 +33,11 @@ import { defineComponent } from 'vue'
export default defineComponent({ export default defineComponent({
name: 'LastVisited', name: 'LastVisited',
setup() { setup() {
const { lastVisitedRepos } = useLastVisitedRepos() const { lastVisitedRepos, removeRepo } = useLastVisitedRepos()
return { return {
lastVisitedRepos lastVisitedRepos,
removeRepo
} }
} }
}) })
@@ -33,5 +45,11 @@ export default defineComponent({
<style scoped lang="scss"> <style scoped lang="scss">
.last-visited { .last-visited {
li {
div {
display: flex;
align-items: center;
}
}
} }
</style> </style>

View File

@@ -4,8 +4,11 @@ import { History } from '@/data/models/History'
import { useAsyncState } from '@vueuse/core' import { useAsyncState } from '@vueuse/core'
import { computed } from 'vue' import { computed } from 'vue'
const HISTORY_ID = data.generateId(DataType.History, 'history')
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.History, 'history') data.generateId(DataType.History, 'history')
), ),
@@ -14,7 +17,26 @@ export const useLastVisitedRepos = () => {
const lastVisitedRepos = computed(() => history.state.value?.repos ?? []) const lastVisitedRepos = computed(() => history.state.value?.repos ?? [])
const removeRepo = async (params: { user: string; repo: string }) => {
const storedHistory = await data.get<DataType.History, History>(HISTORY_ID)
if (!storedHistory) {
return
}
const clearedRepo = storedHistory.repos.filter(
(repo) => repo.user !== params.user && repo.repo !== params.repo
)
const newHistory: History = {
...storedHistory,
repos: clearedRepo
}
await data.update(newHistory)
history.execute()
}
return { return {
lastVisitedRepos lastVisitedRepos,
removeRepo
} }
} }