feat: add session switcher dropdown in header
Open recent sessions from chat headers Support session switching in mini chat Share pinned and active session state
This commit is contained in:
@@ -91,10 +91,17 @@ const MiniChatBootstrap: React.FC<{ config: MiniChatConfig }> = ({ config }) =>
|
||||
};
|
||||
}, [isInitialized]);
|
||||
|
||||
const directoryBootstrappedRef = React.useRef(false);
|
||||
React.useEffect(() => {
|
||||
if (directoryBootstrappedRef.current) return;
|
||||
if (config.mode !== 'session') return;
|
||||
if (!config.directory || currentDirectory === config.directory) return;
|
||||
if (!config.directory) return;
|
||||
if (currentDirectory === config.directory) {
|
||||
directoryBootstrappedRef.current = true;
|
||||
return;
|
||||
}
|
||||
setDirectory(config.directory, { showOverlay: false });
|
||||
directoryBootstrappedRef.current = true;
|
||||
}, [config.directory, config.mode, currentDirectory, setDirectory]);
|
||||
|
||||
React.useEffect(() => {
|
||||
@@ -109,13 +116,24 @@ const MiniChatBootstrap: React.FC<{ config: MiniChatConfig }> = ({ config }) =>
|
||||
if (agentsCount === 0) void loadAgents();
|
||||
}, [agentsCount, isConnected, loadAgents, loadProviders, providersCount]);
|
||||
|
||||
const sessionBootstrappedRef = React.useRef(false);
|
||||
React.useEffect(() => {
|
||||
if (sessionBootstrappedRef.current) return;
|
||||
if (config.mode !== 'session' || !config.sessionId) return;
|
||||
if (currentSessionId === config.sessionId) return;
|
||||
if (currentSessionId === config.sessionId) {
|
||||
sessionBootstrappedRef.current = true;
|
||||
return;
|
||||
}
|
||||
if (currentSessionId) {
|
||||
// User already has a different session selected (e.g. from a prior switch); don't override.
|
||||
sessionBootstrappedRef.current = true;
|
||||
return;
|
||||
}
|
||||
const session = sessions.find((entry) => entry.id === config.sessionId);
|
||||
if (!session) return;
|
||||
const directory = (session as { directory?: string | null }).directory ?? config.directory;
|
||||
setCurrentSession(config.sessionId, directory);
|
||||
sessionBootstrappedRef.current = true;
|
||||
}, [config, currentSessionId, sessions, setCurrentSession]);
|
||||
|
||||
React.useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user