diff options
| -rw-r--r-- | ui/lib/constants.js | 4 | ||||
| -rw-r--r-- | ui/routes/+layout.svelte | 30 |
2 files changed, 31 insertions, 3 deletions
diff --git a/ui/lib/constants.js b/ui/lib/constants.js index c001f6d..5456414 100644 --- a/ui/lib/constants.js +++ b/ui/lib/constants.js @@ -1,2 +1,4 @@ -export const STORE_KEY_CHANNELS_DATA = 'pilcrow:channelsData'; export const EPOCH_STRING = '1970-01-01T00:00:00Z'; + +export const STORE_KEY_CHANNELS_DATA = 'pilcrow:channelsData'; +export const STORE_KEY_LAST_ACTIVE = 'pilcrow:lastActiveChannel'; diff --git a/ui/routes/+layout.svelte b/ui/routes/+layout.svelte index 750f1f8..18c0541 100644 --- a/ui/routes/+layout.svelte +++ b/ui/routes/+layout.svelte @@ -1,11 +1,15 @@ <script> import { setContext } from 'svelte'; - import { onNavigate } from '$app/navigation'; + import { browser } from '$app/environment'; + import { goto, onNavigate, afterNavigate } from '$app/navigation'; + import { page } from '$app/stores'; import '../app.css'; import logo from '$lib/assets/logo.png'; - + import { STORE_KEY_LAST_ACTIVE } from '$lib/constants'; import { currentUser } from '$lib/store'; + let activeChannel = $derived($page.params.channel); + let pageContext = $state({ showMenu: false }); @@ -16,6 +20,28 @@ pageContext.showMenu = !pageContext.showMenu; } + function getLastActiveChannel() { + return ( + browser && JSON.parse(localStorage.getItem(STORE_KEY_LAST_ACTIVE)) + ); + } + + function setLastActiveChannel(channelId) { + browser && localStorage.setItem( + STORE_KEY_LAST_ACTIVE, + JSON.stringify(channelId) + ); + } + + afterNavigate(() => { + const lastActiveChannel = getLastActiveChannel(); + if (!activeChannel && lastActiveChannel) { + goto(`/ch/${lastActiveChannel}`); + } else { + setLastActiveChannel(activeChannel || null); + } + }); + onNavigate(() => { pageContext.showMenu = false; }); |
