diff --git a/materialious/src/lib/Settings.svelte b/materialious/src/lib/Settings.svelte
index d50cf775..2b42706c 100644
--- a/materialious/src/lib/Settings.svelte
+++ b/materialious/src/lib/Settings.svelte
@@ -10,6 +10,7 @@
import { _ } from 'svelte-i18n';
import { get } from 'svelte/store';
import { ensureNoTrailingSlash, letterCase, titleCase, titleCases } from './misc';
+ import { getPages } from './navPages';
import {
authStore,
darkModeStore,
@@ -21,6 +22,7 @@
interfaceAmoledTheme,
interfaceAutoExpandComments,
interfaceAutoExpandDesc,
+ interfaceDefaultPage,
interfaceDisplayThumbnailAvatars,
interfaceForceCase,
interfaceLowBandwidthMode,
@@ -66,6 +68,7 @@
let region = get(interfaceRegionStore);
let forceCase = get(interfaceForceCase);
let defaultLanguage = get(playerDefaultLanguage);
+ let defaultPage = get(interfaceDefaultPage);
const languageNames = ISO6391.getAllCodes().map((code) =>
ISO6391.getName(code).toLocaleLowerCase()
@@ -385,6 +388,24 @@
arrow_drop_down
+
+
+
+ arrow_drop_down
+
+
{#if !Capacitor.isNativePlatform()}
{$_('layout.bookmarklet')}
diff --git a/materialious/src/lib/externalSettings.ts b/materialious/src/lib/externalSettings.ts
index 2d5abb2d..07706050 100644
--- a/materialious/src/lib/externalSettings.ts
+++ b/materialious/src/lib/externalSettings.ts
@@ -8,6 +8,7 @@ import {
interfaceAmoledTheme,
interfaceAutoExpandComments,
interfaceAutoExpandDesc,
+ interfaceDefaultPage,
interfaceDisplayThumbnailAvatars,
interfaceForceCase,
interfaceLowBandwidthMode,
@@ -207,6 +208,11 @@ const persistedStores: { name: string, store: Writable
, type: 'string' | 'b
name: 'defaultLanguage',
store: playerDefaultLanguage,
type: 'boolean'
+ },
+ {
+ name: 'defaultPage',
+ store: interfaceDefaultPage,
+ type: 'string'
}
];
diff --git a/materialious/src/lib/i18n/locales/en.json b/materialious/src/lib/i18n/locales/en.json
index 7ab2e622..fea99828 100644
--- a/materialious/src/lib/i18n/locales/en.json
+++ b/materialious/src/lib/i18n/locales/en.json
@@ -24,6 +24,7 @@
"letterCase": "Letter case for titles",
"hideReplies": "Hide replies",
"hideVideo": "Hide video",
+ "defaultPage": "Default page",
"syncParty": {
"userJoined": "User joined your watch party.",
"userLeft": "User left your watch party.",
diff --git a/materialious/src/lib/navPages.ts b/materialious/src/lib/navPages.ts
new file mode 100644
index 00000000..28d14a14
--- /dev/null
+++ b/materialious/src/lib/navPages.ts
@@ -0,0 +1,39 @@
+import { _ } from 'svelte-i18n';
+import { get } from 'svelte/store';
+
+
+// Must be a func do to how i18n is loaded
+export function getPages(): { icon: string, href: string, name: string, requiresAuth: boolean; }[] {
+ return [
+ {
+ icon: 'home',
+ href: '/',
+ name: get(_)('pages.home'),
+ requiresAuth: false
+ },
+ {
+ icon: 'whatshot',
+ href: '/trending',
+ name: get(_)('pages.trending'),
+ requiresAuth: false
+ },
+ {
+ icon: 'subscriptions',
+ href: '/subscriptions',
+ name: get(_)('pages.subscriptions'),
+ requiresAuth: true
+ },
+ {
+ icon: 'video_library',
+ href: '/playlists',
+ name: get(_)('pages.playlists'),
+ requiresAuth: true
+ },
+ {
+ icon: 'history',
+ href: '/history',
+ name: get(_)('pages.history'),
+ requiresAuth: true
+ }
+ ];
+}
\ No newline at end of file
diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts
index 10cc4374..ad0708c5 100644
--- a/materialious/src/lib/store.ts
+++ b/materialious/src/lib/store.ts
@@ -67,6 +67,7 @@ export const interfaceAutoExpandDesc: Writable = persisted('autoExpandD
export const interfaceAmoledTheme = persisted('amoledTheme', false);
export const interfaceLowBandwidthMode = persisted('lowBandwidthMode', false);
export const interfaceDisplayThumbnailAvatars = persisted('disableThumbnailAvatars', false);
+export const interfaceDefaultPage = persisted('defaultPage', '/');
export const sponsorBlockStore = persisted('sponsorBlock', true);
export const sponsorBlockUrlStore: Writable = persisted(
diff --git a/materialious/src/lib/theme.ts b/materialious/src/lib/theme.ts
index b7d887fd..4cf28eae 100644
--- a/materialious/src/lib/theme.ts
+++ b/materialious/src/lib/theme.ts
@@ -20,7 +20,7 @@ export async function getDynamicTheme(mode?: string): Promise
import { afterNavigate, beforeNavigate, goto } from '$app/navigation';
- import { navigating } from '$app/stores';
+
+ import { navigating, page } from '$app/stores';
import '$lib/android/http/androidRequests';
import colorTheme, { convertToHexColorCode } from '$lib/android/plugins/colorTheme';
import { getFeed } from '$lib/api/index';
@@ -8,6 +9,7 @@
import { bookmarkletLoadFromUrl, loadSettingsFromEnv } from '$lib/externalSettings';
import Logo from '$lib/Logo.svelte';
import MiniPlayer from '$lib/MiniPlayer.svelte';
+ import { getPages } from '$lib/navPages';
import PageLoading from '$lib/PageLoading.svelte';
import Search from '$lib/Search.svelte';
import Settings from '$lib/Settings.svelte';
@@ -17,6 +19,7 @@
darkModeStore,
instanceStore,
interfaceAmoledTheme,
+ interfaceDefaultPage,
showWarningStore,
syncPartyPeerStore,
themeColorStore
@@ -47,39 +50,6 @@
let notifications: Notification[] = [];
- const pages = [
- {
- icon: 'home',
- href: '/',
- name: $_('pages.home'),
- requiresAuth: false
- },
- {
- icon: 'whatshot',
- href: '/trending',
- name: $_('pages.trending'),
- requiresAuth: false
- },
- {
- icon: 'subscriptions',
- href: '/subscriptions',
- name: $_('pages.subscriptions'),
- requiresAuth: true
- },
- {
- icon: 'video_library',
- href: '/playlists',
- name: $_('pages.playlists'),
- requiresAuth: true
- },
- {
- icon: 'history',
- href: '/history',
- name: $_('pages.history'),
- requiresAuth: true
- }
- ];
-
interfaceAmoledTheme.subscribe(() => {
setAmoledTheme();
});
@@ -177,6 +147,19 @@
onMount(async () => {
ui();
+ if (
+ $interfaceDefaultPage &&
+ $interfaceDefaultPage !== '/' &&
+ $interfaceDefaultPage.startsWith('/') &&
+ $page.url.pathname === '/'
+ ) {
+ getPages().forEach((page) => {
+ if (page.href === $interfaceDefaultPage && (!page.requiresAuth || $authStore)) {
+ goto($interfaceDefaultPage);
+ }
+ });
+ }
+
scrollableRoot = document.querySelector('.root');
loadSettingsFromEnv();
@@ -215,7 +198,7 @@