Add new config format

This commit is contained in:
Meierschlumpf
2022-12-04 17:36:30 +01:00
parent b2f5149527
commit d5a3b3f3ba
76 changed files with 2461 additions and 1034 deletions

45
src/config/provider.tsx Normal file
View File

@@ -0,0 +1,45 @@
import { createContext, ReactNode, useContext, useEffect, useState } from 'react';
import shallow from 'zustand/shallow';
import { useColorTheme } from '../tools/color';
import { ConfigType } from '../types/config';
import { useConfigStore } from './store';
export type ConfigContextType = {
config: ConfigType | undefined;
name: string | undefined;
setConfigName: (name: string) => void;
};
const ConfigContext = createContext<ConfigContextType>({
name: 'unknown',
config: undefined,
setConfigName: () => console.error('Provider not set'),
});
export const ConfigProvider = ({ children }: { children: ReactNode }) => {
const [configName, setConfigName] = useState<string>();
const { configs } = useConfigStore((s) => ({ configs: s.configs }), shallow);
const { setPrimaryColor, setSecondaryColor, setPrimaryShade } = useColorTheme();
const currentConfig = configs.find((c) => c.configProperties.name === configName);
useEffect(() => {
setPrimaryColor(currentConfig?.settings.customization.colors.primary || 'red');
setSecondaryColor(currentConfig?.settings.customization.colors.secondary || 'orange');
setPrimaryShade(currentConfig?.settings.customization.colors.shade || 6);
}, [configName]);
return (
<ConfigContext.Provider
value={{
name: configName,
config: currentConfig,
setConfigName: (name: string) => setConfigName(name),
}}
>
{children}
</ConfigContext.Provider>
);
};
export const useConfigContext = () => useContext(ConfigContext);