Small further refactoring changes

This commit is contained in:
sageTheDM 2024-10-01 08:24:20 +02:00
parent 7a74e70520
commit 3fc7142907
2 changed files with 87 additions and 149 deletions

View file

@ -117,117 +117,92 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
localStorage.removeItem('accountEmail');
localStorage.removeItem('accountPassword');
};
// Effect hooks to update localStorage whenever any state changes
useEffect(() => {
const settings = {
activeSection,
preferredLanguage,
preferredCurrency,
dateFormat,
timeFormat,
timeZone,
selectedOption,
disableChatHistory,
disableAIMemory,
openSourceMode,
newName,
newEmail,
newPassword,
preferredMeasurement,
backgroundColor,
textColor,
inputBackgroundColor,
inputButtonColor,
inputButtonHoverColor,
userMessageBackgroundColor,
userMessageTextColor,
aiMessageBackgroundColor,
aiMessageTextColor,
buttonBackgroundColor,
buttonHoverBackgroundColor,
modelsBackgroundColor,
historyBackgroundColor,
leftPanelBackgroundColor,
conversationBackgroundColor,
popUpTextColor,
inputBorderColor,
fontFamily,
fontSize,
burgerMenu,
selectedTheme,
mistral,
openai,
anthropic,
google,
// Additional theme settings
const settings = {
userPreferences: {
activeSection,
preferredLanguage,
preferredCurrency,
dateFormat,
timeFormat,
timeZone,
selectedOption,
disableChatHistory,
disableAIMemory,
openSourceMode,
newName,
newEmail,
newPassword,
preferredMeasurement,
},
theme: {
backgroundColor,
textColor,
inputBackgroundColor,
inputButtonColor,
inputButtonHoverColor,
userMessageBackgroundColor,
userMessageTextColor,
aiMessageBackgroundColor,
aiMessageTextColor,
buttonBackgroundColor,
buttonHoverBackgroundColor,
modelsBackgroundColor,
historyBackgroundColor,
leftPanelBackgroundColor,
conversationBackgroundColor,
popUpTextColor,
inputBorderColor,
fontFamily,
fontSize,
selectedTheme,
faqSettings: {
faqBackgroundColor,
faqHeadingColor,
faqItemBackgroundColor,
faqItemHeadingColor,
faqItemTextColor,
faqItemHoverBackgroundColor,
},
popupSettings: {
popupBackgroundColor,
overlayTextColor,
},
},
apiKeys: {
mistral,
openai,
anthropic,
google,
},
generalSettings: {
burgerMenu,
},
};
// Effect hooks to update localStorage whenever any state changes
useEffect(() => {
// Flatten nested objects
const flattenedSettings = {
...settings.userPreferences,
...settings.theme,
...settings.theme.faqSettings,
...settings.theme.popupSettings,
...settings.apiKeys,
...settings.generalSettings,
};
// Update local storage
for (const [key, value] of Object.entries(settings)) {
if (typeof value === 'boolean') {
localStorage.setItem(key, JSON.stringify(value));
} else {
localStorage.setItem(key, value);
}
// Update localStorage for all settings
for (const [key, value] of Object.entries(flattenedSettings)) {
localStorage.setItem(key, typeof value === 'boolean' ? JSON.stringify(value) : value);
}
}, [
activeSection,
preferredLanguage,
preferredCurrency,
dateFormat,
timeFormat,
timeZone,
selectedOption,
disableChatHistory,
disableAIMemory,
openSourceMode,
newName,
newEmail,
newPassword,
preferredMeasurement,
backgroundColor,
textColor,
inputBackgroundColor,
inputButtonColor,
inputButtonHoverColor,
userMessageBackgroundColor,
userMessageTextColor,
aiMessageBackgroundColor,
aiMessageTextColor,
buttonBackgroundColor,
buttonHoverBackgroundColor,
modelsBackgroundColor,
historyBackgroundColor,
leftPanelBackgroundColor,
conversationBackgroundColor,
popUpTextColor,
inputBorderColor,
fontFamily,
fontSize,
burgerMenu,
selectedTheme,
mistral,
openai,
anthropic,
google,
// Additional theme settings
faqBackgroundColor,
faqHeadingColor,
faqItemBackgroundColor,
faqItemHeadingColor,
faqItemTextColor,
faqItemHoverBackgroundColor,
popupBackgroundColor,
overlayTextColor,
]);
}, [
...Object.values(settings.userPreferences),
...Object.values(settings.theme),
...Object.values(settings.theme.faqSettings),
...Object.values(settings.theme.popupSettings),
...Object.values(settings.apiKeys),
...Object.values(settings.generalSettings),
]);
useEffect(() => {
const savedOption = localStorage.getItem('radioSelection');
@ -1029,54 +1004,15 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
};
// Gather all settings into an object
// Gather current settings into an object
const currentSettings = {
backgroundColor,
textColor,
inputBackgroundColor,
inputButtonColor,
inputButtonHoverColor,
userMessageBackgroundColor,
userMessageTextColor,
aiMessageBackgroundColor,
aiMessageTextColor,
buttonBackgroundColor,
buttonHoverBackgroundColor,
modelsBackgroundColor,
historyBackgroundColor,
leftPanelBackgroundColor,
conversationBackgroundColor,
popUpTextColor,
inputBorderColor,
fontFamily,
fontSize,
preferredLanguage,
preferredCurrency,
preferredMeasurement,
dateFormat,
timeFormat,
timeZone,
selectedOption,
disableChatHistory,
disableAIMemory,
openSourceMode,
// API Keys
mistral,
openai,
anthropic,
google,
// Additional theme settings if needed
faqBackgroundColor,
faqHeadingColor,
faqItemBackgroundColor,
faqItemHeadingColor,
faqItemTextColor,
faqItemHoverBackgroundColor,
popupBackgroundColor,
overlayTextColor,
};
...settings.userPreferences,
...settings.theme,
...settings.theme.faqSettings,
...settings.theme.popupSettings,
...settings.apiKeys,
...settings.generalSettings,
};
return (
<div className="popup-overlay">