diff options
author | Eric Bailey <git@esb.lol> | 2024-01-25 23:12:48 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-25 21:12:48 -0800 |
commit | 157404132f43dc4fc42437fe27348a491161f241 (patch) | |
tree | 1dbb6c84fe39990687ea7151bc6e1d21d6f40721 /src/lib/analytics/analytics.web.tsx | |
parent | bc502edae150173d7b5ead0eddb739994929ac97 (diff) | |
download | voidsky-157404132f43dc4fc42437fe27348a491161f241.tar.zst |
Improve type checking for metrics events (#2632)
Diffstat (limited to 'src/lib/analytics/analytics.web.tsx')
-rw-r--r-- | src/lib/analytics/analytics.web.tsx | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/lib/analytics/analytics.web.tsx b/src/lib/analytics/analytics.web.tsx index 1be8e608a..72b28f9c0 100644 --- a/src/lib/analytics/analytics.web.tsx +++ b/src/lib/analytics/analytics.web.tsx @@ -3,7 +3,7 @@ import {createClient} from '@segment/analytics-react' import {sha256} from 'js-sha256' import {Browser} from 'sentry-expo' -import {TrackEvent, AnalyticsMethods} from './types' +import {ScreenPropertiesMap, TrackPropertiesMap} from './types' import {useSession, SessionAccount} from '#/state/session' import {logger} from '#/logger' @@ -29,20 +29,30 @@ function getClient(): SegmentClient { return segmentClient } -export const track: TrackEvent = async (...args) => { - await getClient().track(...args) +export const track = async <E extends keyof TrackPropertiesMap>( + event: E, + properties?: TrackPropertiesMap[E], +) => { + await getClient().track(event, properties) } -export function useAnalytics(): AnalyticsMethods { +export function useAnalytics() { const {hasSession} = useSession() + return React.useMemo(() => { if (hasSession) { return { - async screen(...args) { - await getClient().screen(...args) + async screen<E extends keyof ScreenPropertiesMap>( + event: E, + properties?: ScreenPropertiesMap[E], + ) { + await getClient().screen(event, properties) }, - async track(...args) { - await getClient().track(...args) + async track<E extends keyof TrackPropertiesMap>( + event: E, + properties?: TrackPropertiesMap[E], + ) { + await getClient().track(event, properties) }, } } |