mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2025-07-05 02:59:23 +00:00
79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
/**
|
|
* Configuration Store - Manages application settings and provides defaults
|
|
*/
|
|
import { reactive } from "vue";
|
|
import { getSetting, watchSettings } from "@/utils/settings";
|
|
|
|
const configStore = reactive({
|
|
// Server connection config
|
|
serverConfig: {
|
|
provider: getSetting("server.provider"),
|
|
domain: getSetting("server.domain"),
|
|
classNumber: getSetting("server.classNumber")
|
|
},
|
|
|
|
// Default subjects
|
|
defaultSubjects: [
|
|
{ key: "语文", name: "语文" },
|
|
{ key: "数学", name: "数学" },
|
|
{ key: "英语", name: "英语" },
|
|
{ key: "物理", name: "物理" },
|
|
{ key: "化学", name: "化学" },
|
|
{ key: "生物", name: "生物" },
|
|
{ key: "政治", name: "政治" },
|
|
{ key: "历史", name: "历史" },
|
|
{ key: "地理", name: "地理" },
|
|
{ key: "其他", name: "其他" }
|
|
],
|
|
|
|
// Feature flags
|
|
featureFlags: {
|
|
get autoSave() { return getSetting("edit.autoSave"); },
|
|
get blockNonTodayAutoSave() { return getSetting("edit.blockNonTodayAutoSave"); },
|
|
get confirmNonTodaySave() { return getSetting("edit.confirmNonTodaySave"); },
|
|
get refreshBeforeEdit() { return getSetting("edit.refreshBeforeEdit"); },
|
|
get emptySubjectDisplay() { return getSetting("display.emptySubjectDisplay"); },
|
|
get dynamicSort() { return getSetting("display.dynamicSort"); },
|
|
get showRandomPickerButton() { return getSetting("randomPicker.enabled"); },
|
|
get showAntiScreenBurnCard() { return getSetting("display.showAntiScreenBurnCard"); }
|
|
},
|
|
|
|
// Data accessor
|
|
dataKey: "",
|
|
|
|
// Methods
|
|
/**
|
|
* Initialize configuration from settings
|
|
*/
|
|
initialize() {
|
|
this.updateServerConfig();
|
|
},
|
|
|
|
/**
|
|
* Update server configuration from settings
|
|
*/
|
|
updateServerConfig() {
|
|
this.serverConfig.provider = getSetting("server.provider");
|
|
this.serverConfig.domain = getSetting("server.domain");
|
|
this.serverConfig.classNumber = getSetting("server.classNumber");
|
|
|
|
// Update the data key
|
|
this.dataKey = this.serverConfig.provider === "server"
|
|
? `${this.serverConfig.domain}/${this.serverConfig.classNumber}`
|
|
: this.serverConfig.classNumber;
|
|
},
|
|
|
|
/**
|
|
* Set up settings watcher
|
|
* @param {Function} callback - Function to call when settings change
|
|
* @returns {Function} Unwatch function
|
|
*/
|
|
watchSettings(callback) {
|
|
return watchSettings(() => {
|
|
this.updateServerConfig();
|
|
if (callback) callback();
|
|
});
|
|
}
|
|
});
|
|
|
|
export default configStore; |