diff --git a/plugins/drive-resources/src/components/DriveSpacePresenter.svelte b/plugins/drive-resources/src/components/DriveSpacePresenter.svelte
index 90a5dffaed..ea0e30b962 100644
--- a/plugins/drive-resources/src/components/DriveSpacePresenter.svelte
+++ b/plugins/drive-resources/src/components/DriveSpacePresenter.svelte
@@ -89,22 +89,6 @@
handleDriveSelected(space._id)
}}
>
-
-
{/if}
diff --git a/plugins/drive-resources/src/components/FilePresenter.svelte b/plugins/drive-resources/src/components/FilePresenter.svelte
index c4a9ad1f76..ead51c9195 100644
--- a/plugins/drive-resources/src/components/FilePresenter.svelte
+++ b/plugins/drive-resources/src/components/FilePresenter.svelte
@@ -23,7 +23,7 @@
import { ObjectPresenterType } from '@hcengineering/view'
import { DocNavLink, ObjectMention } from '@hcengineering/view-resources'
- import drive from '../plugin'
+ import { getFileTypeIcon } from '../utils'
export let value: WithLookup
export let inline: boolean = false
@@ -33,6 +33,8 @@
export let shouldShowAvatar = true
export let type: ObjectPresenterType = 'link'
+ $: icon = getFileTypeIcon(value.$lookup?.file?.contentType ?? '')
+
function handleClick (): void {
if (disabled) {
return
@@ -65,7 +67,7 @@
{#if shouldShowAvatar}
-
+
{/if}
diff --git a/plugins/drive-resources/src/components/FolderPresenter.svelte b/plugins/drive-resources/src/components/FolderPresenter.svelte
index fc5508df64..a7e1be5e10 100644
--- a/plugins/drive-resources/src/components/FolderPresenter.svelte
+++ b/plugins/drive-resources/src/components/FolderPresenter.svelte
@@ -21,7 +21,7 @@
import { DocNavLink, ObjectMention } from '@hcengineering/view-resources'
import { ObjectPresenterType } from '@hcengineering/view'
- import drive from '../plugin'
+ import FolderIcon from './icons/Folder.svelte'
export let value: Folder
export let inline: boolean = false
@@ -40,7 +40,7 @@
{#if shouldShowAvatar}
-
+
{/if}
diff --git a/plugins/drive-resources/src/components/FolderTreeLevel.svelte b/plugins/drive-resources/src/components/FolderTreeLevel.svelte
index 04d7d9de70..9174a9e595 100644
--- a/plugins/drive-resources/src/components/FolderTreeLevel.svelte
+++ b/plugins/drive-resources/src/components/FolderTreeLevel.svelte
@@ -22,8 +22,7 @@
import { getActions as getContributedActions } from '@hcengineering/view-resources'
import FolderTreeElement from './FolderTreeElement.svelte'
-
- import drive from '../plugin'
+ import FolderIcon from './icons/Folder.svelte'
export let folders: Ref[]
export let folderById: Map[, Folder>
@@ -69,7 +68,10 @@
{#if doc}
0}
diff --git a/plugins/drive-resources/src/components/icons/FileTypeAudio.svelte b/plugins/drive-resources/src/components/icons/FileTypeAudio.svelte
new file mode 100644
index 0000000000..d62faa8def
--- /dev/null
+++ b/plugins/drive-resources/src/components/icons/FileTypeAudio.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/plugins/drive-resources/src/components/icons/FileTypeImage.svelte b/plugins/drive-resources/src/components/icons/FileTypeImage.svelte
new file mode 100644
index 0000000000..5c1cff806c
--- /dev/null
+++ b/plugins/drive-resources/src/components/icons/FileTypeImage.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/plugins/drive-resources/src/components/icons/FileTypePdf.svelte b/plugins/drive-resources/src/components/icons/FileTypePdf.svelte
new file mode 100644
index 0000000000..cd11bc4a8b
--- /dev/null
+++ b/plugins/drive-resources/src/components/icons/FileTypePdf.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/plugins/drive-resources/src/components/icons/FileTypeText.svelte b/plugins/drive-resources/src/components/icons/FileTypeText.svelte
new file mode 100644
index 0000000000..cd11bc4a8b
--- /dev/null
+++ b/plugins/drive-resources/src/components/icons/FileTypeText.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/plugins/drive-resources/src/components/icons/FileTypeVideo.svelte b/plugins/drive-resources/src/components/icons/FileTypeVideo.svelte
new file mode 100644
index 0000000000..d62faa8def
--- /dev/null
+++ b/plugins/drive-resources/src/components/icons/FileTypeVideo.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/plugins/drive-resources/src/components/icons/Folder.svelte b/plugins/drive-resources/src/components/icons/Folder.svelte
new file mode 100644
index 0000000000..61b61cc512
--- /dev/null
+++ b/plugins/drive-resources/src/components/icons/Folder.svelte
@@ -0,0 +1,33 @@
+
+
+
+
+
diff --git a/plugins/drive-resources/src/utils.ts b/plugins/drive-resources/src/utils.ts
index 6e90d225e8..c0e3f066b5 100644
--- a/plugins/drive-resources/src/utils.ts
+++ b/plugins/drive-resources/src/utils.ts
@@ -15,15 +15,21 @@
import { type Class, type Doc, type Ref } from '@hcengineering/core'
import drive, { type Drive, type Folder, type Resource } from '@hcengineering/drive'
-import { setPlatformStatus, unknownError } from '@hcengineering/platform'
+import { type Asset, setPlatformStatus, unknownError } from '@hcengineering/platform'
import { getClient, getFileMetadata, uploadFile } from '@hcengineering/presentation'
-import { showPopup } from '@hcengineering/ui'
+import { type AnySvelteComponent, showPopup } from '@hcengineering/ui'
import { openDoc } from '@hcengineering/view-resources'
import CreateDrive from './components/CreateDrive.svelte'
import CreateFolder from './components/CreateFolder.svelte'
import RenamePopup from './components/RenamePopup.svelte'
+import FileTypeAudio from './components/icons/FileTypeAudio.svelte'
+import FileTypeImage from './components/icons/FileTypeImage.svelte'
+import FileTypeVideo from './components/icons/FileTypeVideo.svelte'
+import FileTypePdf from './components/icons/FileTypePdf.svelte'
+import FileTypeText from './components/icons/FileTypeText.svelte'
+
async function navigateToDoc (_id: Ref, _class: Ref>): Promise {
const client = getClient()
const doc = await client.findOne(_class, { _id })
@@ -91,3 +97,16 @@ export async function renameResource (resource: Resource): Promise {
}
})
}
+
+const fileTypesMap: Record = {
+ 'application/pdf': FileTypePdf,
+ audio: FileTypeAudio,
+ image: FileTypeImage,
+ video: FileTypeVideo,
+ text: FileTypeText
+}
+
+export function getFileTypeIcon (contentType: string): Asset | AnySvelteComponent {
+ const type = contentType.split('/', 1)[0]
+ return fileTypesMap[type] ?? fileTypesMap[contentType] ?? drive.icon.File
+}
]