Files
noteflow/client/src/api/adapters/tauri/api.ts
Travis Vasceannie 2641a9fc03
Some checks failed
CI / test-python (push) Failing after 17m22s
CI / test-rust (push) Has been cancelled
CI / test-typescript (push) Has been cancelled
optimization
2026-01-25 01:40:14 +00:00

70 lines
2.9 KiB
TypeScript

import type { NoteFlowAPI } from '../../interface';
import type { TauriInvoke, TauriListen } from './types';
import { createDedupedInvoke, DEDUP_TTL_MS } from '@/lib/request/deduped-invoke';
import { createAnalyticsApi } from './sections/analytics';
import { createAnnotationApi } from './sections/annotations';
import { createAppsApi } from './sections/apps';
import { createAsrApi } from './sections/asr';
import { createAudioApi } from './sections/audio';
import { createCalendarApi } from './sections/calendar';
import { createCoreApi } from './sections/core';
import { createDiarizationApi } from './sections/diarization';
import { createEntityApi } from './sections/entities';
import { createExportApi } from './sections/exporting';
import { createIntegrationApi } from './sections/integrations';
import { createMeetingApi } from './sections/meetings';
import { createObservabilityApi } from './sections/observability';
import { createOidcApi } from './sections/oidc';
import { createPlaybackApi } from './sections/playback';
import { createPreferencesApi } from './sections/preferences';
import { createProjectApi } from './sections/projects';
import { createSummarizationApi } from './sections/summarization';
import { createTaskApi } from './sections/tasks';
import { createTriggerApi } from './sections/triggers';
import { createWebhookApi } from './sections/webhooks';
export const DEFAULT_DEDUP_WINDOW_MS = DEDUP_TTL_MS;
/**
* Creates a Tauri API adapter instance with request deduplication.
*
* Duplicate requests (same command + args) within the dedup window
* share the same Promise, preventing redundant work and improving performance.
*
* @param invoke - Tauri invoke function
* @param listen - Tauri listen function
* @param dedupWindow - Dedup window in milliseconds (default: 5000ms)
* @returns NoteFlowAPI instance with deduplication enabled
*/
export function createTauriAPI(
invoke: TauriInvoke,
listen: TauriListen,
dedupWindow: number = DEFAULT_DEDUP_WINDOW_MS
): NoteFlowAPI {
const dedupedInvoke = createDedupedInvoke(invoke, dedupWindow);
return {
...createCoreApi(dedupedInvoke),
...createProjectApi(dedupedInvoke),
...createMeetingApi(dedupedInvoke, listen),
...createSummarizationApi(dedupedInvoke),
...createAsrApi(dedupedInvoke),
...createAnnotationApi(dedupedInvoke),
...createExportApi(dedupedInvoke),
...createPlaybackApi(dedupedInvoke),
...createDiarizationApi(dedupedInvoke),
...createPreferencesApi(dedupedInvoke),
...createAudioApi(dedupedInvoke),
...createAppsApi(dedupedInvoke),
...createTriggerApi(dedupedInvoke),
...createEntityApi(dedupedInvoke),
...createCalendarApi(dedupedInvoke),
...createWebhookApi(dedupedInvoke),
...createIntegrationApi(dedupedInvoke),
...createObservabilityApi(dedupedInvoke),
...createOidcApi(dedupedInvoke),
...createTaskApi(dedupedInvoke),
...createAnalyticsApi(dedupedInvoke),
};
}