This commit is contained in:
Ansh Nanda
2023-04-20 14:05:34 -07:00
parent 3e78c71018
commit 630d750a08
2 changed files with 98 additions and 8 deletions
+10 -8
View File
@@ -4,6 +4,8 @@ import {
createClient,
AnalyticsProvider,
useAnalytics as useAnalyticsOrig,
ClientMethods,
JsonMap,
} from '@segment/analytics-react-native'
import {RootStoreModel, AppInfo} from 'state/models/root-store'
import {useStores} from 'state/models/root-store'
@@ -16,20 +18,20 @@ const segmentClient = createClient({
export function useAnalytics() {
const store = useStores()
const methods = useAnalyticsOrig()
const methods: ClientMethods = useAnalyticsOrig()
return React.useMemo(() => {
if (store.session.hasSession) {
return methods
}
// dont send analytics pings for anonymous users
return {
screen: () => {},
track: () => {},
identify: () => {},
flush: () => {},
group: () => {},
alias: () => {},
reset: () => {},
screen: (name: string, properties?: JsonMap) => Promise<void>,
track: (event: string, properties?: JsonMap) => Promise<void>,
identify: (userId?: string, userTraits?: UserTraits) => Promise<void>,
flush: () => Promise<void>,
group: (groupId: string, groupTraits?: GroupTraits) => Promise<void>,
alias: (newUserId: string) => Promise<void>,
reset: (resetAnonymousId?: boolean) => Promise<void>,
}
}, [store, methods])
}
+88
View File
@@ -0,0 +1,88 @@
import {
ClientMethods,
GroupTraits,
JsonMap,
UserTraits,
} from '@segment/analytics-react-native'
export type IAnalyticsEvent = {
name: keyof TrackPropertiesMap
properties: TrackPropertiesMap[keyof TrackPropertiesMap]
}
export interface IAnalyticsProvider extends ClientMethods {
screen: (name: string, properties?: JsonMap) => Promise<void>
track: (event: string, properties?: JsonMap) => Promise<void>
identify: (userId?: string, userTraits?: UserTraits) => Promise<void>
flush: () => Promise<void>
group: (groupId: string, groupTraits?: GroupTraits) => Promise<void>
alias: (newUserId: string) => Promise<void>
reset: (resetAnonymousId?: boolean) => Promise<void>
}
export interface TrackPropertiesMap {
// LOGIN / SIGN UP events
'Sing In': {resumedSession: boolean}
'Create Account': {}
'SignIn:ForgotPassowrd': {}
'SignIn:PressedSelectService': {}
// COMPOSER / CREATE POST events
'Create Post': {imageCount: string}
'Composer:PastedPhotos': {}
'Composer:CameraOpened': {}
'Composer:GalleryOpened': {}
'HomeScreen:PressCompose': {}
'ProfileScreen:PressCompose': {}
// EDIT PROFILE events
'EditHandle:ViewCustomForm': {}
'EditHandle:ViewProvidedForm': {}
'EditHandle:SetNewHandle': {}
'EditProfile:AvatarSelected': {}
'EditProfile:BannerSelected': {}
'EditProfile:Save': {}
// FEED events
'Feed:onRefresh': {}
'Feed:onEndReached': {}
// FEED ITEM events
'FeedItem:PostReply': {}
'FeedItem:PostRepost': {}
'FeedItem:PostLike': {}
'FeedItem:PostDelete': {}
// PROFILE HEADER events
'ProfileHeaeder:EditProfileButtonClicked': {}
'ProfileHeader:FollowersButtonClicked': {}
'ProfileHeader:FollowsButtonClicked': {}
'ProfileHeader:ShareButtonClicked': {}
'ProfileHeader:MuteAccountButtonClicked': {}
'ProfileHeader:UnmuteAccountButtonClicked': {}
'ProfileHeader:ReportAccountButtonClicked': {}
'ViewHeader:MenuButtonClicked': {}
// SETTINGS events
'Settings:SwitchAccountButtonCLicked': {}
'Settings:AddAccountButtonClicked': {}
'Settings:ChangeHandleButtonClicked': {}
'Settings:InvitecodesButtonClicked': {}
'Settings:ContentfilteringButtonClicked': {}
'Settings:SignOutButtonClicked': {}
// MENU events
'Menu:ItemClicked': {url: string}
'Menu:FeedbackClicked': {}
// MOBILE SHELL events
'MobileShell:ProfileButtonPressed': {}
'MobileShell:FeedButtonPressed': {}
'MobileShell:SearchButtonPressed': {}
'MobileShell:NotificationsButtonPressed': {}
}
export interface ScreenPropertiesMap {
Login: {}
CreateAccount: {}
'Choose Account': {}
'Signin:ForgotPassword': {}
'Signin:SetNewPasswordForm': {}
'Signin:PasswordUpdatedForm': {}
Feed: {}
Notifications: {}
Profile: {}
Settings: {}
}