mirror of
https://github.com/samsonjs/immich.git
synced 2026-04-14 12:35:53 +00:00
* feat: folder view poc * fix(folder-view): ui modifications * fix(folder-view): improves utility return types * fix(folder-view): update getAssetsByOriginalPath Endpoint now only returns direct children of the path instead of all images in all subfolders. Functions renamed and scoped to "folder", endpoints renamed * fix(folder-view): improve typing * fix(folder-view): replaces css with tailwind * fix(folder-view): includes folders in main panel * feat(folder-view): folder cache implementation * fix(folder-view): can now search for absolute paths * fix(folder-view): sets default sort to alphabetical by filename * refactor/styling the browser view * double click to navigate * folder tree * use correct side bar icon * styling when selected * correct open icon * folder layout * return assetReponseDto * it's alive * update new api * more styling for folder tree * use query params and path viewer * use arrow up left for parent folder backward navigation * use arrow up left for parent folder backward navigation * encode URL * handle long folder name * refactor to the view controller * remove unused code * clear cache when logout * cleaning up * cleaning up web * clean as new * clean as new * pr feedback + show asset name * add tests * add tests * remove generated file * lint * revert docker-compose.dev file * Update server/src/services/view.service.ts Co-authored-by: Jason Rasmussen <jason@rasm.me> * Update server/src/services/view.service.ts Co-authored-by: Jason Rasmussen <jason@rasm.me> --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com> Co-authored-by: Jason Rasmussen <jason@rasm.me>
32 lines
1.1 KiB
Svelte
32 lines
1.1 KiB
Svelte
<script lang="ts">
|
|
import { onMount } from 'svelte';
|
|
import { page } from '$app/stores';
|
|
import FolderTree from '$lib/components/folder-tree/folder-tree.svelte';
|
|
import { buildFolderTree, type RecursiveObject } from '$lib/utils/folder-utils';
|
|
import { foldersStore } from '$lib/stores/folders.store';
|
|
import { get } from 'svelte/store';
|
|
import { t } from 'svelte-i18n';
|
|
|
|
let folderTree: RecursiveObject = {};
|
|
$: currentPath = $page.url.searchParams.get('folder') || '';
|
|
|
|
onMount(async () => {
|
|
await foldersStore.fetchUniquePaths();
|
|
});
|
|
|
|
$: {
|
|
const { uniquePaths } = get(foldersStore);
|
|
if (uniquePaths && uniquePaths.length > 0) {
|
|
folderTree = buildFolderTree(uniquePaths);
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<section id="folder-browser-sidebar">
|
|
<div class="text-xs pl-4 mb-4 dark:text-white">{$t('explorer').toUpperCase()}</div>
|
|
<div class="overflow-auto pb-10 immich-scrollbar">
|
|
{#each Object.entries(folderTree) as [folderName, content]}
|
|
<FolderTree {folderName} {content} {currentPath} basePath="" />
|
|
{/each}
|
|
</div>
|
|
</section>
|