refactor: share modals (#18183)

This commit is contained in:
Daniel Dietzler
2025-05-09 18:59:29 +02:00
committed by GitHub
parent 47b1938f17
commit 6a69dafd31
10 changed files with 375 additions and 379 deletions

View File

@@ -1,7 +1,10 @@
<script lang="ts">
import CircleIconButton from '$lib/components/elements/buttons/circle-icon-button.svelte';
import CreateSharedLinkModal from '$lib/components/shared-components/create-share-link-modal/create-shared-link-modal.svelte';
import Portal from '$lib/components/shared-components/portal/portal.svelte';
import { modalManager } from '$lib/managers/modal-manager.svelte';
import QrCodeModal from '$lib/modals/QrCodeModal.svelte';
import SharedLinkCreateModal from '$lib/modals/SharedLinkCreateModal.svelte';
import { serverConfig } from '$lib/stores/server-config.store';
import { makeSharedLinkUrl } from '$lib/utils';
import type { AssetResponseDto } from '@immich/sdk';
import { mdiShareVariantOutline } from '@mdi/js';
import { t } from 'svelte-i18n';
@@ -12,13 +15,14 @@
let { asset }: Props = $props();
let showModal = $state(false);
const handleClick = async () => {
const sharedLink = await modalManager.show(SharedLinkCreateModal, { assetIds: [asset.id] });
if (sharedLink) {
const url = makeSharedLinkUrl($serverConfig.externalDomain, sharedLink.key);
await modalManager.show(QrCodeModal, { title: $t('view_link'), value: url });
}
};
</script>
<CircleIconButton color="opaque" icon={mdiShareVariantOutline} onclick={() => (showModal = true)} title={$t('share')} />
{#if showModal}
<Portal target="body">
<CreateSharedLinkModal assetIds={[asset.id]} onClose={() => (showModal = false)} />
</Portal>
{/if}
<CircleIconButton color="opaque" icon={mdiShareVariantOutline} onclick={handleClick} title={$t('share')} />