feat: signed releases, release feed, notification (read-only)

This commit is contained in:
fsylvain committed 2026-10-01 15:01:53 +02:00
1 parent a49eec909c
commit 834493a4f5
49 files changed
+4191 -18

No files matched your search

+23 -1
View File
@@ -1,14 +1,17 @@
<script setup lang="ts">
import { computed, onMounted, ref } from 'vue'
import { computed, onMounted, ref, watch } from 'vue'
import { useRouter } from 'vue-router'
import { useToast } from '@nuxt/ui/composables'
import DashboardShell from '@/components/DashboardShell.vue'
import ArticleStatusBadge from '@/components/ArticleStatusBadge.vue'
import NewArticleModal from '@/components/NewArticleModal.vue'
import UpdateBanner from '@/components/UpdateBanner.vue'
import { useArticles, type Article } from '@/composables/useArticles'
import { useSessionStore } from '@/stores/session'
import { useUpdateStore } from '@/stores/update'
import { accountName } from '@/lib/accountName'
import { formatRelativeDate } from '@/lib/relativeDate'
import { displayVersion } from '@/lib/updateFormat'
const SKELETON_DELAY_MS = 150
const RECENT_LIST_SIZE = 5
@@ -18,6 +21,7 @@ type LoadState = 'loading' | 'default' | 'empty' | 'error'
const router = useRouter()
const toast = useToast()
const session = useSessionStore()
const update = useUpdateStore()
const { listArticles } = useArticles()
const loadState = ref<LoadState>('loading')
@@ -111,6 +115,16 @@ function onArticleCreated(article: Article) {
})
}
watch(
() => update.isOwner,
(isOwner) => {
if (isOwner) {
update.load()
}
},
{ immediate: true },
)
onMounted(loadArticles)
</script>
@@ -145,6 +159,14 @@ onMounted(loadArticles)
</UButton>
</div>
<UpdateBanner
v-if="update.bannerVisible && update.status"
state="available"
:version="displayVersion(update.status.latest)"
@go-to-settings="router.push('/settings')"
@dismiss="update.dismissBanner"
/>
<template v-if="(loadState === 'loading' && showSkeleton) || loadState === 'default'">
<div class="grid grid-cols-3 gap-3">
<div