Fix: App Pin & Downloads (Filesystem Changes)

This commit is contained in:
Youwes09
2026-06-05 17:42:32 -05:00
parent 8aa92e6b54
commit 5dfbc80bbe
16 changed files with 577 additions and 490 deletions
+4 -4
View File
@@ -1,11 +1,11 @@
import type { Platform } from '$lib/platform-adapters/types'
export type AppStatus = 'booting' | 'not-configured' | 'auth' | 'ready' | 'error'
export type AppStatus = 'booting' | 'not-configured' | 'auth' | 'locked' | 'ready' | 'error'
class AppStore {
settingsOpen: boolean = $state(false)
navPage: string = $state('')
scrollPositions: Map<string, number> = $state(new Map())
settingsOpen: boolean = $state(false)
navPage: string = $state('')
scrollPositions: Map<string, number> = $state(new Map())
setSettingsOpen(next: boolean) { this.settingsOpen = next }
setNavPage(next: string) { this.navPage = next }
+11 -2
View File
@@ -3,6 +3,7 @@ import { initPlatformService } from '$lib/platform-service'
import { platformService } from '$lib/platform-service'
import { probeServer, loginBasic, loginUI } from '$lib/core/auth'
import { appState } from '$lib/state/app.svelte'
import { settingsState } from '$lib/state/settings.svelte'
const MAX_ATTEMPTS = 40
const BG_MAX_ATTEMPTS = 120
@@ -31,13 +32,21 @@ export async function initPlatform(): Promise<void> {
appState.appDir = await platformService.getAppDir()
}
function pinLockEnabled(): boolean {
return (
settingsState.settings.appLockEnabled === true &&
typeof settingsState.settings.appLockPin === 'string' &&
settingsState.settings.appLockPin.length >= 4
)
}
function handleProbeSuccess(gen: number) {
if (gen !== probeGeneration) return
boot.failed = false
boot.skipped = false
boot.serverProbeOk = true
appState.authenticated = true
appState.status = 'ready'
appState.status = pinLockEnabled() ? 'locked' : 'ready'
}
function handleAuthRequired(
@@ -144,7 +153,7 @@ export async function submitLogin(): Promise<void> {
boot.loginError = null
boot.serverProbeOk = true
appState.authenticated = true
appState.status = 'ready'
appState.status = pinLockEnabled() ? 'locked' : 'ready'
} catch (e: unknown) {
boot.loginError = e instanceof Error ? e.message : 'Login failed'
} finally {
+6 -2
View File
@@ -2,12 +2,16 @@ import type { Settings } from '$lib/types/settings'
import { DEFAULT_SETTINGS } from '$lib/types/settings'
import { saveSettings } from '$lib/core/persistence/persist'
export const settingsState = $state({ settings: { ...DEFAULT_SETTINGS } as Settings })
export const settingsState = $state({
settings: { ...DEFAULT_SETTINGS } as Settings,
loaded: false,
})
export async function loadSettingsIntoState(raw: unknown) {
if (raw && typeof raw === 'object') {
Object.assign(settingsState.settings, raw)
}
settingsState.loaded = true
if (typeof document !== 'undefined') {
document.documentElement.style.zoom = String(settingsState.settings.uiZoom ?? 1.0)
}
@@ -16,7 +20,6 @@ export async function loadSettingsIntoState(raw: unknown) {
export function updateSettings(patch: Partial<Settings>) {
Object.assign(settingsState.settings, patch)
void saveSettings({ storeVersion: 2, settings: settingsState.settings })
if (typeof document !== 'undefined' && patch.uiZoom !== undefined) {
document.documentElement.style.zoom = String(patch.uiZoom)
}
@@ -24,5 +27,6 @@ export function updateSettings(patch: Partial<Settings>) {
export function resetSettings() {
settingsState.settings = { ...DEFAULT_SETTINGS }
settingsState.loaded = true
void saveSettings({ storeVersion: 2, settings: settingsState.settings })
}