Files
smart-rgb/frontend/src/desktop/analytics/tauriAnalytics.ts
2025-10-16 01:46:14 -05:00

33 lines
868 B
TypeScript

import { invoke } from "@tauri-apps/api/core";
import type { AnalyticsAPI } from "@/shared/analytics/AnalyticsAPI";
/**
* Desktop implementation of AnalyticsAPI using Tauri commands.
*
* Events are sent to the Rust backend which handles batching and
* sending to PostHog.
*/
export class TauriAnalytics implements AnalyticsAPI {
track(event: string, properties?: Record<string, any>): void {
invoke("track_analytics_event", {
payload: {
event,
properties: properties || {},
},
}).catch((err) => {
console.error("Failed to track analytics event:", err);
});
}
async flush(): Promise<void> {
try {
await invoke("flush_analytics");
} catch (err) {
console.error("Failed to flush analytics:", err);
}
}
}
// Export singleton instance
export const tauriAnalytics = new TauriAnalytics();