From fcb81e2a96f749d4bff3ac9d85d74a3c6867048c Mon Sep 17 00:00:00 2001 From: vcoppe Date: Fri, 5 Jul 2024 18:47:37 +0200 Subject: [PATCH] simplify mode management --- website/src/lib/components/Logo.svelte | 8 +++-- website/src/lib/components/Menu.svelte | 33 +++++++------------- website/src/lib/components/ModeSwitch.svelte | 29 +++++------------ website/src/lib/db.ts | 8 ----- website/src/locales/en.json | 1 - 5 files changed, 23 insertions(+), 56 deletions(-) diff --git a/website/src/lib/components/Logo.svelte b/website/src/lib/components/Logo.svelte index eb0205d2..a256453e 100644 --- a/website/src/lib/components/Logo.svelte +++ b/website/src/lib/components/Logo.svelte @@ -1,20 +1,22 @@ {#if company === 'gpx.studio'} Logo of gpx.studio. {:else if company === 'mapbox'} Logo of Mapbox. diff --git a/website/src/lib/components/Menu.svelte b/website/src/lib/components/Menu.svelte index ae00b296..966cea99 100644 --- a/website/src/lib/components/Menu.svelte +++ b/website/src/lib/components/Menu.svelte @@ -70,9 +70,7 @@ import LayerControlSettings from '$lib/components/layer-control/LayerControlSettings.svelte'; import { allowedPastes, ListFileItem, ListTrackItem } from '$lib/components/file-list/FileList'; import Export from '$lib/components/Export.svelte'; - - import { resetMode, setMode, systemPrefersMode } from 'mode-watcher'; - + import { mode, setMode, systemPrefersMode } from 'mode-watcher'; import { _, locale } from 'svelte-i18n'; import { languages } from '$lib/languages'; import { goto } from '$app/navigation'; @@ -84,7 +82,6 @@ temperatureUnits, elevationProfile, verticalFileView, - mode, currentBasemap, previousBasemap, currentOverlays, @@ -94,12 +91,6 @@ streetViewSource } = settings; - $: if ($mode === 'system') { - resetMode(); - } else { - setMode($mode); - } - let undoDisabled = derived(canUndo, ($canUndo) => !$canUndo); let redoDisabled = derived(canRedo, ($canRedo) => !$canRedo); @@ -126,6 +117,8 @@ } let layerSettingsOpen = false; + + $: selectedMode = $mode ?? $systemPrefersMode ?? 'light';
@@ -385,26 +378,22 @@ - {#if $mode === 'system'} - {#if $systemPrefersMode === 'light'} - - {:else if $systemPrefersMode === 'dark'} - - {:else} - - {/if} - {:else if $mode === 'light'} + {#if selectedMode === 'light'} - {:else if $mode === 'dark'} + {:else} {/if} {$_('menu.mode')} - + { + setMode(value); + }} + > {$_('menu.light')} {$_('menu.dark')} - {$_('menu.system')} diff --git a/website/src/lib/components/ModeSwitch.svelte b/website/src/lib/components/ModeSwitch.svelte index aa17f50c..854eaa5c 100644 --- a/website/src/lib/components/ModeSwitch.svelte +++ b/website/src/lib/components/ModeSwitch.svelte @@ -2,45 +2,30 @@ import * as Popover from '$lib/components/ui/popover'; import { Button } from '$lib/components/ui/button'; import { Moon, Sun } from 'lucide-svelte'; - import { resetMode, setMode, systemPrefersMode } from 'mode-watcher'; - import { settings } from '$lib/db'; + import { mode, resetMode, setMode, systemPrefersMode } from 'mode-watcher'; import { _ } from 'svelte-i18n'; - const { mode } = settings; - - $: if ($mode === 'system') { - resetMode(); - } else { - setMode($mode); - } - export let size = '20'; let open = false; + + $: selectedMode = $mode ?? $systemPrefersMode ?? 'light'; - {#if $mode === 'system'} - {#if $systemPrefersMode === 'light'} - - {:else if $systemPrefersMode === 'dark'} - - {:else} - - {/if} - {:else if $mode === 'light'} + {#if selectedMode === 'light'} - {:else if $mode === 'dark'} + {:else} {/if} - {#each ['light', 'dark', 'system'] as m} + {#each ['light', 'dark'] as m} diff --git a/website/src/lib/db.ts b/website/src/lib/db.ts index a51ba00e..7141368b 100644 --- a/website/src/lib/db.ts +++ b/website/src/lib/db.ts @@ -3,7 +3,6 @@ import { GPXFile, GPXStatistics, Track, TrackSegment, Waypoint, TrackPoint, type import { enableMapSet, enablePatches, applyPatches, type Patch, type WritableDraft, freeze, produceWithPatches } from 'immer'; import { writable, get, derived, type Readable, type Writable } from 'svelte/store'; import { gpxStatistics, initTargetMapBounds, splitAs, updateAllHidden, updateTargetMapBounds } from './stores'; -import { mode } from 'mode-watcher'; import { defaultBasemap, defaultBasemapTree, defaultOverlayTree, defaultOverlays, type CustomLayer, defaultOpacities } from './assets/layers'; import { applyToOrderedItemsFromFile, applyToOrderedSelectedItemsFromFile, selection } from '$lib/components/file-list/Selection'; import { ListFileItem, ListItem, ListTrackItem, ListLevel, ListTrackSegmentItem, ListWaypointItem, ListRootItem } from '$lib/components/file-list/FileList'; @@ -88,13 +87,6 @@ export const settings = { additionalDatasets: dexieSettingStore('additionalDatasets', []), elevationFill: dexieSettingStore<'slope' | 'surface' | undefined>('elevationFill', undefined), verticalFileView: dexieSettingStore('fileView', false), - mode: dexieSettingStore('mode', (() => { - let currentMode: string | undefined = get(mode); - if (currentMode === undefined) { - currentMode = 'system'; - } - return currentMode; - })()), minimizeRoutingMenu: dexieSettingStore('minimizeRoutingMenu', false), routing: dexieSettingStore('routing', true), routingProfile: dexieSettingStore('routingProfile', 'bike'), diff --git a/website/src/locales/en.json b/website/src/locales/en.json index 28d64ae9..d31c4f5b 100644 --- a/website/src/locales/en.json +++ b/website/src/locales/en.json @@ -45,7 +45,6 @@ "mode": "Mode", "light": "Light", "dark": "Dark", - "system": "System", "street_view_source": "Street view source", "mapillary": "Mapillary", "google": "Google",