6.4 KiB
6.4 KiB
Client Hooks Reorganization Plan
The client/src/hooks directory is currently a flat list of 40+ files, mixing different domains. This document outlines a plan to reorganize them into domain-specific subdirectories to improve maintainability.
Analysis
1. Audio Hooks
Target Directory: client/src/hooks/audio/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-asr-config.ts |
useAsrConfig |
use-asr-config.test.ts |
getAPI, useConnectionState |
use-asr-config.test.ts |
use-audio-devices.ts |
useAudioDevices |
AudioDeviceSelector, Settings, AudioTab |
getAPI, useToast, useAudioTesting, preferences |
use-audio-devices.test.ts |
use-audio-testing.ts |
useAudioTesting |
useAudioDevices |
TauriCommands, useToast |
N/A (Internal helper) |
use-streaming-config.ts |
useStreamingConfig |
AdvancedLocalAiSettings |
getAPI, useConnectionState |
N/A |
2. Auth Hooks
Target Directory: client/src/hooks/auth/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-auth-flow.ts |
useAuthFlow |
NONE FOUND (Potential Dead Code) | getAPI, useToast, oauth-utils |
N/A |
use-oauth-flow.ts |
useOAuthFlow |
IntegrationHandlers, CalendarConnectionPanel, Settings |
getAPI, useToast, oauth-utils |
use-oauth-flow.test.ts |
use-oidc-providers.ts |
useOidcProviders |
use-oidc-providers.test.ts |
getAPI, useToast |
use-oidc-providers.test.ts |
use-cloud-consent.ts |
useCloudConsent |
use-cloud-consent.test.ts |
getAPI |
use-cloud-consent.test.ts |
use-huggingface-token.ts |
useHuggingFaceToken |
use-huggingface-token.test.ts |
getAPI, useConnectionState |
use-huggingface-token.test.ts |
use-secure-integration-secrets.ts |
useSecureIntegrationSecrets |
Settings, IntegrationHandlers |
crypto, object-utils |
N/A |
3. Data Hooks
Target Directory: client/src/hooks/data/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-async-data.ts |
useAsyncData, useMutation |
use-async-data.ts |
extractErrorMessage |
N/A |
use-guarded-mutation.ts |
useGuardedMutation |
useRecordingSession |
useConnectionState, useToast |
use-guarded-mutation.test.tsx |
use-project.ts |
useProject, useActiveProject |
ProjectMembersPanel |
useProjects (context) |
N/A |
use-project-members.ts |
useProjectMembers |
ProjectMembersPanel |
getAPI |
N/A |
4. Processing Hooks
Target Directory: client/src/hooks/processing/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-post-processing.ts |
usePostProcessing |
MeetingDetail, ProcessingStatus |
getAPI, useToast, entity-store, usePostProcessingEvents |
use-post-processing.test.ts |
use-entity-extraction.ts |
useEntityExtraction |
MeetingDetail |
getAPI, useToast, entity-store |
N/A |
use-diarization.ts |
useDiarization |
use-diarization.test.ts |
getAPI, useToast |
use-diarization.test.ts |
post-processing/ |
(Internal Modules) | usePostProcessing |
N/A | N/A |
5. Recording Hooks
Target Directory: client/src/hooks/recording/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-recording-session.ts |
useRecordingSession |
RecordingSession.integration.test.tsx |
getAPI, useConnectionState, useGuardedMutation, useToast |
recording-session.integration.test.tsx |
use-recording-app-policy.ts |
useRecordingAppPolicy |
RecordingAppPolicySection |
getAPI, preferences |
N/A |
6. Sync Hooks
Target Directory: client/src/hooks/sync/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-integration-sync.ts |
useIntegrationSync |
use-integration-sync.test.ts |
getAPI, preferences, sync-notifications |
use-integration-sync.test.ts |
use-integration-validation.ts |
useIntegrationValidation |
useIntegrationValidation |
useToast, preferences |
N/A |
use-calendar-sync.ts |
useCalendarSync |
Settings, CalendarEventsPanel |
getAPI, useToast |
N/A |
use-webhooks.ts |
useWebhooks |
WebhookSettingsPanel |
getAPI, useToast |
N/A |
use-preferences-sync.ts |
usePreferencesSync |
PreferencesSyncBridge, PreferencesSyncStatus |
preferences-sync, preferences |
N/A |
sync-notifications.ts |
sendSyncNotification |
useIntegrationSync |
preferences |
N/A |
use-meeting-reminders.ts |
useMeetingReminders |
CalendarEventsPanel (presumed) |
useToast, storage-utils |
N/A |
7. UI Hooks
Target Directory: client/src/hooks/ui/
| File | Exports | Call Sites | Dependencies | Tests |
|---|---|---|---|---|
use-mobile.tsx |
useIsMobile |
SidebarContext |
config |
N/A |
use-panel-preferences.ts |
usePanelPreferences |
use-panel-preferences.test.ts |
storage-utils |
use-panel-preferences.test.ts |
use-recording-panels.ts |
useRecordingPanels |
Recording |
react-resizable-panels |
N/A |
use-toast.ts |
useToast, toast |
Widespread | radix-ui (implied) |
use-toast.test.ts |
Execution Plan
- Create Directories:
audio,auth,data,processing,recording,sync,ui. - Move Files: Move source files and associated tests to their new directories.
- Update Imports:
- Update relative imports within the moved files.
- Update usages across the codebase (using
sedor manual edits).
- Cleanup: Remove
use-auth-flow.tsif confirmed as dead code. - Verification: Run tests to ensure no regressions.
Impacted Tests
use-asr-config.test.tsuse-audio-devices.test.tsuse-oauth-flow.test.tsuse-oidc-providers.test.tsuse-cloud-consent.test.tsuse-huggingface-token.test.tsuse-guarded-mutation.test.tsxuse-post-processing.test.tsuse-diarization.test.tsrecording-session.integration.test.tsxuse-integration-sync.test.tsuse-panel-preferences.test.tsuse-toast.test.ts
Recommendations
- Consolidate Audio: Consider merging
useAudioTestingintouseAudioDevicesif it's not used elsewhere. - Remove Dead Code:
use-auth-flow.tsseems redundant givenuse-oauth-flow.ts. - Standardize Exports: Ensure all hooks use named exports.