feat(preview): disable previews when storage is unavailable
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
+14
-8
@@ -1,7 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted, watch, nextTick, defineAsyncComponent } from 'vue'
|
||||
import { useDisplay } from 'vuetify'
|
||||
import { useModuleStore, useIntegrationStore } from '@KTXC'
|
||||
import { useModuleStore, useIntegrationStore, usePreviewStore } from '@KTXC'
|
||||
import { useDocumentManager, useDocumentSelection, useFileUpload, useFileEditor } from '@/composables'
|
||||
import type { ViewMode, SortField, SortOrder, BreadcrumbItem } from '@/types'
|
||||
import { CollectionObject } from '@DocumentsManager/models/collection'
|
||||
@@ -31,6 +31,8 @@ const isMobile = computed(() => display.mdAndDown.value)
|
||||
|
||||
const moduleStore = useModuleStore()
|
||||
const integrationStore = useIntegrationStore()
|
||||
const previewStore = usePreviewStore()
|
||||
const previewsAvailable = computed(() => previewStore.availability.storage)
|
||||
const isFileManagerAvailable = computed(() => {
|
||||
return moduleStore.has('documents_manager') || moduleStore.has('DocumentsManager')
|
||||
})
|
||||
@@ -128,7 +130,10 @@ function entityToViewerItem(entity: EntityObject): ViewerItem {
|
||||
}
|
||||
}
|
||||
|
||||
function resolveViewerSource(item: ViewerItem): string {
|
||||
function resolveViewerSource(item: ViewerItem): string | Promise<string> {
|
||||
if (!previewsAvailable.value) {
|
||||
return Promise.reject(new Error('Preview storage is unavailable'))
|
||||
}
|
||||
return documentManager.getEntityPreviewUrl(
|
||||
item.id,
|
||||
(item.meta?.collection as string | null) ?? null,
|
||||
@@ -154,6 +159,7 @@ function resolveThumbnailSource(item: ViewerItem): string {
|
||||
|
||||
// Preview shown in the info panel sidebar for the current single selection
|
||||
const infoPanelPreviewUrl = computed<string | null>(() => {
|
||||
if (!previewsAvailable.value) return null
|
||||
const items = selection.selectedNodeArray.value
|
||||
if (items.length !== 1) return null
|
||||
const item = items[0]
|
||||
@@ -815,8 +821,8 @@ onMounted(async () => {
|
||||
:collections="sortedItems.collections"
|
||||
:entities="sortedItems.entities"
|
||||
:selected-ids="selectedIds"
|
||||
:preview-source="resolvePreviewSource"
|
||||
:thumbnail-source="resolveThumbnailSource"
|
||||
:preview-source="previewsAvailable ? resolvePreviewSource : undefined"
|
||||
:thumbnail-source="previewsAvailable ? resolveThumbnailSource : undefined"
|
||||
@item-click="handleItemClick"
|
||||
@open="handleOpenItem"
|
||||
@edit="handleEditItem"
|
||||
@@ -832,8 +838,8 @@ onMounted(async () => {
|
||||
:collections="sortedItems.collections"
|
||||
:entities="sortedItems.entities"
|
||||
:selected-ids="selectedIds"
|
||||
:preview-source="resolvePreviewSource"
|
||||
:thumbnail-source="resolveThumbnailSource"
|
||||
:preview-source="previewsAvailable ? resolvePreviewSource : undefined"
|
||||
:thumbnail-source="previewsAvailable ? resolveThumbnailSource : undefined"
|
||||
@item-click="handleItemClick"
|
||||
@open="handleOpenItem"
|
||||
@edit="handleEditItem"
|
||||
@@ -849,8 +855,8 @@ onMounted(async () => {
|
||||
:collections="sortedItems.collections"
|
||||
:entities="sortedItems.entities"
|
||||
:selected-ids="selectedIds"
|
||||
:preview-source="resolvePreviewSource"
|
||||
:thumbnail-source="resolveThumbnailSource"
|
||||
:preview-source="previewsAvailable ? resolvePreviewSource : undefined"
|
||||
:thumbnail-source="previewsAvailable ? resolveThumbnailSource : undefined"
|
||||
@item-click="handleItemClick"
|
||||
@open="handleOpenItem"
|
||||
@edit="handleEditItem"
|
||||
|
||||
Reference in New Issue
Block a user