refactor: asset select manager (#27329)

This commit is contained in:
Jason Rasmussen
2026-03-27 14:23:33 -04:00
committed by GitHub
parent 14cce0cba3
commit 5889c42eb6
17 changed files with 33 additions and 68 deletions
@@ -451,10 +451,7 @@
</main>
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar
assets={assetMultiSelectManager.assets}
clearSelect={() => assetMultiSelectManager.clear()}
>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<CreateSharedLink />
@@ -59,7 +59,7 @@
</UserPageLayout>
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<ArchiveAction
@@ -63,7 +63,7 @@
<!-- Multiselection mode app bar -->
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<FavoriteAction removeFavorite onFavorite={(assetIds) => timelineManager.removeAssets(assetIds)} />
@@ -110,7 +110,7 @@
{#if assetMultiSelectManager.selectionActive}
<div class="fixed top-0 start-0 w-full">
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<CreateSharedLink />
@@ -74,7 +74,7 @@
<!-- Multi-selection mode app bar -->
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
<SelectAllAssets withText {timelineManager} assetInteraction={assetMultiSelectManager} />
<SetVisibilityAction unlock onVisibilitySet={handleMoveOffLockedFolder} />
<ButtonContextMenu icon={mdiDotsVertical} title={$t('menu')}>
@@ -39,7 +39,7 @@
</main>
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<CreateSharedLink />
@@ -458,7 +458,7 @@
<header>
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<CreateSharedLink />
@@ -25,7 +25,7 @@
import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte';
import { Route } from '$lib/route';
import { getAssetBulkActions } from '$lib/services/asset.service';
import { preferences, user } from '$lib/stores/user.store';
import { preferences } from '$lib/stores/user.store';
import { getAssetMediaUrl, memoryLaneTitle } from '$lib/utils';
import {
updateStackedAssetInTimeline,
@@ -112,11 +112,7 @@
</UserPageLayout>
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar
ownerId={$user.id}
assets={assetMultiSelectManager.assets}
clearSelect={() => assetMultiSelectManager.clear()}
>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
@@ -318,10 +318,7 @@
<section>
{#if assetMultiSelectManager.selectionActive}
<div class="fixed top-0 start-0 w-full z-2">
<AssetSelectControlBar
assets={assetMultiSelectManager.assets}
clearSelect={() => assetMultiSelectManager.clear()}
>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
@@ -27,7 +27,7 @@
import { Route } from '$lib/route';
import { getAssetBulkActions } from '$lib/services/asset.service';
import { getTagActions } from '$lib/services/tag.service';
import { preferences, user } from '$lib/stores/user.store';
import { preferences } from '$lib/stores/user.store';
import { joinPaths, TreeNode } from '$lib/utils/tree-utils';
import { getAllTags, type TagResponseDto } from '@immich/sdk';
import { ActionButton, CommandPaletteDefaultProvider, Text } from '@immich/ui';
@@ -113,11 +113,7 @@
<section>
{#if assetMultiSelectManager.selectionActive}
<div class="fixed top-0 start-0 w-full">
<AssetSelectControlBar
ownerId={$user.id}
assets={assetMultiSelectManager.assets}
clearSelect={() => assetMultiSelectManager.clear()}
>
<AssetSelectControlBar>
{@const Actions = getAssetBulkActions($t, assetMultiSelectManager.asControlContext())}
<CommandPaletteDefaultProvider name={$t('assets')} actions={Object.values(Actions)} />
<CreateSharedLink />
@@ -68,7 +68,7 @@
{/if}
{#if assetMultiSelectManager.selectionActive}
<AssetSelectControlBar assets={assetMultiSelectManager.assets} clearSelect={() => assetMultiSelectManager.clear()}>
<AssetSelectControlBar>
<SelectAllAssets {timelineManager} assetInteraction={assetMultiSelectManager} />
<DeleteAssets force onAssetDelete={(assetIds) => timelineManager.removeAssets(assetIds)} />
<RestoreAssets onRestore={(assetIds) => timelineManager.removeAssets(assetIds)} />