mirror of
https://github.com/immich-app/immich.git
synced 2024-12-25 10:43:13 +02:00
Load low- and high quality thumbnail in the same img tag to avoid flickering (#413)
This commit is contained in:
parent
dc61fd925f
commit
0ac9fe5a54
@ -7,20 +7,20 @@
|
||||
|
||||
export let album: AlbumResponseDto;
|
||||
|
||||
let imageData: string = '/no-thumbnail.png';
|
||||
let imageData: string = `/api/asset/thumbnail/${album.albumThumbnailAssetId}?format=${ThumbnailFormat.Webp}`;
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
const loadHighQualityThumbnail = async (thubmnailId: string | null) => {
|
||||
if (thubmnailId == null) {
|
||||
return '/no-thumbnail.png';
|
||||
return;
|
||||
}
|
||||
|
||||
const { data } = await api.assetApi.getAssetThumbnail(thubmnailId!, ThumbnailFormat.Jpeg, {
|
||||
responseType: 'blob'
|
||||
});
|
||||
|
||||
if (data instanceof Blob) {
|
||||
imageData = URL.createObjectURL(data);
|
||||
return imageData;
|
||||
return URL.createObjectURL(data);
|
||||
}
|
||||
};
|
||||
|
||||
@ -30,6 +30,10 @@
|
||||
y: e.clientY
|
||||
});
|
||||
};
|
||||
|
||||
onMount(async () => {
|
||||
imageData = await loadHighQualityThumbnail(album.albumThumbnailAssetId) || 'no-thumbnail.png';
|
||||
});
|
||||
</script>
|
||||
|
||||
<div
|
||||
@ -50,19 +54,11 @@
|
||||
</div>
|
||||
|
||||
<div class={`h-[275px] w-[275px] z-[-1]`}>
|
||||
{#await loadHighQualityThumbnail(album.albumThumbnailAssetId)}
|
||||
<img
|
||||
src={`/api/asset/thumbnail/${album.albumThumbnailAssetId}?format=${ThumbnailFormat.Webp}`}
|
||||
alt={album.id}
|
||||
class={`object-cover w-full h-full transition-all z-0 rounded-xl duration-300 hover:shadow-lg`}
|
||||
/>
|
||||
{:then imageData}
|
||||
<img
|
||||
src={imageData}
|
||||
alt={album.id}
|
||||
class={`object-cover w-full h-full transition-all z-0 rounded-xl duration-300 hover:shadow-lg`}
|
||||
/>
|
||||
{/await}
|
||||
<img
|
||||
src={imageData}
|
||||
alt={album.id}
|
||||
class={`object-cover h-full w-full transition-all z-0 rounded-xl duration-300 hover:shadow-lg`}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
|
Loading…
Reference in New Issue
Block a user