Merge pull request 'main' (#28) from React-Group/interstellar_ai:main into main

Reviewed-on: https://interstellardevelopment.org/code/code/YasinOnm08/interstellar_ai/pulls/28
This commit is contained in:
YasinOnm08 2024-09-26 15:04:49 +02:00
commit cc9c9df3d7
6 changed files with 63 additions and 38 deletions

View file

@ -11,7 +11,7 @@ const Login: React.FC = () => {
// Credentials state // Credentials state
const [email, setEmail] = useState(''); const [email, setEmail] = useState('');
const [password, setPassword] = useState(''); const [password, setPassword] = useState('');
const [accountName, setAccountName] = useState(''); // Set the account name const [accountName, setAccountName] = useState('');
const [newAccountEmail, setNewAccountEmail] = useState(''); const [newAccountEmail, setNewAccountEmail] = useState('');
const [newAccountPassword, setNewAccountPassword] = useState(''); const [newAccountPassword, setNewAccountPassword] = useState('');
const [newAccountName, setNewAccountName] = useState(''); const [newAccountName, setNewAccountName] = useState('');
@ -27,7 +27,7 @@ const Login: React.FC = () => {
// Function to toggle the sign-up popup // Function to toggle the sign-up popup
const toggleSignUpPopup = () => { const toggleSignUpPopup = () => {
setShowSignUpPopup(!showSignUpPopup); setShowSignUpPopup(!showSignUpPopup);
setShowLoginPopup(false); // Hide login popup when opening the sign-up popup setShowLoginPopup(false);
}; };
// Function to handle login // Function to handle login
@ -40,6 +40,11 @@ const Login: React.FC = () => {
} }
}; };
const handleLogout = () => {
setIsLoggedIn(false);
setShowSettingsPopup(false); // Optionally close settings popup on logout
};
// Function to handle account creation // Function to handle account creation
const handleCreateAccount = () => { const handleCreateAccount = () => {
console.log('New Account Created:', newAccountEmail, newAccountPassword); console.log('New Account Created:', newAccountEmail, newAccountPassword);
@ -53,7 +58,6 @@ const Login: React.FC = () => {
return ( return (
<div> <div>
{/* Login or Settings Button */} {/* Login or Settings Button */}
<button className='header-login-button' onClick={isLoggedIn ? toggleSettingsPopup : toggleLoginPopup}> <button className='header-login-button' onClick={isLoggedIn ? toggleSettingsPopup : toggleLoginPopup}>
{isLoggedIn ? 'Settings' : 'Log In'} {isLoggedIn ? 'Settings' : 'Log In'}
</button> </button>
@ -130,7 +134,7 @@ const Login: React.FC = () => {
type="text" type="text"
placeholder="Name" placeholder="Name"
value={newAccountName} value={newAccountName}
onChange={(e) => setAccountName(e.target.value)} onChange={(e) => setNewAccountName(e.target.value)}
/> />
</div> </div>
@ -158,7 +162,7 @@ const Login: React.FC = () => {
)} )}
{/* Conditional rendering of the Settings Popup */} {/* Conditional rendering of the Settings Popup */}
{showSettingsPopup && <Settings closeSettings={toggleSettingsPopup} accountName={accountName} />} {showSettingsPopup && <Settings closeSettings={toggleSettingsPopup} accountName={accountName}/>}
</div> </div>
); );
}; };

View file

@ -19,6 +19,12 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
return false; // Default to false if item is null or empty return false; // Default to false if item is null or empty
}; };
interface SettingsProps {
closeSettings: () => void;
accountName: string;
handleLogout: () => void; // Add this line to accept handleLogout as a prop
}
// Active section // Active section
const [activeSection, setActiveSection] = useState(() => localStorage.getItem('activeSection') || 'general'); const [activeSection, setActiveSection] = useState(() => localStorage.getItem('activeSection') || 'general');
@ -842,6 +848,16 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = (
onChange={(e) => setNewPassword(e.target.value)} onChange={(e) => setNewPassword(e.target.value)}
/> />
</div> </div>
<div className="settings-option">
<button
onClick={() => {
closeSettings(); // Optionally close settings after logout
}}
className="logout-button"
>
Logout
</button>
</div>
</div> </div>
); );

View file

@ -20,3 +20,4 @@ export const exportSettings = (settings: any) => {
reader.readAsText(file); reader.readAsText(file);
}; };

View file

@ -1,18 +1,19 @@
import Header from "./components/Header"; import { ReactNode } from 'react';
export const metadata = { export const metadata = {
title: 'AI Assistant | Interstellar Development', title: 'AI Assistant | Interstellar Development',
description: 'A little AI chat that is able to assist you in little tasks', description: 'A little AI chat that is able to assist you in little tasks',
} };
export default function RootLayout({ export default function RootLayout({ children }: { children: ReactNode }) {
children,
}: {
children: React.ReactNode
}) {
return ( return (
<html lang="en"> <html lang="en">
<head>
<title>{metadata.title}</title>
<meta name="description" content={metadata.description} />
{/* Tried adding the favicon here */}
<link rel="icon" href="./public/favicon.ico" type="image/x-icon" />
</head>
<body> <body>
<main>{children}</main> <main>{children}</main>
</body> </body>

View file

@ -7,6 +7,7 @@ import Documentation from './components/Documentation'; // Ensure the import pat
import History from './components/History'; import History from './components/History';
import Models from './components/Models'; import Models from './components/Models';
import Credits from './components/Credits'; import Credits from './components/Credits';
import Head from 'next/head';
import './styles/master.css'; import './styles/master.css';
const LandingPage: React.FC = () => { const LandingPage: React.FC = () => {
@ -51,6 +52,7 @@ const LandingPage: React.FC = () => {
}; };
return ( return (
<>
<div className="container"> <div className="container">
<Header <Header
toggleDivs={toggleDivs} toggleDivs={toggleDivs}
@ -74,6 +76,7 @@ const LandingPage: React.FC = () => {
{view === 'Credits' && <Credits />} {/* Now Credits will render properly */} {view === 'Credits' && <Credits />} {/* Now Credits will render properly */}
</div> </div>
</div> </div>
</>
); );
}; };

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB