import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui";
import { useLoginMutation } from "@/services/db";
import { useSessionStore } from "@/state/db-session-store";
import { memo, useMemo } from "react";
import { toast } from "sonner";
function RawSessionSelector() {
const sessions = useSessionStore.use.sessions();
const currentSessionId = useSessionStore.use.currentSessionId();
const setCurrentSessionId = useSessionStore.use.setCurrentSessionId();
const { mutate } = useLoginMutation();
const handleSessionSelected = (sessionId: string) => {
const session = sessions.find((s) => s.id === Number.parseInt(sessionId));
if (!session) {
toast.error("Invalid session");
return;
}
setCurrentSessionId(session.id);
mutate(session);
};
const mappedSessions = useMemo(() => {
return sessions?.map((session) => {
const text =
"connectionString" in session
? session.connectionString
: `${session.host}:${session.port}/${session.database}`;
return (
{text}
);
});
}, [sessions]);
if (!sessions.length) {
return null;
}
return (
);
}
const SessionSelector = memo(RawSessionSelector);
SessionSelector.displayName = "SessionSelector";
export { SessionSelector };