Thumbnails for assets always are displayed with a thumbhash which fades out over 100ms, even if the thumbnail is cached and ready immediately. This can be a bit distracting and make Immich feel 'slow', or inefficient as it feels like the thumbnails are always being reloaded. Skipping the thumbhash and animation for cached thumbnails makes it feel much more responsive.
35 lines
990 B
TypeScript
35 lines
990 B
TypeScript
import { browser } from '$app/environment';
|
|
|
|
function getBoolean(string: string | null, fallback: boolean) {
|
|
if (string === null) {
|
|
return fallback;
|
|
}
|
|
return 'true' === string;
|
|
}
|
|
function getNumber(string: string | null, fallback: number) {
|
|
if (string === null) {
|
|
return fallback;
|
|
}
|
|
return Number.parseInt(string);
|
|
}
|
|
const storage = browser
|
|
? localStorage
|
|
: {
|
|
getItem: () => null,
|
|
};
|
|
export const TUNABLES = {
|
|
LAYOUT: {
|
|
WASM: getBoolean(storage.getItem('LAYOUT.WASM'), false),
|
|
},
|
|
TIMELINE: {
|
|
INTERSECTION_EXPAND_TOP: getNumber(storage.getItem('TIMELINE_INTERSECTION_EXPAND_TOP'), 500),
|
|
INTERSECTION_EXPAND_BOTTOM: getNumber(storage.getItem('TIMELINE_INTERSECTION_EXPAND_BOTTOM'), 500),
|
|
},
|
|
ASSET_GRID: {
|
|
NAVIGATE_ON_ASSET_IN_VIEW: getBoolean(storage.getItem('ASSET_GRID.NAVIGATE_ON_ASSET_IN_VIEW'), false),
|
|
},
|
|
IMAGE_THUMBNAIL: {
|
|
THUMBHASH_FADE_DURATION: getNumber(storage.getItem('THUMBHASH_FADE_DURATION'), 1000),
|
|
},
|
|
};
|