diff --git a/web/src/lib/components/asset-viewer/photo-viewer.svelte b/web/src/lib/components/asset-viewer/photo-viewer.svelte
index cf7c16b3d8..f957341fbf 100644
--- a/web/src/lib/components/asset-viewer/photo-viewer.svelte
+++ b/web/src/lib/components/asset-viewer/photo-viewer.svelte
@@ -11,6 +11,7 @@
import { photoViewer } from '$lib/stores/assets.store';
import { getBoundingBox } from '$lib/utils/people-utils';
import { boundingBoxesArray } from '$lib/stores/people.store';
+ import { alwaysLoadOriginalFile } from '$lib/stores/preferences.store';
export let asset: AssetResponseDto;
export let element: HTMLDivElement | undefined = undefined;
@@ -114,7 +115,7 @@
zoomImageWheelState.subscribe((state) => {
photoZoomState.set(state);
- if (state.currentZoom > 1 && isWebCompatibleImage(asset) && !hasZoomed) {
+ if (state.currentZoom > 1 && isWebCompatibleImage(asset) && !hasZoomed && !$alwaysLoadOriginalFile) {
hasZoomed = true;
loadAssetData({ loadOriginal: true });
@@ -129,7 +130,7 @@
transition:fade={{ duration: haveFadeTransition ? 150 : 0 }}
class="flex h-full select-none place-content-center place-items-center"
>
- {#await loadAssetData({ loadOriginal: false })}
+ {#await loadAssetData({ loadOriginal: $alwaysLoadOriginalFile ? isWebCompatibleImage(asset) : false })}
{:then}
diff --git a/web/src/lib/components/user-settings-page/quality-settings.svelte b/web/src/lib/components/user-settings-page/quality-settings.svelte
new file mode 100644
index 0000000000..9adf77c5f4
--- /dev/null
+++ b/web/src/lib/components/user-settings-page/quality-settings.svelte
@@ -0,0 +1,24 @@
+
+
+
diff --git a/web/src/lib/components/user-settings-page/user-settings-list.svelte b/web/src/lib/components/user-settings-page/user-settings-list.svelte
index 9405205e64..77e9fac69d 100644
--- a/web/src/lib/components/user-settings-page/user-settings-list.svelte
+++ b/web/src/lib/components/user-settings-page/user-settings-list.svelte
@@ -17,6 +17,7 @@
import { OpenSettingQueryParameterValue, QueryParameter } from '$lib/constants';
import AppearanceSettings from './appearance-settings.svelte';
import TrashSettings from './trash-settings.svelte';
+ import QualitySettings from './quality-settings.svelte';
export let keys: APIKeyResponseDto[] = [];
export let devices: AuthDeviceResponseDto[] = [];
@@ -67,6 +68,10 @@
+
+
+
+
diff --git a/web/src/lib/stores/preferences.store.ts b/web/src/lib/stores/preferences.store.ts
index 09154f5b12..d23c3a3ac3 100644
--- a/web/src/lib/stores/preferences.store.ts
+++ b/web/src/lib/stores/preferences.store.ts
@@ -92,3 +92,5 @@ export const albumViewSettings = persisted
('album-view-settin
});
export const showDeleteModal = persisted('delete-confirm-dialog', true, {});
+
+export const alwaysLoadOriginalFile = persisted('always-load-original-file', false, {});