Files
noteflow/docs/sprints/.archive/sprint-organization/hooks.md

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

  1. Create Directories: audio, auth, data, processing, recording, sync, ui.
  2. Move Files: Move source files and associated tests to their new directories.
  3. Update Imports:
    • Update relative imports within the moved files.
    • Update usages across the codebase (using sed or manual edits).
  4. Cleanup: Remove use-auth-flow.ts if confirmed as dead code.
  5. Verification: Run tests to ensure no regressions.

Impacted Tests

  • use-asr-config.test.ts
  • use-audio-devices.test.ts
  • use-oauth-flow.test.ts
  • use-oidc-providers.test.ts
  • use-cloud-consent.test.ts
  • use-huggingface-token.test.ts
  • use-guarded-mutation.test.tsx
  • use-post-processing.test.ts
  • use-diarization.test.ts
  • recording-session.integration.test.tsx
  • use-integration-sync.test.ts
  • use-panel-preferences.test.ts
  • use-toast.test.ts

Recommendations

  • Consolidate Audio: Consider merging useAudioTesting into useAudioDevices if it's not used elsewhere.
  • Remove Dead Code: use-auth-flow.ts seems redundant given use-oauth-flow.ts.
  • Standardize Exports: Ensure all hooks use named exports.