mirror of
https://github.com/wukko/cobalt.git
synced 2024-11-15 12:50:01 +00:00
web/settings: add advanced & debug pages
This commit is contained in:
parent
49f9057b6b
commit
a6ddceb643
7 changed files with 123 additions and 1 deletions
|
@ -3,6 +3,8 @@
|
||||||
"page.video": "video",
|
"page.video": "video",
|
||||||
"page.audio": "audio",
|
"page.audio": "audio",
|
||||||
"page.metadata": "metadata",
|
"page.metadata": "metadata",
|
||||||
|
"page.advanced": "advanced",
|
||||||
|
"page.debug": "debug information",
|
||||||
|
|
||||||
"section.general": "general",
|
"section.general": "general",
|
||||||
"section.save": "save",
|
"section.save": "save",
|
||||||
|
@ -80,5 +82,9 @@
|
||||||
"language.auto.title": "use default browser language",
|
"language.auto.title": "use default browser language",
|
||||||
"language.auto.description": "automatically picks the best language for you. if preferred browser language isn't available, english is used instead. disable this toggle to pick a language manually.",
|
"language.auto.description": "automatically picks the best language for you. if preferred browser language isn't available, english is used instead. disable this toggle to pick a language manually.",
|
||||||
"language.preferred.title": "preferred language",
|
"language.preferred.title": "preferred language",
|
||||||
"language.preferred.description": "language used for interface and content."
|
"language.preferred.description": "language used for interface and content.",
|
||||||
|
|
||||||
|
"advanced.debug": "debug",
|
||||||
|
"advanced.debug.title": "enable debug features",
|
||||||
|
"advanced.debug.description": "gives you access to a page with app & device info useful for debugging."
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,9 @@ const defaultSettings: CobaltSettings = {
|
||||||
reduceAnimations: false,
|
reduceAnimations: false,
|
||||||
reduceTransparency: false,
|
reduceTransparency: false,
|
||||||
},
|
},
|
||||||
|
advanced: {
|
||||||
|
debug: false,
|
||||||
|
},
|
||||||
appearance: {
|
appearance: {
|
||||||
theme: "auto",
|
theme: "auto",
|
||||||
language: defaultLocale,
|
language: defaultLocale,
|
||||||
|
|
|
@ -18,6 +18,10 @@ type CobaltSettingsAppearance = {
|
||||||
autoLanguage: boolean,
|
autoLanguage: boolean,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type CobaltSettingsAdvanced = {
|
||||||
|
debug: boolean,
|
||||||
|
};
|
||||||
|
|
||||||
type CobaltSettingsGeneral = {
|
type CobaltSettingsGeneral = {
|
||||||
customProcessingEndpoint: string,
|
customProcessingEndpoint: string,
|
||||||
seenOnboarding: boolean,
|
seenOnboarding: boolean,
|
||||||
|
@ -45,6 +49,7 @@ type CobaltSettingsPrivacy = {
|
||||||
export type CobaltSettings = {
|
export type CobaltSettings = {
|
||||||
schemaVersion: number,
|
schemaVersion: number,
|
||||||
accessibility: CobaltSettingsAccessibility,
|
accessibility: CobaltSettingsAccessibility,
|
||||||
|
advanced: CobaltSettingsAdvanced,
|
||||||
appearance: CobaltSettingsAppearance,
|
appearance: CobaltSettingsAppearance,
|
||||||
general: CobaltSettingsGeneral,
|
general: CobaltSettingsGeneral,
|
||||||
save: CobaltSettingsSave,
|
save: CobaltSettingsSave,
|
||||||
|
|
23
web/src/lib/version.ts
Normal file
23
web/src/lib/version.ts
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
type VersionResponse = {
|
||||||
|
commit: string;
|
||||||
|
branch: string;
|
||||||
|
remote: string;
|
||||||
|
version: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const fetchVersion = async function () {
|
||||||
|
const response: VersionResponse | undefined = await fetch('/version.json')
|
||||||
|
.then(r => r.json())
|
||||||
|
.catch(() => {});
|
||||||
|
|
||||||
|
if (!response) return {
|
||||||
|
commit: "unknown",
|
||||||
|
branch: "unknown",
|
||||||
|
remote: "unknown",
|
||||||
|
version: "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const version = await fetchVersion();
|
|
@ -1,6 +1,8 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { page } from "$app/stores";
|
import { page } from "$app/stores";
|
||||||
|
|
||||||
|
import settings from "$lib/settings";
|
||||||
|
|
||||||
import { t } from "$lib/i18n/translations";
|
import { t } from "$lib/i18n/translations";
|
||||||
|
|
||||||
import SettingsNavTab from "$components/settings/SettingsNavTab.svelte";
|
import SettingsNavTab from "$components/settings/SettingsNavTab.svelte";
|
||||||
|
@ -11,8 +13,11 @@
|
||||||
import IconMovie from "@tabler/icons-svelte/IconMovie.svelte";
|
import IconMovie from "@tabler/icons-svelte/IconMovie.svelte";
|
||||||
import IconMusic from "@tabler/icons-svelte/IconMusic.svelte";
|
import IconMusic from "@tabler/icons-svelte/IconMusic.svelte";
|
||||||
import IconFileSettings from "@tabler/icons-svelte/IconFileSettings.svelte";
|
import IconFileSettings from "@tabler/icons-svelte/IconFileSettings.svelte";
|
||||||
|
import IconSettingsBolt from "@tabler/icons-svelte/IconSettingsBolt.svelte";
|
||||||
|
import IconBug from "@tabler/icons-svelte/IconBug.svelte";
|
||||||
|
|
||||||
import IconChevronLeft from "@tabler/icons-svelte/IconChevronLeft.svelte";
|
import IconChevronLeft from "@tabler/icons-svelte/IconChevronLeft.svelte";
|
||||||
|
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { defaultSettingsPage } from "$lib/settings/defaults";
|
import { defaultSettingsPage } from "$lib/settings/defaults";
|
||||||
|
|
||||||
|
@ -100,6 +105,24 @@
|
||||||
<IconFileSettings />
|
<IconFileSettings />
|
||||||
</SettingsNavTab>
|
</SettingsNavTab>
|
||||||
</SettingsNavSection>
|
</SettingsNavSection>
|
||||||
|
<SettingsNavSection>
|
||||||
|
<SettingsNavTab
|
||||||
|
tabName="advanced"
|
||||||
|
tabLink="advanced"
|
||||||
|
iconColor="gray"
|
||||||
|
>
|
||||||
|
<IconSettingsBolt />
|
||||||
|
</SettingsNavTab>
|
||||||
|
{#if $settings.advanced.debug}
|
||||||
|
<SettingsNavTab
|
||||||
|
tabName="debug"
|
||||||
|
tabLink="advanced/debug"
|
||||||
|
iconColor="gray"
|
||||||
|
>
|
||||||
|
<IconBug />
|
||||||
|
</SettingsNavTab>
|
||||||
|
{/if}
|
||||||
|
</SettingsNavSection>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
15
web/src/routes/settings/advanced/+page.svelte
Normal file
15
web/src/routes/settings/advanced/+page.svelte
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<script>
|
||||||
|
import { t } from "$lib/i18n/translations";
|
||||||
|
|
||||||
|
import SettingsCategory from "$components/settings/SettingsCategory.svelte";
|
||||||
|
import SettingsToggle from "$components/buttons/SettingsToggle.svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<SettingsCategory sectionId="debug" title={$t("settings.advanced.debug")}>
|
||||||
|
<SettingsToggle
|
||||||
|
settingContext="advanced"
|
||||||
|
settingId="debug"
|
||||||
|
title={$t("settings.advanced.debug.title")}
|
||||||
|
description={$t("settings.advanced.debug.description")}
|
||||||
|
/>
|
||||||
|
</SettingsCategory>
|
47
web/src/routes/settings/advanced/debug/+page.svelte
Normal file
47
web/src/routes/settings/advanced/debug/+page.svelte
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { device, app } from "$lib/device";
|
||||||
|
import { version } from "$lib/version";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="advanced-page">
|
||||||
|
device:
|
||||||
|
<div class="message-container subtext">
|
||||||
|
is.iPad: {device.is.iPad}
|
||||||
|
is.iPhone: {device.is.iPhone}
|
||||||
|
is.iOS: {device.is.iOS}
|
||||||
|
is.android: {device.is.android}
|
||||||
|
is.mobile: {device.is.mobile}
|
||||||
|
preferredLocale: {device.preferredLocale}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
app:
|
||||||
|
<div class="message-container subtext">
|
||||||
|
is.installed: {app.is.installed}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
version:
|
||||||
|
<div class="message-container subtext">
|
||||||
|
version: {version.version}
|
||||||
|
commit: {version.commit.slice(0, 7)}
|
||||||
|
branch: {version.branch}
|
||||||
|
remote: {version.remote}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#advanced-page {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: var(--padding);
|
||||||
|
gap: var(--padding)
|
||||||
|
}
|
||||||
|
|
||||||
|
.message-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
line-break: anywhere;
|
||||||
|
border-radius: var(--border-radius);
|
||||||
|
background: var(--button);
|
||||||
|
padding: var(--padding);
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in a new issue