mirror of
https://github.com/immich-app/immich.git
synced 2026-03-22 19:39:54 +03:00
refactor(web): remove replaceAsset action (#26444)
This commit is contained in:
@@ -21,7 +21,7 @@
|
|||||||
import { languageManager } from '$lib/managers/language-manager.svelte';
|
import { languageManager } from '$lib/managers/language-manager.svelte';
|
||||||
import { Route } from '$lib/route';
|
import { Route } from '$lib/route';
|
||||||
import { getGlobalActions } from '$lib/services/app.service';
|
import { getGlobalActions } from '$lib/services/app.service';
|
||||||
import { getAssetActions, handleReplaceAsset } from '$lib/services/asset.service';
|
import { getAssetActions } from '$lib/services/asset.service';
|
||||||
import { user } from '$lib/stores/user.store';
|
import { user } from '$lib/stores/user.store';
|
||||||
import { getSharedLink, withoutIcons } from '$lib/utils';
|
import { getSharedLink, withoutIcons } from '$lib/utils';
|
||||||
import type { OnUndoDelete } from '$lib/utils/actions';
|
import type { OnUndoDelete } from '$lib/utils/actions';
|
||||||
@@ -42,7 +42,6 @@
|
|||||||
mdiDotsVertical,
|
mdiDotsVertical,
|
||||||
mdiImageSearch,
|
mdiImageSearch,
|
||||||
mdiPresentationPlay,
|
mdiPresentationPlay,
|
||||||
mdiUpload,
|
|
||||||
mdiVideoOutline,
|
mdiVideoOutline,
|
||||||
} from '@mdi/js';
|
} from '@mdi/js';
|
||||||
import { t } from 'svelte-i18n';
|
import { t } from 'svelte-i18n';
|
||||||
@@ -170,11 +169,6 @@
|
|||||||
{#if !isLocked}
|
{#if !isLocked}
|
||||||
{#if isOwner}
|
{#if isOwner}
|
||||||
<ArchiveAction {asset} {onAction} {preAction} />
|
<ArchiveAction {asset} {onAction} {preAction} />
|
||||||
<MenuOption
|
|
||||||
icon={mdiUpload}
|
|
||||||
onClick={() => handleReplaceAsset(asset.id)}
|
|
||||||
text={$t('replace_with_upload')}
|
|
||||||
/>
|
|
||||||
{#if !asset.isArchived && !asset.isTrashed}
|
{#if !asset.isArchived && !asset.isTrashed}
|
||||||
<MenuOption
|
<MenuOption
|
||||||
icon={mdiImageSearch}
|
icon={mdiImageSearch}
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { browser } from '$app/environment';
|
import { browser } from '$app/environment';
|
||||||
import { goto } from '$app/navigation';
|
|
||||||
import { focusTrap } from '$lib/actions/focus-trap';
|
import { focusTrap } from '$lib/actions/focus-trap';
|
||||||
import type { Action, OnAction, PreAction } from '$lib/components/asset-viewer/actions/action';
|
import type { Action, OnAction, PreAction } from '$lib/components/asset-viewer/actions/action';
|
||||||
import NextAssetAction from '$lib/components/asset-viewer/actions/next-asset-action.svelte';
|
import NextAssetAction from '$lib/components/asset-viewer/actions/next-asset-action.svelte';
|
||||||
import PreviousAssetAction from '$lib/components/asset-viewer/actions/previous-asset-action.svelte';
|
import PreviousAssetAction from '$lib/components/asset-viewer/actions/previous-asset-action.svelte';
|
||||||
import AssetViewerNavBar from '$lib/components/asset-viewer/asset-viewer-nav-bar.svelte';
|
import AssetViewerNavBar from '$lib/components/asset-viewer/asset-viewer-nav-bar.svelte';
|
||||||
import OnEvents from '$lib/components/OnEvents.svelte';
|
|
||||||
import { AssetAction, ProjectionType } from '$lib/constants';
|
import { AssetAction, ProjectionType } from '$lib/constants';
|
||||||
import { activityManager } from '$lib/managers/activity-manager.svelte';
|
import { activityManager } from '$lib/managers/activity-manager.svelte';
|
||||||
import { assetViewerManager } from '$lib/managers/asset-viewer-manager.svelte';
|
import { assetViewerManager } from '$lib/managers/asset-viewer-manager.svelte';
|
||||||
@@ -14,7 +12,6 @@
|
|||||||
import { editManager, EditToolType } from '$lib/managers/edit/edit-manager.svelte';
|
import { editManager, EditToolType } from '$lib/managers/edit/edit-manager.svelte';
|
||||||
import { eventManager } from '$lib/managers/event-manager.svelte';
|
import { eventManager } from '$lib/managers/event-manager.svelte';
|
||||||
import { imageManager } from '$lib/managers/ImageManager.svelte';
|
import { imageManager } from '$lib/managers/ImageManager.svelte';
|
||||||
import { Route } from '$lib/route';
|
|
||||||
import { getAssetActions } from '$lib/services/asset.service';
|
import { getAssetActions } from '$lib/services/asset.service';
|
||||||
import { assetViewingStore } from '$lib/stores/asset-viewing.store';
|
import { assetViewingStore } from '$lib/stores/asset-viewing.store';
|
||||||
import { ocrManager } from '$lib/stores/ocr.svelte';
|
import { ocrManager } from '$lib/stores/ocr.svelte';
|
||||||
@@ -363,21 +360,6 @@
|
|||||||
imageManager.preload(cursor.previousAsset);
|
imageManager.preload(cursor.previousAsset);
|
||||||
});
|
});
|
||||||
|
|
||||||
const onAssetReplace = async ({ oldAssetId, newAssetId }: { oldAssetId: string; newAssetId: string }) => {
|
|
||||||
if (oldAssetId !== asset.id) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await new Promise((promise) => setTimeout(promise, 500));
|
|
||||||
await goto(Route.viewAsset({ id: newAssetId }));
|
|
||||||
};
|
|
||||||
|
|
||||||
const onAssetUpdate = (update: AssetResponseDto) => {
|
|
||||||
if (asset.id === update.id) {
|
|
||||||
cursor = { ...cursor, current: update };
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const viewerKind = $derived.by(() => {
|
const viewerKind = $derived.by(() => {
|
||||||
if (previewStackedAsset) {
|
if (previewStackedAsset) {
|
||||||
return asset.type === AssetTypeEnum.Image ? 'StackPhotoViewer' : 'StackVideoViewer';
|
return asset.type === AssetTypeEnum.Image ? 'StackPhotoViewer' : 'StackVideoViewer';
|
||||||
@@ -424,7 +406,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<CommandPaletteDefaultProvider name={$t('assets')} actions={[Tag]} />
|
<CommandPaletteDefaultProvider name={$t('assets')} actions={[Tag]} />
|
||||||
<OnEvents {onAssetReplace} {onAssetUpdate} />
|
|
||||||
|
|
||||||
<svelte:document bind:fullscreenElement />
|
<svelte:document bind:fullscreenElement />
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ export type Events = {
|
|||||||
ApiKeyDelete: [ApiKeyResponseDto];
|
ApiKeyDelete: [ApiKeyResponseDto];
|
||||||
|
|
||||||
AssetUpdate: [AssetResponseDto];
|
AssetUpdate: [AssetResponseDto];
|
||||||
AssetReplace: [{ oldAssetId: string; newAssetId: string }];
|
|
||||||
AssetsArchive: [string[]];
|
AssetsArchive: [string[]];
|
||||||
AssetsDelete: [string[]];
|
AssetsDelete: [string[]];
|
||||||
AssetEditsApplied: [string];
|
AssetEditsApplied: [string];
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { user as authUser, preferences } from '$lib/stores/user.store';
|
|||||||
import type { AssetControlContext } from '$lib/types';
|
import type { AssetControlContext } from '$lib/types';
|
||||||
import { getSharedLink, sleep } from '$lib/utils';
|
import { getSharedLink, sleep } from '$lib/utils';
|
||||||
import { downloadUrl } from '$lib/utils/asset-utils';
|
import { downloadUrl } from '$lib/utils/asset-utils';
|
||||||
import { openFileUploadDialog } from '$lib/utils/file-uploader';
|
|
||||||
import { handleError } from '$lib/utils/handle-error';
|
import { handleError } from '$lib/utils/handle-error';
|
||||||
import { getFormatter } from '$lib/utils/i18n';
|
import { getFormatter } from '$lib/utils/i18n';
|
||||||
import { asQueryString } from '$lib/utils/shared-links';
|
import { asQueryString } from '$lib/utils/shared-links';
|
||||||
@@ -17,8 +16,6 @@ import {
|
|||||||
AssetJobName,
|
AssetJobName,
|
||||||
AssetTypeEnum,
|
AssetTypeEnum,
|
||||||
AssetVisibility,
|
AssetVisibility,
|
||||||
copyAsset,
|
|
||||||
deleteAssets,
|
|
||||||
getAssetInfo,
|
getAssetInfo,
|
||||||
getBaseUrl,
|
getBaseUrl,
|
||||||
runAssetJobs,
|
runAssetJobs,
|
||||||
@@ -362,14 +359,6 @@ const handleUnfavorite = async (asset: AssetResponseDto) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const handleReplaceAsset = async (oldAssetId: string) => {
|
|
||||||
const [newAssetId] = await openFileUploadDialog({ multiple: false });
|
|
||||||
await copyAsset({ assetCopyDto: { sourceId: oldAssetId, targetId: newAssetId } });
|
|
||||||
await deleteAssets({ assetBulkDeleteDto: { ids: [oldAssetId], force: true } });
|
|
||||||
|
|
||||||
eventManager.emit('AssetReplace', { oldAssetId, newAssetId });
|
|
||||||
};
|
|
||||||
|
|
||||||
const getAssetJobMessage = ($t: MessageFormatter, job: AssetJobName) => {
|
const getAssetJobMessage = ($t: MessageFormatter, job: AssetJobName) => {
|
||||||
const messages: Record<AssetJobName, string> = {
|
const messages: Record<AssetJobName, string> = {
|
||||||
[AssetJobName.RefreshFaces]: $t('refreshing_faces'),
|
[AssetJobName.RefreshFaces]: $t('refreshing_faces'),
|
||||||
|
|||||||
Reference in New Issue
Block a user