Преглед изворни кода

feat(web): store albums sorting policy in local storage (#2966)

Ethan Margaillan пре 2 година
родитељ
комит
e803bc909f
2 измењених фајлова са 14 додато и 5 уклоњено
  1. 8 0
      web/src/lib/stores/preferences.store.ts
  2. 6 5
      web/src/routes/(user)/albums/+page.svelte

+ 8 - 0
web/src/lib/stores/preferences.store.ts

@@ -37,3 +37,11 @@ export const mapSettings = persisted<MapSettings>('map-settings', {
 });
 });
 
 
 export const videoViewerVolume = persisted<number>('video-viewer-volume', 1, {});
 export const videoViewerVolume = persisted<number>('video-viewer-volume', 1, {});
+
+export interface AlbumViewSettings {
+	sortBy: string;
+}
+
+export const albumViewSettings = persisted<AlbumViewSettings>('album-view-settings', {
+	sortBy: 'Most recent photo'
+});

+ 6 - 5
web/src/routes/(user)/albums/+page.svelte

@@ -1,4 +1,5 @@
 <script lang="ts">
 <script lang="ts">
+	import { albumViewSettings } from '$lib/stores/preferences.store';
 	import AlbumCard from '$lib/components/album-page/album-card.svelte';
 	import AlbumCard from '$lib/components/album-page/album-card.svelte';
 	import { goto } from '$app/navigation';
 	import { goto } from '$app/navigation';
 	import ContextMenu from '$lib/components/shared-components/context-menu/context-menu.svelte';
 	import ContextMenu from '$lib/components/shared-components/context-menu/context-menu.svelte';
@@ -17,7 +18,6 @@
 	export let data: PageData;
 	export let data: PageData;
 
 
 	const sortByOptions = ['Most recent photo', 'Last modified', 'Album title'];
 	const sortByOptions = ['Most recent photo', 'Last modified', 'Album title'];
-	let selectedSortBy = sortByOptions[0];
 
 
 	const {
 	const {
 		albums: unsortedAlbums,
 		albums: unsortedAlbums,
@@ -39,15 +39,16 @@
 	};
 	};
 
 
 	$: {
 	$: {
-		if (selectedSortBy === 'Most recent photo') {
+		const { sortBy } = $albumViewSettings;
+		if (sortBy === 'Most recent photo') {
 			$albums = $unsortedAlbums.sort((a, b) =>
 			$albums = $unsortedAlbums.sort((a, b) =>
 				a.lastModifiedAssetTimestamp && b.lastModifiedAssetTimestamp
 				a.lastModifiedAssetTimestamp && b.lastModifiedAssetTimestamp
 					? sortByDate(a.lastModifiedAssetTimestamp, b.lastModifiedAssetTimestamp)
 					? sortByDate(a.lastModifiedAssetTimestamp, b.lastModifiedAssetTimestamp)
 					: sortByDate(a.updatedAt, b.updatedAt)
 					: sortByDate(a.updatedAt, b.updatedAt)
 			);
 			);
-		} else if (selectedSortBy === 'Last modified') {
+		} else if (sortBy === 'Last modified') {
 			$albums = $unsortedAlbums.sort((a, b) => sortByDate(a.updatedAt, b.updatedAt));
 			$albums = $unsortedAlbums.sort((a, b) => sortByDate(a.updatedAt, b.updatedAt));
-		} else if (selectedSortBy === 'Album title') {
+		} else if (sortBy === 'Album title') {
 			$albums = $unsortedAlbums.sort((a, b) => a.albumName.localeCompare(b.albumName));
 			$albums = $unsortedAlbums.sort((a, b) => a.albumName.localeCompare(b.albumName));
 		}
 		}
 	}
 	}
@@ -86,7 +87,7 @@
 			</div>
 			</div>
 		</LinkButton>
 		</LinkButton>
 
 
-		<Dropdown options={sortByOptions} bind:value={selectedSortBy} />
+		<Dropdown options={sortByOptions} bind:value={$albumViewSettings.sortBy} />
 	</div>
 	</div>
 
 
 	<!-- Album Card -->
 	<!-- Album Card -->