feat(share) : lien Documents conditionné à l'activation du partage
This commit is contained in:
@@ -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 }
|
||||||
|
}
|
||||||
@@ -100,6 +100,14 @@
|
|||||||
:collapsed="sidebarIsCollapsed"
|
:collapsed="sidebarIsCollapsed"
|
||||||
@click="ui.closeMobileSidebar()"
|
@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">
|
<div v-if="isMailVisible" class="relative">
|
||||||
<SidebarLink
|
<SidebarLink
|
||||||
to="/mail"
|
to="/mail"
|
||||||
@@ -222,6 +230,9 @@ const isMailVisible = computed(() => {
|
|||||||
return roles.includes('ROLE_USER') || roles.includes('ROLE_ADMIN')
|
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)
|
// On mobile, sidebar is always expanded (not collapsed icon mode)
|
||||||
const sidebarIsCollapsed = computed(() => {
|
const sidebarIsCollapsed = computed(() => {
|
||||||
if (ui.sidebarOpen) return false
|
if (ui.sidebarOpen) return false
|
||||||
@@ -267,13 +278,17 @@ onMounted(() => {
|
|||||||
if (isMailVisible.value) {
|
if (isMailVisible.value) {
|
||||||
mailStore.startPolling()
|
mailStore.startPolling()
|
||||||
}
|
}
|
||||||
|
ensureShareStatus()
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(() => auth.user, (user) => {
|
watch(() => auth.user, (user) => {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
mailStore.stopPolling()
|
mailStore.stopPolling()
|
||||||
} else if (isMailVisible.value) {
|
} else {
|
||||||
mailStore.startPolling()
|
if (isMailVisible.value) {
|
||||||
|
mailStore.startPolling()
|
||||||
|
}
|
||||||
|
ensureShareStatus()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user