import { getCurrentWindow } from "@tauri-apps/api/window";
import "@fontsource-variable/google-sans";
import { useNavigate } from "@solidjs/router";
import type { ParentProps } from "solid-js";
import { createEffect, onCleanup, Show } from "solid-js";
import "./App.css";
import { AccountLedger } from "./components/account/AccountLedger";
import { ComposerWindow } from "./components/feeds/ComposerWindow";
import { FeedWorkspace } from "./components/feeds/FeedWorkspace";
import { LoginPanel } from "./components/LoginPanel";
import { MessagesPanel } from "./components/messages/MessagesPanel";
import { NotificationsPanel } from "./components/notifications/NotificationsPanel";
import { HeaderPanel } from "./components/panels/Header";
import { PostEngagementPanel } from "./components/posts/PostEngagementPanel";
import { PostPanel } from "./components/posts/PostPanel";
import { ThreadDrawer } from "./components/posts/ThreadDrawer";
import { ProfilePanel } from "./components/profile/ProfilePanel";
import { AppRail } from "./components/rail/AppRail";
import { SessionSpotlight } from "./components/Session";
import { ErrorToast } from "./components/shared/ErrorToast";
import { ThemeController } from "./components/theme/ThemeController";
import { AppPreferencesProvider } from "./contexts/app-preferences";
import { AppSessionProvider, useAppSession } from "./contexts/app-session";
import { AppShellUiProvider, useAppShellUi } from "./contexts/app-shell-ui";
import { AppRouter } from "./router";
const COMPOSER_WINDOW_LABEL = "composer";
type AppShellProps = ParentProps<{ fullWidth?: boolean }>;
function createSettingsShortcutHandler(hasSession: boolean, navigate: (path: string) => void) {
return (e: KeyboardEvent) => {
if (e.key === "," && !e.ctrlKey && !e.metaKey && !e.altKey) {
const activeElement = document.activeElement;
const isInputFocused = activeElement instanceof HTMLInputElement || activeElement instanceof HTMLTextAreaElement;
if (!isInputFocused && hasSession) {
navigate("/settings");
}
}
};
}
function AppShell(props: AppShellProps) {
const session = useAppSession();
const shell = useAppShellUi();
const navigate = useNavigate();
createEffect(() => {
const handler = createSettingsShortcutHandler(session.hasSession, navigate);
globalThis.addEventListener("keydown", handler);
onCleanup(() => globalThis.removeEventListener("keydown", handler));
});
return (
<>
Loading
Restoring the composer.