Files
immich/web/src/routes/(user)/folders/[[photos=photos]]/[[assetId=id]]/+page.ts
T
2025-05-15 14:45:23 -04:00

44 lines
1.3 KiB
TypeScript

import { QueryParameter } from '$lib/constants';
import { foldersStore } from '$lib/stores/folders.svelte';
import { authenticate } from '$lib/utils/auth';
import { getFormatter } from '$lib/utils/i18n';
import { getAssetInfoFromParam } from '$lib/utils/navigation';
import { buildTree, normalizeTreePath } from '$lib/utils/tree-utils';
import type { PageLoad } from './$types';
export const load = (async ({ params, url }) => {
await authenticate(url);
const asset = await getAssetInfoFromParam(params);
const $t = await getFormatter();
await foldersStore.fetchUniquePaths();
let pathAssets = null;
const path = url.searchParams.get(QueryParameter.PATH);
if (path) {
await foldersStore.fetchAssetsByPath(path);
pathAssets = foldersStore.assets[path] || null;
} else {
// If no path is provided, we we're at the root level
// We should bust the asset cache of the folder store, to make sure we don't show stale data
foldersStore.bustAssetCache();
}
let tree = buildTree(foldersStore.uniquePaths);
const parts = normalizeTreePath(path || '').split('/');
for (const part of parts) {
tree = tree?.[part];
}
return {
asset,
path,
currentFolders: Object.keys(tree || {}).sort(),
pathAssets,
meta: {
title: $t('folders'),
},
};
}) satisfies PageLoad;