mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-29 09:37:37 +08:00
feat: session manger (#867)
* feat: init session manger * feat: persist selected app to localStorage - Save app selection when switching providers - Restore last selected app on page load * feat: persist current view to localStorage - Save view selection when switching tabs - Restore last selected view on page load * styles: update ui * feat: Improve macOS Terminal activation and refactor Kitty launch to use command with user's default shell. * fix: session view * feat: toc * feat: Implement FlexSearch for improved session search functionality. * feat: Redesign session manager search and filter UI for a more compact and dynamic experience. * refactor: modularize session manager by extracting components and utility functions into dedicated files. * feat: Enhance session terminal launching with support for iTerm2, Ghostty, WezTerm, and Alacritty, including UI and custom configuration options. * feat: Conditionally render terminal selection and resume session buttons only on macOS.
This commit is contained in:
@@ -3,8 +3,20 @@ import {
|
||||
type UseQueryResult,
|
||||
keepPreviousData,
|
||||
} from "@tanstack/react-query";
|
||||
import { providersApi, settingsApi, usageApi, type AppId } from "@/lib/api";
|
||||
import type { Provider, Settings, UsageResult } from "@/types";
|
||||
import {
|
||||
providersApi,
|
||||
settingsApi,
|
||||
usageApi,
|
||||
sessionsApi,
|
||||
type AppId,
|
||||
} from "@/lib/api";
|
||||
import type {
|
||||
Provider,
|
||||
Settings,
|
||||
UsageResult,
|
||||
SessionMeta,
|
||||
SessionMessage,
|
||||
} from "@/types";
|
||||
|
||||
const sortProviders = (
|
||||
providers: Record<string, Provider>,
|
||||
@@ -132,3 +144,23 @@ export const useUsageQuery = (
|
||||
lastQueriedAt: query.dataUpdatedAt || null,
|
||||
};
|
||||
};
|
||||
|
||||
export const useSessionsQuery = () => {
|
||||
return useQuery<SessionMeta[]>({
|
||||
queryKey: ["sessions"],
|
||||
queryFn: async () => sessionsApi.list(),
|
||||
staleTime: 30 * 1000,
|
||||
});
|
||||
};
|
||||
|
||||
export const useSessionMessagesQuery = (
|
||||
providerId?: string,
|
||||
sourcePath?: string,
|
||||
) => {
|
||||
return useQuery<SessionMessage[]>({
|
||||
queryKey: ["sessionMessages", providerId, sourcePath],
|
||||
queryFn: async () => sessionsApi.getMessages(providerId!, sourcePath!),
|
||||
enabled: Boolean(providerId && sourcePath),
|
||||
staleTime: 30 * 1000,
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user