0.0.3 • Published 3 years ago

expo-mixpanel-hooks v0.0.3

Weekly downloads
-
License
GPL-3.0-or-later
Repository
-
Last release
3 years ago

expo-mixpanel-hooks

This is an adaption of Ben Awad's expo-mixpanel-analytics but refactored to use React Hooks.

I used this in a project which has now ended. However, it might be useful for someone else.

Note: I have not tested the people functions.

Usage

Import into App.tsx (or whatever it is named) like you would any other context provider.

import * as React from 'react'
import { ApolloProvider } from '@apollo/react-hooks'
import { AuthProvider } from './src/context'
import { MixpanelProvider } from 'expo-mixpanel-hooks'
import AppNavigation from './src/navigation'

const token = process.env.mixpanelToken

const AppWithProvider = () => {
  return (
    <ApolloProvider client={client}>
        <MixpanelProvider token={token}>
            <AuthProvider>
                <AppNavigation />
            </AuthProvider>
        </MixpanelProvider>
    </ApolloProvider>
  )
}

export default AppWithProvider

Then where you want to use the mixpanel functions

import { useMixpanelContext } from 'expo-mixpanel'

const Login = () => {

    const { track } = useMixpanelContext()

    const loginFunc = () => {

        track(Constants.deviceId || 'unknown device', {
            action: 'login'
        })

        login()
    }

    return (
        <Whatever />
    )
}

Available Mixpanel operations

identify("13793");

register({ email: "bob@bob.com" }); // super props sent on every request and persisted in AsyncStorage

track("Signed Up", { "Referred By": "Friend" });

people_set({ "$first_name": "Joe", "$last_name": "Doe", "$email": "joe.doe@example.com", "$created": "2013-04-01T13:20:00", "$phone": "4805551212", "Address": "1313 Mockingbird Lane", "Birthday": "1948-01-01" });

people_set_once({ "First login date": "2013-04-01T13:20:00" });

people_unset([ "Days Overdue" ]);

people_increment({ "Coins Gathered": 12 });

people_append({ "Power Ups": "Bubble Lead" });

people_union({ "Items purchased": ["socks", "shirts"] });

people_delete_user();

reset();