feat: Introduce multi-platform architecture for Electron and Web clients with shared UI components, Convex backend for messaging, and integrated search functionality.
Some checks failed
Build and Release / build-and-release (push) Has been cancelled

This commit is contained in:
Bryan1029384756
2026-02-16 13:08:39 -06:00
parent 8ff9213b34
commit ec12313996
49 changed files with 2449 additions and 3914 deletions

View File

@@ -4,6 +4,7 @@ import Login from './pages/Login';
import Register from './pages/Register';
import Chat from './pages/Chat';
import { usePlatform } from './platform';
import { useSearch } from './contexts/SearchContext';
const THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1000;
@@ -12,6 +13,7 @@ function AuthGuard({ children }) {
const location = useLocation();
const navigate = useNavigate();
const { session, settings } = usePlatform();
const searchCtx = useSearch();
useEffect(() => {
let cancelled = false;
@@ -19,6 +21,7 @@ function AuthGuard({ children }) {
async function restoreSession() {
// Already have keys in sessionStorage — current session is active
if (sessionStorage.getItem('privateKey') && sessionStorage.getItem('signingKey')) {
searchCtx?.initialize();
if (!cancelled) setAuthState('authenticated');
return;
}
@@ -34,6 +37,8 @@ function AuthGuard({ children }) {
if (savedSession.publicKey) localStorage.setItem('publicKey', savedSession.publicKey);
sessionStorage.setItem('signingKey', savedSession.signingKey);
sessionStorage.setItem('privateKey', savedSession.privateKey);
if (savedSession.searchDbKey) sessionStorage.setItem('searchDbKey', savedSession.searchDbKey);
searchCtx?.initialize();
// Restore user preferences from file-based backup into localStorage
if (settings) {
try {