mirror of
https://github.com/immich-app/immich.git
synced 2025-02-08 18:55:33 +02:00
feat(web): cancel pending requests on image change (#4145)
This commit is contained in:
parent
9030b1f89f
commit
816db700e1
@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { fade } from 'svelte/transition';
|
import { fade } from 'svelte/transition';
|
||||||
import { onMount } from 'svelte';
|
import { onDestroy, onMount } from 'svelte';
|
||||||
import LoadingSpinner from '../shared-components/loading-spinner.svelte';
|
import LoadingSpinner from '../shared-components/loading-spinner.svelte';
|
||||||
import { api, AssetResponseDto } from '@api';
|
import { api, AssetResponseDto } from '@api';
|
||||||
import { notificationController, NotificationType } from '../shared-components/notification/notification';
|
import { notificationController, NotificationType } from '../shared-components/notification/notification';
|
||||||
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
let imgElement: HTMLDivElement;
|
let imgElement: HTMLDivElement;
|
||||||
let assetData: string;
|
let assetData: string;
|
||||||
|
let abortController: AbortController;
|
||||||
let hasZoomed = false;
|
let hasZoomed = false;
|
||||||
let copyImageToClipboard: (src: string) => Promise<Blob>;
|
let copyImageToClipboard: (src: string) => Promise<Blob>;
|
||||||
let canCopyImagesToClipboard: () => boolean;
|
let canCopyImagesToClipboard: () => boolean;
|
||||||
@ -25,12 +26,20 @@
|
|||||||
canCopyImagesToClipboard = module.canCopyImagesToClipboard;
|
canCopyImagesToClipboard = module.canCopyImagesToClipboard;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
abortController?.abort();
|
||||||
|
});
|
||||||
|
|
||||||
const loadAssetData = async ({ loadOriginal }: { loadOriginal: boolean }) => {
|
const loadAssetData = async ({ loadOriginal }: { loadOriginal: boolean }) => {
|
||||||
try {
|
try {
|
||||||
|
abortController?.abort();
|
||||||
|
abortController = new AbortController();
|
||||||
|
|
||||||
const { data } = await api.assetApi.serveFile(
|
const { data } = await api.assetApi.serveFile(
|
||||||
{ id: asset.id, isThumb: false, isWeb: !loadOriginal, key: api.getKey() },
|
{ id: asset.id, isThumb: false, isWeb: !loadOriginal, key: api.getKey() },
|
||||||
{
|
{
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
|
signal: abortController.signal,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user