all settings sync

This commit is contained in:
2026-06-10 01:17:13 +09:30
parent c9672b4d85
commit 9166bebef7
13 changed files with 1672 additions and 181 deletions
+73
View File
@@ -0,0 +1,73 @@
import type { SettingsState } from "@/types/storage";
function detectLowEndDevice(): boolean {
const lowCoreCount =
navigator.hardwareConcurrency && navigator.hardwareConcurrency < 4;
const lowMemory =
(navigator as Navigator & { deviceMemory?: number }).deviceMemory != null &&
(navigator as Navigator & { deviceMemory?: number }).deviceMemory! <= 2;
return !!(lowCoreCount || lowMemory);
}
/** Default core settings for a fresh profile (`SettingsState` shape). */
export function getDefaultSettingsState(): SettingsState {
const isLowEndDevice = detectLowEndDevice();
return {
onoff: true,
animatedbk: true,
bksliderinput: "50",
transparencyEffects: false,
lessonalert: true,
defaultmenuorder: [],
menuitems: {
assessments: { toggle: true },
courses: { toggle: true },
dashboard: { toggle: true },
documents: { toggle: true },
forums: { toggle: true },
goals: { toggle: true },
home: { toggle: true },
messages: { toggle: true },
myed: { toggle: true },
news: { toggle: true },
notices: { toggle: true },
portals: { toggle: true },
reports: { toggle: true },
settings: { toggle: true },
timetable: { toggle: true },
welcome: { toggle: true },
},
menuorder: [],
subjectfilters: {},
selectedTheme: "",
selectedColor:
"linear-gradient(40deg, rgba(201,61,0,1) 0%, RGBA(170, 5, 58, 1) 100%)",
originalSelectedColor: "",
DarkMode: true,
animations: !isLowEndDevice,
assessmentsAverage: false,
defaultPage: "home",
shortcuts: [
{ name: "Outlook", enabled: true },
{ name: "Office", enabled: true },
{ name: "Google", enabled: true },
],
customshortcuts: [],
lettergrade: false,
notificationCollector: false,
newsSource: "australia",
iconOnlySidebar: false,
adaptiveThemeColour: false,
adaptiveThemeGradient: false,
adaptiveThemeColourTransition: true,
themeOfTheMonthDisabled: false,
autoCloudSettingsSync: true,
selectedFont: "rubik",
timeFormat: "24",
privacyStatementShown: false,
engageParentsAnnouncementShown: false,
bsCloudAutoSyncAnnouncementShown: false,
};
}