fix: drive UX fixes (#6213)

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov 2024-08-01 14:31:51 +07:00 committed by GitHub
parent f4b6db67a5
commit f4a9e499cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 40 additions and 7 deletions

View File

@ -82,7 +82,7 @@
use:resizeObserver={(element) => (parentWidth = element.clientWidth)} use:resizeObserver={(element) => (parentWidth = element.clientWidth)}
class="content w-full h-full" class="content w-full h-full"
class:flex-center={fit && !audio} class:flex-center={fit && !audio}
style:min-height={fit ? '100%' : `${minHeight ?? 0}px`} style:min-height={fit ? '0' : `${minHeight ?? 0}px`}
> >
{#await srcRef then src} {#await srcRef then src}
{#if src === ''} {#if src === ''}

View File

@ -50,7 +50,7 @@
{#if object !== undefined && version !== undefined} {#if object !== undefined && version !== undefined}
{#if blob !== undefined} {#if blob !== undefined}
<FilePreview file={blob} name={version.name} metadata={version.metadata} /> <FilePreview file={blob} name={version.name} metadata={version.metadata} fit />
{/if} {/if}
{#if object.versions > 1} {#if object.versions > 1}

View File

@ -13,7 +13,7 @@
// limitations under the License. // limitations under the License.
--> -->
<script lang="ts"> <script lang="ts">
import { FindOptions, SortingOrder } from '@hcengineering/core' import core, { FindOptions, SortingOrder } from '@hcengineering/core'
import { type File, type FileVersion } from '@hcengineering/drive' import { type File, type FileVersion } from '@hcengineering/drive'
import { Scroller, Section } from '@hcengineering/ui' import { Scroller, Section } from '@hcengineering/ui'
import { Table } from '@hcengineering/view-resources' import { Table } from '@hcengineering/view-resources'
@ -24,6 +24,7 @@
export let readonly: boolean = false export let readonly: boolean = false
const options: FindOptions<FileVersion> = { const options: FindOptions<FileVersion> = {
lookup: { file: core.class.Blob },
sort: { version: SortingOrder.Descending } sort: { version: SortingOrder.Descending }
} }
</script> </script>
@ -34,7 +35,7 @@
<Scroller horizontal> <Scroller horizontal>
<Table <Table
_class={drive.class.FileVersion} _class={drive.class.FileVersion}
config={['version', 'size', 'modifiedOn', 'createdBy']} config={['', 'size', 'modifiedOn', 'createdBy']}
query={{ attachedTo: object._id }} query={{ attachedTo: object._id }}
{readonly} {readonly}
{options} {options}

View File

@ -15,13 +15,16 @@
// //
--> -->
<script lang="ts"> <script lang="ts">
import { WithLookup } from '@hcengineering/core'
import { type FileVersion } from '@hcengineering/drive' import { type FileVersion } from '@hcengineering/drive'
import { FilePreviewPopup } from '@hcengineering/presentation'
import { showPopup } from '@hcengineering/ui'
import { ObjectPresenterType } from '@hcengineering/view' import { ObjectPresenterType } from '@hcengineering/view'
import { DocNavLink, ObjectMention } from '@hcengineering/view-resources' import { DocNavLink, ObjectMention } from '@hcengineering/view-resources'
import { formatFileVersion } from '../utils' import { formatFileVersion } from '../utils'
export let value: FileVersion export let value: WithLookup<FileVersion>
export let inline: boolean = false export let inline: boolean = false
export let disabled: boolean = false export let disabled: boolean = false
export let accent: boolean = false export let accent: boolean = false
@ -29,13 +32,36 @@
export let type: ObjectPresenterType = 'link' export let type: ObjectPresenterType = 'link'
$: version = formatFileVersion(value.version) $: version = formatFileVersion(value.version)
function handleClick (): void {
if (disabled) {
return
}
if (value.$lookup?.file === undefined) {
return
}
const blob = value.$lookup?.file
showPopup(
FilePreviewPopup,
{
file: blob._id,
contentType: blob.contentType,
name: value.name,
metadata: value.metadata
},
'centered'
)
}
</script> </script>
{#if value} {#if value}
{#if inline} {#if inline}
<ObjectMention object={value} {disabled} {accent} {noUnderline} /> <ObjectMention object={value} {disabled} {accent} {noUnderline} />
{:else if type === 'link'} {:else if type === 'link'}
<DocNavLink object={value} {disabled} {accent} {noUnderline}> <DocNavLink object={value} onClick={handleClick} {disabled} {accent} {noUnderline}>
<div class="flex-presenter"> <div class="flex-presenter">
<div class="label nowrap flex flex-gap-2" class:no-underline={noUnderline || disabled} class:fs-bold={accent}> <div class="label nowrap flex flex-gap-2" class:no-underline={noUnderline || disabled} class:fs-bold={accent}>
{version} {version}

View File

@ -67,7 +67,13 @@ export class WorkspaceClient {
name, name,
size: blob.size, size: blob.size,
type: blob.contentType, type: blob.contentType,
lastModified: blob.modifiedOn lastModified: blob.modifiedOn,
// hardcoded values from preset we use
// https://docs.livekit.io/realtime/egress/overview/#EncodingOptionsPreset
metadata: {
originalHeight: 720,
originalWidth: 1280
}
} }
await createFile(this.client, love.space.Drive, drive.ids.Root, data) await createFile(this.client, love.space.Drive, drive.ids.Root, data)
} }