import { I18nProvider } from "../../shared/i18n/context";
import { ThemeProvider } from "../../shared/theme/context";
import { Header } from "./components/Header";
import { AccountList } from "./components/AccountList";
import { AddAccount } from "./components/AddAccount";
import { ProxyPool } from "./components/ProxyPool";
import { ApiConfig } from "./components/ApiConfig";
import { AnthropicSetup } from "./components/AnthropicSetup";
import { CodeExamples } from "./components/CodeExamples";
import { Footer } from "./components/Footer";
import { useAccounts } from "../../shared/hooks/use-accounts";
import { useProxies } from "../../shared/hooks/use-proxies";
import { useStatus } from "../../shared/hooks/use-status";
import { useUpdateStatus } from "../../shared/hooks/use-update-status";
import { useI18n } from "../../shared/i18n/context";
function useUpdateMessage() {
const { t } = useI18n();
const update = useUpdateStatus();
let msg: string | null = null;
let color = "text-primary";
if (!update.checking && update.result) {
const parts: string[] = [];
const r = update.result;
if (r.proxy?.error) {
parts.push(`Proxy: ${r.proxy.error}`);
color = "text-red-500";
} else if (r.proxy?.update_applied) {
parts.push(t("updateApplied"));
color = "text-blue-500";
} else if (r.proxy && r.proxy.commits_behind > 0) {
parts.push(`Proxy: ${r.proxy.commits_behind} ${t("commits")} ${t("proxyBehind")}`);
color = "text-amber-500";
}
if (r.codex?.error) {
parts.push(`Codex: ${r.codex.error}`);
color = "text-red-500";
} else if (r.codex_update_in_progress) {
parts.push(t("fingerprintUpdating"));
} else if (r.codex?.version_changed) {
parts.push(`Codex: v${r.codex.current_version}`);
color = "text-blue-500";
}
msg = parts.length > 0 ? parts.join(" ยท ") : t("upToDate");
} else if (!update.checking && update.error) {
msg = update.error;
color = "text-red-500";
}
return { ...update, msg, color };
}
function Dashboard() {
const accounts = useAccounts();
const proxies = useProxies();
const status = useStatus(accounts.list.length);
const update = useUpdateMessage();
const handleProxyChange = async (accountId: string, proxyId: string) => {
accounts.patchLocal(accountId, { proxyId });
await proxies.assignProxy(accountId, proxyId);
};
return (
<>
>
);
}
export function App() {
return (
);
}