Files
tkmind_go/ui/desktop/src/utils/navigationUtils.ts
T

80 lines
1.9 KiB
TypeScript

import { NavigateFunction } from 'react-router-dom';
import { Recipe } from '../api/types.gen';
export type View =
| 'welcome'
| 'chat'
| 'pair'
| 'settings'
| 'extensions'
| 'moreModels'
| 'configureProviders'
| 'configPage'
| 'ConfigureProviders'
| 'settingsV2'
| 'sessions'
| 'schedules'
| 'sharedSession'
| 'loading'
| 'recipes'
| 'permission';
export type ViewOptions = {
showEnvVars?: boolean;
deepLinkConfig?: unknown;
sessionDetails?: unknown;
error?: string;
baseUrl?: string;
recipe?: Recipe;
parentView?: View;
parentViewOptions?: ViewOptions;
disableAnimation?: boolean;
initialMessage?: string;
shareToken?: string;
resumeSessionId?: string;
pendingScheduleDeepLink?: string;
};
export const createNavigationHandler = (navigate: NavigateFunction) => {
return (view: View, options?: ViewOptions) => {
switch (view) {
case 'chat':
navigate('/', { state: options });
break;
case 'pair':
navigate('/pair', { state: options });
break;
case 'settings':
navigate('/settings', { state: options });
break;
case 'sessions':
navigate('/sessions', { state: options });
break;
case 'schedules':
navigate('/schedules', { state: options });
break;
case 'recipes':
navigate('/recipes', { state: options });
break;
case 'permission':
navigate('/permission', { state: options });
break;
case 'ConfigureProviders':
navigate('/configure-providers', { state: options });
break;
case 'sharedSession':
navigate('/shared-session', { state: options });
break;
case 'welcome':
navigate('/welcome', { state: options });
break;
case 'extensions':
navigate('/extensions', { state: options });
break;
default:
navigate('/', { state: options });
}
};
};