mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
82 lines
2.8 KiB
TypeScript
82 lines
2.8 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { createContext, useContext } from 'react';
|
|
import { type Key } from '../hooks/useKeypress.js';
|
|
import { type IdeIntegrationNudgeResult } from '../IdeIntegrationNudge.js';
|
|
import { type FolderTrustChoice } from '../components/FolderTrustDialog.js';
|
|
import {
|
|
type AuthType,
|
|
type EditorType,
|
|
type ApprovalMode,
|
|
} from '@qwen-code/qwen-code-core';
|
|
import { type SettingScope } from '../../config/settings.js';
|
|
import type { AuthState } from '../types.js';
|
|
import { type VisionSwitchOutcome } from '../components/ModelSwitchDialog.js';
|
|
import { type OpenAICredentials } from '../components/OpenAIKeyPrompt.js';
|
|
|
|
export interface UIActions {
|
|
handleThemeSelect: (
|
|
themeName: string | undefined,
|
|
scope: SettingScope,
|
|
) => void;
|
|
handleThemeHighlight: (themeName: string | undefined) => void;
|
|
handleApprovalModeSelect: (
|
|
mode: ApprovalMode | undefined,
|
|
scope: SettingScope,
|
|
) => void;
|
|
handleAuthSelect: (
|
|
authType: AuthType | undefined,
|
|
scope: SettingScope,
|
|
credentials?: OpenAICredentials,
|
|
) => Promise<void>;
|
|
setAuthState: (state: AuthState) => void;
|
|
onAuthError: (error: string) => void;
|
|
cancelAuthentication: () => void;
|
|
handleEditorSelect: (
|
|
editorType: EditorType | undefined,
|
|
scope: SettingScope,
|
|
) => void;
|
|
exitEditorDialog: () => void;
|
|
closeSettingsDialog: () => void;
|
|
closeModelDialog: () => void;
|
|
closePermissionsDialog: () => void;
|
|
setShellModeActive: (value: boolean) => void;
|
|
vimHandleInput: (key: Key) => boolean;
|
|
handleIdePromptComplete: (result: IdeIntegrationNudgeResult) => void;
|
|
handleFolderTrustSelect: (choice: FolderTrustChoice) => void;
|
|
setConstrainHeight: (value: boolean) => void;
|
|
onEscapePromptChange: (show: boolean) => void;
|
|
refreshStatic: () => void;
|
|
handleFinalSubmit: (value: string) => void;
|
|
handleClearScreen: () => void;
|
|
onWorkspaceMigrationDialogOpen: () => void;
|
|
onWorkspaceMigrationDialogClose: () => void;
|
|
handleProQuotaChoice: (choice: 'auth' | 'continue') => void;
|
|
// Vision switch dialog
|
|
handleVisionSwitchSelect: (outcome: VisionSwitchOutcome) => void;
|
|
// Welcome back dialog
|
|
handleWelcomeBackSelection: (choice: 'continue' | 'restart') => void;
|
|
handleWelcomeBackClose: () => void;
|
|
// Subagent dialogs
|
|
closeSubagentCreateDialog: () => void;
|
|
closeAgentsManagerDialog: () => void;
|
|
// Resume session dialog
|
|
openResumeDialog: () => void;
|
|
closeResumeDialog: () => void;
|
|
handleResume: (sessionId: string) => void;
|
|
}
|
|
|
|
export const UIActionsContext = createContext<UIActions | null>(null);
|
|
|
|
export const useUIActions = () => {
|
|
const context = useContext(UIActionsContext);
|
|
if (!context) {
|
|
throw new Error('useUIActions must be used within a UIActionsProvider');
|
|
}
|
|
return context;
|
|
};
|