Compare commits

...

2 Commits

Author SHA1 Message Date
ItzCrazyKns
e45a9af9ff feat(config): add client side and server side config registries 2025-10-13 22:01:17 +05:30
ItzCrazyKns
e7fbab12ed feat(config): add getConfig method 2025-10-13 21:58:30 +05:30
3 changed files with 33 additions and 3 deletions

View File

@@ -0,0 +1,13 @@
"use client"
const getClientConfig = (key: string, defaultVal?: any) => {
return localStorage.getItem(key) ?? defaultVal ?? undefined
}
export const getTheme = () => getClientConfig('theme', 'dark')
export const getAutoImageSearch = () => Boolean(getClientConfig('autoImageSearch', 'true'))
export const getAutoVideoSearch = () => Boolean(getClientConfig('autoVideoSearch', 'true'))
export const getSystemInstructions = () => getClientConfig('systemInstructions', '')

View File

@@ -68,11 +68,11 @@ class ConfigManager {
}
}
this.currentConfig = this.migrateConfigNeeded(this.currentConfig);
this.currentConfig = this.migrateConfig(this.currentConfig);
}
}
private migrateConfigNeeded(config: Config): Config {
private migrateConfig(config: Config): Config {
/* TODO: Add migrations */
return config;
}
@@ -132,6 +132,22 @@ class ConfigManager {
this.saveConfig();
}
public getConfig(key: string, defaultValue?: any): any {
const nested = key.split('.');
let obj: any = this.currentConfig;
for (let i = 0; i < nested.length; i++) {
const part = nested[i];
if (obj == null) return defaultValue;
obj = obj[part];
}
return obj === undefined ? defaultValue : obj;
}
}
new ConfigManager();
const configManager = new ConfigManager();
export default configManager

View File

@@ -0,0 +1 @@
/* TODO: add server opts */