mirror of
https://github.com/immich-app/immich.git
synced 2026-03-20 16:37:54 -04:00
56 lines
1.2 KiB
TypeScript
56 lines
1.2 KiB
TypeScript
import { eventManager } from '$lib/managers/event-manager.svelte';
|
|
import { getConfig, getConfigDefaults, type SystemConfigDto } from '@immich/sdk';
|
|
import { cloneDeep } from 'lodash-es';
|
|
|
|
class SystemConfigManager {
|
|
#value?: SystemConfigDto = $state();
|
|
#defaultValue?: SystemConfigDto = $state();
|
|
|
|
constructor() {
|
|
eventManager.on('SystemConfigUpdate', (config) => (this.#value = config));
|
|
}
|
|
|
|
async init() {
|
|
await this.#loadConfig();
|
|
await this.#loadDefault();
|
|
}
|
|
|
|
get value() {
|
|
if (!this.#value) {
|
|
throw new Error('Server config manager must be initialized first');
|
|
}
|
|
|
|
return this.#value;
|
|
}
|
|
|
|
set value(config: SystemConfigDto) {
|
|
this.#value = config;
|
|
}
|
|
|
|
get defaultValue() {
|
|
if (!this.#defaultValue) {
|
|
throw new Error('Server config manager must be initialized first');
|
|
}
|
|
|
|
return this.#defaultValue;
|
|
}
|
|
|
|
cloneValue() {
|
|
return cloneDeep(this.value);
|
|
}
|
|
|
|
cloneDefaultValue() {
|
|
return cloneDeep(this.defaultValue);
|
|
}
|
|
|
|
async #loadConfig() {
|
|
this.#value = await getConfig();
|
|
}
|
|
|
|
async #loadDefault() {
|
|
this.#defaultValue = await getConfigDefaults();
|
|
}
|
|
}
|
|
|
|
export const systemConfigManager = new SystemConfigManager();
|