about summary refs log tree commit diff
path: root/src/lib/analytics/types.ts
diff options
context:
space:
mode:
authorAnsh <anshnanda10@gmail.com>2023-06-15 14:45:14 -0700
committerGitHub <noreply@github.com>2023-06-15 16:45:14 -0500
commit17e7590bcd36f9ec3433cb2714a9319fac4aeebf (patch)
tree71edb7056abedd460d275944711e4fc001a2ffe6 /src/lib/analytics/types.ts
parent1695ae34dbd08432f21f524ed32ad7012bfb201e (diff)
downloadvoidsky-17e7590bcd36f9ec3433cb2714a9319fac4aeebf.tar.zst
[APP-511] metrics overhaul: frontend work (#506)
* WIP

* fix types and update imports

* wip

* tagged events that should be server side

* remove server-side analytics

* remove useless import

* add additional profile header events

* remove useless import

* track follow/unfollow clicks

* add missing types
Diffstat (limited to 'src/lib/analytics/types.ts')
-rw-r--r--src/lib/analytics/types.ts98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/lib/analytics/types.ts b/src/lib/analytics/types.ts
new file mode 100644
index 000000000..0638c6b77
--- /dev/null
+++ b/src/lib/analytics/types.ts
@@ -0,0 +1,98 @@
+export type TrackEvent = (
+  event: keyof TrackPropertiesMap,
+  properties?: TrackPropertiesMap[keyof TrackPropertiesMap],
+) => Promise<void>
+
+export type ScreenEvent = (
+  name: keyof ScreenPropertiesMap,
+  properties?: ScreenPropertiesMap[keyof ScreenPropertiesMap],
+) => Promise<void>
+interface TrackPropertiesMap {
+  // LOGIN / SIGN UP events
+  'Sign In': {resumedSession: boolean} // CAN BE SERVER
+  'Create Account': {} // CAN BE SERVER
+  'Signin:PressedForgotPassword': {}
+  'Signin:PressedSelectService': {}
+  // COMPOSER / CREATE POST events
+  'Create Post': {imageCount: string} // CAN BE SERVER
+  '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': {} // CAN BE SERVER
+  // FEED events
+  'Feed:onRefresh': {}
+  'Feed:onEndReached': {}
+  // FEED ITEM events
+  'FeedItem:PostReply': {} // CAN BE SERVER
+  'FeedItem:PostRepost': {} // CAN BE SERVER
+  'FeedItem:PostLike': {} // CAN BE SERVER
+  'FeedItem:PostDelete': {} // CAN BE SERVER
+  'FeedItem:ThreadMute': {} // CAN BE SERVER
+  // PROFILE HEADER events
+  'ProfileHeader:EditProfileButtonClicked': {}
+  'ProfileHeader:FollowersButtonClicked': {}
+  'ProfileHeader:FollowsButtonClicked': {}
+  'ProfileHeader:ShareButtonClicked': {}
+  'ProfileHeader:MuteAccountButtonClicked': {}
+  'ProfileHeader:UnmuteAccountButtonClicked': {}
+  'ProfileHeader:ReportAccountButtonClicked': {}
+  'ProfileHeader:AddToListsButtonClicked': {}
+  'ProfileHeader:BlockAccountButtonClicked': {}
+  'ProfileHeader:UnblockAccountButtonClicked': {}
+  'ProfileHeader:FollowButtonClicked': {}
+  'ProfileHeader:UnfollowButtonClicked': {}
+  'ViewHeader:MenuButtonClicked': {}
+  // SETTINGS events
+  'Settings:SwitchAccountButtonClicked': {}
+  'Settings:AddAccountButtonClicked': {}
+  'Settings:ChangeHandleButtonClicked': {}
+  'Settings:InvitecodesButtonClicked': {}
+  'Settings:ContentfilteringButtonClicked': {}
+  'Settings:SignOutButtonClicked': {}
+  'Settings:ContentlanguagesButtonClicked': {}
+  // MENU events
+  'Menu:ItemClicked': {url: string}
+  'Menu:FeedbackClicked': {}
+  // MOBILE SHELL events
+  'MobileShell:MyProfileButtonPressed': {}
+  'MobileShell:HomeButtonPressed': {}
+  'MobileShell:SearchButtonPressed': {}
+  'MobileShell:NotificationsButtonPressed': {}
+  'MobileShell:FeedsButtonPressed': {}
+  // LISTS events
+  'Lists:onRefresh': {}
+  'Lists:onEndReached': {}
+  'CreateMuteList:AvatarSelected': {}
+  'CreateMuteList:Save': {} // CAN BE SERVER
+  // CUSTOM FEED events
+  'MultiFeed:onEndReached': {}
+  'MultiFeed:onRefresh': {}
+  // MODERATION events
+  'Moderation:ContentfilteringButtonClicked': {}
+}
+
+interface ScreenPropertiesMap {
+  Login: {}
+  CreateAccount: {}
+  'Choose Account': {}
+  'Signin:ForgotPassword': {}
+  'Signin:SetNewPasswordForm': {}
+  'Signin:PasswordUpdatedForm': {}
+  Feed: {}
+  Notifications: {}
+  Profile: {}
+  Settings: {}
+  AppPasswords: {}
+  Moderation: {}
+  BlockedAccounts: {}
+  MutedAccounts: {}
+  SavedFeeds: {}
+}