feat(share) : lien Documents conditionné à l'activation du partage

This commit is contained in:
Matthieu
2026-06-03 17:23:44 +02:00
parent 947d95b1f7
commit c125566efc
2 changed files with 40 additions and 2 deletions
+23
View File
@@ -0,0 +1,23 @@
import { useShareService } from '~/services/share'
export function useShareStatus() {
const enabled = useState<boolean | null>('share-enabled', () => null)
const { getStatus } = useShareService()
async function refresh() {
try {
const status = await getStatus()
enabled.value = status.enabled
} catch {
enabled.value = false
}
}
async function ensureLoaded() {
if (enabled.value === null) {
await refresh()
}
}
return { enabled, refresh, ensureLoaded }
}
+17 -2
View File
@@ -100,6 +100,14 @@
:collapsed="sidebarIsCollapsed"
@click="ui.closeMobileSidebar()"
/>
<SidebarLink
v-if="isDocumentsVisible"
to="/documents"
icon="mdi:folder-network-outline"
:label="$t('sharedFiles.sidebar.title')"
:collapsed="sidebarIsCollapsed"
@click="ui.closeMobileSidebar()"
/>
<div v-if="isMailVisible" class="relative">
<SidebarLink
to="/mail"
@@ -222,6 +230,9 @@ const isMailVisible = computed(() => {
return roles.includes('ROLE_USER') || roles.includes('ROLE_ADMIN')
})
const { enabled: shareEnabled, ensureLoaded: ensureShareStatus } = useShareStatus()
const isDocumentsVisible = computed(() => shareEnabled.value === true)
// On mobile, sidebar is always expanded (not collapsed icon mode)
const sidebarIsCollapsed = computed(() => {
if (ui.sidebarOpen) return false
@@ -267,13 +278,17 @@ onMounted(() => {
if (isMailVisible.value) {
mailStore.startPolling()
}
ensureShareStatus()
})
watch(() => auth.user, (user) => {
if (!user) {
mailStore.stopPolling()
} else if (isMailVisible.value) {
mailStore.startPolling()
} else {
if (isMailVisible.value) {
mailStore.startPolling()
}
ensureShareStatus()
}
})