Documents: Fix prevent empty page load for non-previewable document links - refs #3540

pull/5804/head
christianbeeznst 1 year ago
parent 8eded5234f
commit 99b245af20
  1. 19
      assets/vue/components/documents/DocumentEntry.vue
  2. 10
      assets/vue/composables/fileUtils.js

@ -1,6 +1,7 @@
<template> <template>
<div v-if="isFile"> <div v-if="isFile">
<BaseAppLink <BaseAppLink
v-if="isPreviewable"
:data-type="dataType" :data-type="dataType"
:url="data.contentUrl" :url="data.contentUrl"
class="flex align-center" class="flex align-center"
@ -12,6 +13,18 @@
/> />
{{ data.title }} {{ data.title }}
</BaseAppLink> </BaseAppLink>
<BaseAppLink
v-else
:data-type="dataType"
:url="data.contentUrl"
class="flex align-center"
>
<ResourceIcon
:resource-data="data"
class="mr-2"
/>
{{ data.title }}
</BaseAppLink>
</div> </div>
<div v-else> <div v-else>
<BaseAppLink <BaseAppLink
@ -60,7 +73,7 @@ const dataType = computed(() => {
return "video" return "video"
} }
if (isAudio(props.data)) { if (isAudio(props.data)) {
return "video" return "audio"
} }
return "iframe" return "iframe"
@ -69,4 +82,8 @@ const dataType = computed(() => {
const isFile = computed(() => { const isFile = computed(() => {
return props.data && utilsIsFile(props.data) return props.data && utilsIsFile(props.data)
}) })
const isPreviewable = computed(() => {
return useFileUtils().isPreviewable(props.data)
})
</script> </script>

@ -1,4 +1,8 @@
export function useFileUtils() { export function useFileUtils() {
const isFile = (fileData) => {
return fileData.resourceNode && fileData.resourceNode.firstResourceFile
}
const isImage = (fileData) => { const isImage = (fileData) => {
return isFile(fileData) && fileData.resourceNode.firstResourceFile.image return isFile(fileData) && fileData.resourceNode.firstResourceFile.image
} }
@ -21,8 +25,9 @@ export function useFileUtils() {
return mimeType.split("/")[1].toLowerCase() === "html" return mimeType.split("/")[1].toLowerCase() === "html"
} }
const isFile = (fileData) => { const isPreviewable = (fileData) => {
return fileData.resourceNode && fileData.resourceNode.firstResourceFile const mimeType = fileData.resourceNode.firstResourceFile.mimeType.toLowerCase()
return isImage(fileData) || isVideo(fileData) || isAudio(fileData) || mimeType === "application/pdf"
} }
return { return {
@ -31,5 +36,6 @@ export function useFileUtils() {
isVideo, isVideo,
isAudio, isAudio,
isHtml, isHtml,
isPreviewable,
} }
} }

Loading…
Cancel
Save