Merge pull request 'Settings changes' (#40) from sageTheDm/interstellar_ai:main into main

Reviewed-on: https://interstellardevelopment.org/code/code/React-Group/interstellar_ai/pulls/40
This commit is contained in:
Patrick 2024-09-24 15:02:31 +02:00
commit 21589915ff
6 changed files with 171 additions and 84 deletions

View file

@ -15,6 +15,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
const [newName, setNewName] = useState(''); const [newName, setNewName] = useState('');
const [newEmail, setNewEmail] = useState(''); const [newEmail, setNewEmail] = useState('');
const [newPassword, setNewPassword] = useState(''); const [newPassword, setNewPassword] = useState('');
const [preferredMessurement, setPreferredMessurement] = useState('Metric');
// Theme settings state // Theme settings state
const [backgroundColor, setBackgroundColor] = useState<string>(getComputedStyle(document.documentElement).getPropertyValue('--background-color').trim()); const [backgroundColor, setBackgroundColor] = useState<string>(getComputedStyle(document.documentElement).getPropertyValue('--background-color').trim());
@ -40,6 +41,12 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
// Theme selection // Theme selection
const [selectedTheme, setSelectedTheme] = useState<string>('default'); const [selectedTheme, setSelectedTheme] = useState<string>('default');
// API Keys
const [laPlateforme, setLaPlateforme] = useState<string>(getComputedStyle(document.documentElement).getPropertyValue('--online-la-plateforme').trim());
const [openAI, setOpenAI] = useState<string>(getComputedStyle(document.documentElement).getPropertyValue('--online-cheap-openai').trim());
const [anthropic, setAnthropic] = useState<string>(getComputedStyle(document.documentElement).getPropertyValue('--online-cheap-anthropic').trim());
const [google, setGoogle] = useState<string>(getComputedStyle(document.documentElement).getPropertyValue('--online-cheap-google').trim());
// Apply imported settings to the CSS variables // Apply imported settings to the CSS variables
const applySettings = (settings: any) => { const applySettings = (settings: any) => {
if (settings.backgroundColor) { if (settings.backgroundColor) {
@ -148,6 +155,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
return ( return (
<div className="settings-section"> <div className="settings-section">
<h2>General Settings</h2> <h2>General Settings</h2>
<div className="settings-option"> <div className="settings-option">
<label>Preferred Language</label> <label>Preferred Language</label>
<select <select
@ -166,6 +174,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
<option value="ar">Arabic</option> <option value="ar">Arabic</option>
</select> </select>
</div> </div>
<div className="settings-option"> <div className="settings-option">
<label>Preferred Currency</label> <label>Preferred Currency</label>
<select <select
@ -183,6 +192,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
<option value="inr">INR</option> <option value="inr">INR</option>
</select> </select>
</div> </div>
<div className="settings-option"> <div className="settings-option">
<label>Date Format</label> <label>Date Format</label>
<select <select
@ -196,6 +206,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
<option value="dd-mm-yyyy">DD-MM-YYYY</option> <option value="dd-mm-yyyy">DD-MM-YYYY</option>
</select> </select>
</div> </div>
<div className="settings-option"> <div className="settings-option">
<label>Time Format</label> <label>Time Format</label>
<select <select
@ -206,6 +217,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
<option value="24-hour">24 Hour</option> <option value="24-hour">24 Hour</option>
</select> </select>
</div> </div>
<div className="settings-option"> <div className="settings-option">
<label>Time Zone</label> <label>Time Zone</label>
<select <select
@ -224,6 +236,18 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
<option value="JST">JST</option> <option value="JST">JST</option>
</select> </select>
</div> </div>
{/* New Preferred Measurement Option */}
<div className="settings-option">
<label>Preferred Measurement</label>
<select
value={preferredMessurement}
onChange={(e) => setPreferredMessurement(e.target.value)}
>
<option value="Metric">Metric</option>
<option value="Imperial">Imperial</option>
</select>
</div>
</div> </div>
); );
@ -697,17 +721,55 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
</div> </div>
); );
case 'api':
return (
<div className="settings-section">
<div className="settings-option">
<label>La Plateforme</label>
<input
type="text"
value={laPlateforme}
onChange={(e) => setLaPlateforme(e.target.value)}
/>
</div>
<div className="settings-option">
<label>OpenAI</label>
<input
type="text"
value={openAI}
onChange={(e) => setOpenAI(e.target.value)}
/>
</div>
<div className="settings-option">
<label>Anthropic</label>
<input
type="text"
value={anthropic}
onChange={(e) => setAnthropic(e.target.value)}
/>
</div>
<div className="settings-option">
<label>Google</label>
<input
type="text"
value={google}
onChange={(e) => setGoogle(e.target.value)}
/>
</div>
</div>
);
case 'im/export': case 'im/export':
return ( return (
<div className="settings-section"> <div className="settings-section">
<h2>Import & Export</h2> <h2>Import & Export</h2>
<div className="settings-option"> <div className="settings-option">
<h3>Export the settings</h3> <h3>Export the settings</h3>
<button onClick={() => exportSettings(currentSettings)}>Export Settings</button> <button onClick={() => exportSettings(currentSettings)} className='export-button'>Export Settings</button>
</div> </div>
<div className="settings-option"> <div className="settings-option">
<h3>Import the settings</h3> <h3>Import the settings</h3>
<input type="file" onChange={handleImport} accept=".json" /> <input type="file" onChange={handleImport} accept=".json" className='import-file'/>
</div> </div>
</div> </div>
); );
@ -748,6 +810,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
fontSize, fontSize,
preferredLanguage, preferredLanguage,
preferredCurrency, preferredCurrency,
preferredMessurement,
dateFormat, dateFormat,
timeFormat, timeFormat,
timeZone, timeZone,
@ -755,7 +818,14 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
disableChatHistory, disableChatHistory,
disableAIMemory, disableAIMemory,
openSourceMode, openSourceMode,
};
// API Keys
laPlateforme,
openAI,
anthropic,
google
};
return ( return (
<div className="popup-overlay"> <div className="popup-overlay">
@ -768,6 +838,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
<li onClick={() => setActiveSection('theme')}>Theme</li> <li onClick={() => setActiveSection('theme')}>Theme</li>
<li onClick={() => setActiveSection('foss')}>FOSS</li> <li onClick={() => setActiveSection('foss')}>FOSS</li>
<li onClick={() => setActiveSection('account')}>Account</li> <li onClick={() => setActiveSection('account')}>Account</li>
<li onClick={() => setActiveSection('api')}>API Keys</li>
<li onClick={() => setActiveSection('im/export')}>Import/Export</li> <li onClick={() => setActiveSection('im/export')}>Import/Export</li>
</ul> </ul>
</div> </div>

View file

@ -0,0 +1 @@
{"backgroundColor":"#8B9635","textColor":"#474D22","inputBackgroundColor":"#ffffff","inputButtonColor":"#8B9635","inputButtonHoverColor":"#6b7c2b","userMessageBackgroundColor":"#8B9635","userMessageTextColor":"#000","aiMessageBackgroundColor":"#FCFCEB","aiMessageTextColor":"#000","buttonBackgroundColor":"#8B9635","buttonHoverBackgroundColor":"#6b7c2b","modelsBackgroundColor":"#ffffff","historyBackgroundColor":"#f9f9f9","leftPanelBackgroundColor":"#79832e","conversationBackgroundColor":"#79832e","popUpTextColor":"#000","inputBorderColor":"#8B9635","fontFamily":"'Poppins', 'sans-serif'","fontSize":"16px","preferredLanguage":"en","preferredCurrency":"usd","dateFormat":"mm/dd/yyyy","timeFormat":"12-hour","timeZone":"GMT","disableOnlineAI":false,"disableChatHistory":false,"disableAIMemory":false,"openSourceMode":false,"laPlateforme":"","openAI":"","anthropic":"","google":""}

View file

@ -0,0 +1 @@
{"backgroundColor":"#8B9635","textColor":"#474D22","inputBackgroundColor":"#ffffff","inputButtonColor":"#8B9635","inputButtonHoverColor":"#6b7c2b","userMessageBackgroundColor":"#8B9635","userMessageTextColor":"#000","aiMessageBackgroundColor":"#FCFCEB","aiMessageTextColor":"#000","buttonBackgroundColor":"#8B9635","buttonHoverBackgroundColor":"#6b7c2b","modelsBackgroundColor":"#ffffff","historyBackgroundColor":"#f9f9f9","leftPanelBackgroundColor":"#79832e","conversationBackgroundColor":"#79832e","popUpTextColor":"#000","inputBorderColor":"#8B9635","fontFamily":"'Poppins', 'sans-serif'","fontSize":"16px","preferredLanguage":"en","preferredCurrency":"usd","dateFormat":"mm/dd/yyyy","timeFormat":"12-hour","timeZone":"GMT","disableOnlineAI":false,"disableChatHistory":false,"disableAIMemory":false,"openSourceMode":false,"laPlateforme":"","openAI":"","anthropic":"","google":""}

View file

@ -0,0 +1 @@
{"backgroundColor":"#8B9635","textColor":"#474D22","inputBackgroundColor":"#ffffff","inputButtonColor":"#8B9635","inputButtonHoverColor":"#6b7c2b","userMessageBackgroundColor":"#8B9635","userMessageTextColor":"#000","aiMessageBackgroundColor":"#FCFCEB","aiMessageTextColor":"#000","buttonBackgroundColor":"#8B9635","buttonHoverBackgroundColor":"#6b7c2b","modelsBackgroundColor":"#ffffff","historyBackgroundColor":"#f9f9f9","leftPanelBackgroundColor":"#79832e","conversationBackgroundColor":"#79832e","popUpTextColor":"#000","inputBorderColor":"#8B9635","fontFamily":"'Poppins', 'sans-serif'","fontSize":"16px","preferredLanguage":"en","preferredCurrency":"usd","dateFormat":"mm/dd/yyyy","timeFormat":"12-hour","timeZone":"GMT","disableOnlineAI":false,"disableChatHistory":false,"disableAIMemory":false,"openSourceMode":false,"laPlateforme":"","openAI":"","anthropic":"","google":""}

View file

@ -147,3 +147,16 @@
display: block; display: block;
font-weight: bold; font-weight: bold;
} }
.export-button{
background-color: var(--button-hover-background-color);
padding: 10px;
margin: 10px;
border-radius: 10px;
}
.import-file{
background-color: var(--button-hover-background-color);
padding: 10px;
margin: 10px;
}

View file

@ -1,4 +1,4 @@
from flask import Flask, request, jsonify from flask import Flask, request, jsonify
from flask_cors import CORS from flask_cors import CORS
import secrets import secrets
import threading import threading