mirror of
https://github.com/immich-app/immich.git
synced 2026-05-23 08:02:29 -04:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d052bd995 | |||
| 96b97d9b6f | |||
| 09791092da |
+22
-2
@@ -8,8 +8,9 @@
|
|||||||
import { assetMultiSelectManager } from '$lib/managers/asset-multi-select-manager.svelte';
|
import { assetMultiSelectManager } from '$lib/managers/asset-multi-select-manager.svelte';
|
||||||
import { Route } from '$lib/route';
|
import { Route } from '$lib/route';
|
||||||
import { getAssetBulkActions } from '$lib/services/asset.service';
|
import { getAssetBulkActions } from '$lib/services/asset.service';
|
||||||
import { AssetVisibility } from '@immich/sdk';
|
import { handleError } from '$lib/utils/handle-error';
|
||||||
import { ActionButton, CommandPaletteDefaultProvider } from '@immich/ui';
|
import { AssetVisibility, updatePartner } from '@immich/sdk';
|
||||||
|
import { ActionButton, CommandPaletteDefaultProvider, Field, Switch, Text } from '@immich/ui';
|
||||||
import { mdiArrowLeft } from '@mdi/js';
|
import { mdiArrowLeft } from '@mdi/js';
|
||||||
import { t } from 'svelte-i18n';
|
import { t } from 'svelte-i18n';
|
||||||
import type { PageData } from './$types';
|
import type { PageData } from './$types';
|
||||||
@@ -20,6 +21,8 @@
|
|||||||
|
|
||||||
let { data }: Props = $props();
|
let { data }: Props = $props();
|
||||||
|
|
||||||
|
let inTimeline = $derived(data.inTimeline);
|
||||||
|
|
||||||
const options = $derived({
|
const options = $derived({
|
||||||
userId: data.partner.id,
|
userId: data.partner.id,
|
||||||
visibility: AssetVisibility.Timeline,
|
visibility: AssetVisibility.Timeline,
|
||||||
@@ -32,6 +35,15 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleToggleInTimeline = async (status: boolean) => {
|
||||||
|
try {
|
||||||
|
await updatePartner({ id: data.partner.id, partnerUpdateDto: { inTimeline: status } });
|
||||||
|
inTimeline = status;
|
||||||
|
} catch (error) {
|
||||||
|
handleError(error, $t('errors.unable_to_update_timeline_display_status'));
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<main class="relative h-dvh overflow-hidden px-2 pt-(--navbar-height) max-md:pt-(--navbar-height-md) md:px-6">
|
<main class="relative h-dvh overflow-hidden px-2 pt-(--navbar-height) max-md:pt-(--navbar-height-md) md:px-6">
|
||||||
@@ -53,5 +65,13 @@
|
|||||||
{$t('partner_list_user_photos', { values: { user: data.partner.name } })}
|
{$t('partner_list_user_photos', { values: { user: data.partner.name } })}
|
||||||
</p>
|
</p>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
|
{#snippet trailing()}
|
||||||
|
<Field class="flex w-full place-content-center place-items-center gap-2">
|
||||||
|
<Text size="small">
|
||||||
|
{$t('show_in_timeline')}
|
||||||
|
</Text>
|
||||||
|
<Switch bind:checked={inTimeline} onCheckedChange={handleToggleInTimeline} />
|
||||||
|
</Field>
|
||||||
|
{/snippet}
|
||||||
</ControlAppBar>
|
</ControlAppBar>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { getUser } from '@immich/sdk';
|
import { getPartners, getUser, PartnerDirection } from '@immich/sdk';
|
||||||
import { authenticate } from '$lib/utils/auth';
|
import { authenticate } from '$lib/utils/auth';
|
||||||
import { getFormatter } from '$lib/utils/i18n';
|
import { getFormatter } from '$lib/utils/i18n';
|
||||||
import type { PageLoad } from './$types';
|
import type { PageLoad } from './$types';
|
||||||
@@ -6,11 +6,16 @@ import type { PageLoad } from './$types';
|
|||||||
export const load = (async ({ params, url }) => {
|
export const load = (async ({ params, url }) => {
|
||||||
await authenticate(url);
|
await authenticate(url);
|
||||||
|
|
||||||
const partner = await getUser({ id: params.userId });
|
const [partner, sharedWith] = await Promise.all([
|
||||||
|
getUser({ id: params.userId }),
|
||||||
|
getPartners({ direction: PartnerDirection.SharedWith }),
|
||||||
|
]);
|
||||||
|
const inTimeline = sharedWith.find((p) => p.id === params.userId)?.inTimeline ?? false;
|
||||||
const $t = await getFormatter();
|
const $t = await getFormatter();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
partner,
|
partner,
|
||||||
|
inTimeline,
|
||||||
meta: {
|
meta: {
|
||||||
title: $t('partner'),
|
title: $t('partner'),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user