feat: whyrating - initial project from turbostarter boilerplate

This commit is contained in:
Alejandro Gutiérrez
2026-02-04 01:54:52 +01:00
commit 5cdc07cd39
1618 changed files with 338230 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
import { Mixpanel } from "mixpanel-react-native";
import { useEffect } from "react";
import { useTrackingPermissions } from "../../hooks";
import { env } from "./env";
import type { AnalyticsProviderClientStrategy } from "@turbostarter/analytics";
const optOutTracking = true;
const trackAutomaticEvents = false;
const mixpanel = new Mixpanel(
env.EXPO_PUBLIC_MIXPANEL_TOKEN,
trackAutomaticEvents,
optOutTracking,
);
void mixpanel.init();
export const { Provider, track, identify, reset } = {
Provider: ({ children }) => {
const granted = useTrackingPermissions();
useEffect(() => {
void (async () => {
const optedOut = await mixpanel.hasOptedOutTracking();
if (granted && optedOut) {
void mixpanel.optInTracking();
}
})();
}, [granted]);
return <>{children}</>;
},
track: (name, params) => {
mixpanel.track(name, params);
},
identify: (userId, traits) => {
void mixpanel.identify(userId);
if (traits) {
void mixpanel.getPeople().set(traits);
}
},
reset: () => {
mixpanel.reset();
},
} satisfies AnalyticsProviderClientStrategy;