(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,18 +1,29 @@
<template> <template>
<ul v-if="lastVisitedRepos.length" class="last-visited"> <section v-if="lastVisitedRepos.length" class="last-visited">
<li <h4>Last visited repos</h4>
v-for="lastVisitedRepo in lastVisitedRepos" <ul>
:key="`${lastVisitedRepo.user}-${lastVisitedRepo.repo}`" <li
> v-for="lastVisitedRepo in lastVisitedRepos"
<router-link :key="`${lastVisitedRepo.user}-${lastVisitedRepo.repo}`"
:to="{
name: `Home`,
params: { user: lastVisitedRepo.user, repo: lastVisitedRepo.repo }
}"
>{{ lastVisitedRepo.user }}/{{ lastVisitedRepo.repo }}</router-link
> >
</li> <div>
</ul> <router-link
:to="{
name: `Home`,
params: { user: lastVisitedRepo.user, repo: lastVisitedRepo.repo }
}"
>{{ lastVisitedRepo.user }}/{{ lastVisitedRepo.repo }}</router-link
>
<button
class="button is-link is-inverted is-small"
@click="removeRepo(lastVisitedRepo)"
>
</button>
</div>
</li>
</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,17 +4,39 @@ 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.generateId(DataType.History, 'history') data.get<DataType.History, History>(
), data.generateId(DataType.History, 'history')
),
null null
) )
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
} }
} }