forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1/*
2 * Do not import runtime code into this file
3 */
4
5import {type NotificationReason} from '#/lib/hooks/useNotificationHandler'
6import {type FeedDescriptor} from '#/state/queries/post-feed'
7import {type LiveEventFeedMetricContext} from '#/features/liveEvents/types'
8
9export type Events = {
10 // App events
11 init: {
12 initMs: number
13 }
14 'experiment:viewed': {
15 experimentId: string
16 variationId: string
17 }
18
19 'account:loggedIn': {
20 logContext:
21 | 'LoginForm'
22 | 'SwitchAccount'
23 | 'ChooseAccountForm'
24 | 'Settings'
25 | 'Notification'
26 withPassword: boolean
27 }
28 'account:loggedOut': {
29 logContext:
30 | 'SwitchAccount'
31 | 'Settings'
32 | 'SignupQueued'
33 | 'Deactivated'
34 | 'Takendown'
35 | 'AgeAssuranceNoAccessScreen'
36 scope: 'current' | 'every'
37 }
38 'notifications:openApp': {
39 reason: NotificationReason
40 causedBoot: boolean
41 }
42 'notifications:request': {
43 context: 'StartOnboarding' | 'AfterOnboarding' | 'Login' | 'Home'
44 status: 'granted' | 'denied' | 'undetermined'
45 }
46 'state:background': {
47 secondsActive: number
48 }
49 'state:foreground': {}
50 'router:navigate': {
51 from?: string
52 }
53 'deepLink:referrerReceived': {
54 to: string
55 referrer: string
56 hostname: string
57 }
58
59 // Screen events
60 'splash:signInPressed': {}
61 'splash:createAccountPressed': {}
62 'welcomeModal:signupClicked': {}
63 'welcomeModal:exploreClicked': {}
64 'welcomeModal:signinClicked': {}
65 'welcomeModal:dismissed': {}
66 'welcomeModal:presented': {}
67 'signup:nextPressed': {
68 activeStep: number
69 phoneVerificationRequired?: boolean
70 }
71 'signup:backPressed': {
72 activeStep: number
73 }
74 'signup:captchaSuccess': {}
75 'signup:captchaFailure': {}
76 'signup:fieldError': {
77 field: string
78 errorCount: number
79 errorMessage: string
80 activeStep: number
81 }
82 'signup:backgrounded': {
83 activeStep: number
84 backgroundCount: number
85 }
86 'signup:handleTaken': {typeahead?: boolean}
87 'signup:handleAvailable': {typeahead?: boolean}
88 'signup:handleSuggestionSelected': {method: string}
89 'signin:hostingProviderPressed': {
90 hostingProviderDidChange: boolean
91 }
92 'signin:hostingProviderFailedResolution': {}
93 'signin:success': {
94 failedAttemptsCount: number
95 isUsingCustomProvider: boolean
96 timeTakenSeconds: number
97 }
98 'signin:backPressed': {
99 failedAttemptsCount: number
100 }
101 'signin:forgotPasswordPressed': {}
102 'signin:passwordReset': {}
103 'signin:passwordResetSuccess': {}
104 'signin:passwordResetFailure': {}
105 'onboarding:interests:nextPressed': {
106 selectedInterests: string[]
107 selectedInterestsLength: number
108 }
109 'onboarding:suggestedAccounts:tabPressed': {
110 tab: string
111 }
112 'onboarding:suggestedAccounts:followAllPressed': {
113 tab: string
114 numAccounts: number
115 }
116 'onboarding:suggestedAccounts:nextPressed': {
117 selectedAccountsLength: number
118 skipped: boolean
119 }
120 'onboarding:followingFeed:nextPressed': {}
121 'onboarding:algoFeeds:nextPressed': {
122 selectedPrimaryFeeds: string[]
123 selectedPrimaryFeedsLength: number
124 selectedSecondaryFeeds: string[]
125 selectedSecondaryFeedsLength: number
126 }
127 'onboarding:topicalFeeds:nextPressed': {
128 selectedFeeds: string[]
129 selectedFeedsLength: number
130 }
131 'onboarding:moderation:nextPressed': {}
132 'onboarding:profile:nextPressed': {}
133 'onboarding:finished:nextPressed': {
134 usedStarterPack: boolean
135 starterPackName?: string
136 starterPackCreator?: string
137 starterPackUri?: string
138 profilesFollowed: number
139 feedsPinned: number
140 }
141 'onboarding:finished:avatarResult': {
142 avatarResult: 'default' | 'created' | 'uploaded'
143 }
144 'onboarding:valueProp:stepOne:nextPressed': {}
145 'onboarding:valueProp:stepTwo:nextPressed': {}
146 'onboarding:valueProp:skipPressed': {}
147 'home:feedDisplayed': {
148 feedUrl: string
149 feedType: string
150 index: number
151 reason?: string
152 }
153 'feed:endReached': {
154 feedUrl: string
155 feedType: string
156 itemCount: number
157 }
158 'feed:refresh': {
159 feedUrl: string
160 feedType: string
161 reason: 'pull-to-refresh' | 'soft-reset' | 'load-latest'
162 }
163 'feed:save': {
164 feedUrl: string
165 }
166 'feed:unsave': {
167 feedUrl: string
168 }
169 'feed:pin': {
170 feedUrl: string
171 }
172 'feed:unpin': {
173 feedUrl: string
174 }
175 'feed:like': {
176 feedUrl: string
177 }
178 'feed:unlike': {
179 feedUrl: string
180 }
181 'feed:share': {
182 feedUrl: string
183 }
184 'feed:suggestion:seen': {
185 feedUrl: string
186 }
187 'feed:suggestion:press': {
188 feedUrl: string
189 }
190 'post:showMore': {
191 uri: string
192 authorDid: string
193 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
194 feedDescriptor?: string
195 position?: number
196 }
197 'post:showLess': {
198 uri: string
199 authorDid: string
200 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
201 feedDescriptor?: string
202 position?: number
203 }
204 'feed:clickthrough': {
205 feed: string
206 count: number
207 }
208 'feed:engaged': {
209 feed: string
210 count: number
211 }
212 'feed:seen': {
213 feed: string
214 count: number
215 }
216
217 'feed:discover:emptyError': {
218 userDid: string
219 }
220
221 'composer:gif:open': {}
222 'composer:gif:select': {}
223 'composerPrompt:press': {}
224 'composerPrompt:camera:press': {}
225 'composerPrompt:gallery:press': {}
226
227 'composer:threadgate:open': {
228 nudged: boolean
229 }
230 'composer:threadgate:save': {
231 replyOptions: string
232 quotesEnabled: boolean
233 persist: boolean
234 hasChanged: boolean
235 }
236 'composer:open': {
237 logContext:
238 | 'Fab'
239 | 'PostReply'
240 | 'QuotePost'
241 | 'ProfileFeed'
242 | 'Deeplink'
243 | 'Other'
244 isReply: boolean
245 hasQuote: boolean
246 hasDraft: boolean
247 }
248 'draft:save': {
249 isNewDraft: boolean
250 hasText: boolean
251 hasImages: boolean
252 hasVideo: boolean
253 hasGif: boolean
254 hasQuote: boolean
255 hasLink: boolean
256 postCount: number
257 textLength: number
258 }
259 'draft:load': {
260 draftAgeMs: number
261 hasText: boolean
262 hasImages: boolean
263 hasVideo: boolean
264 hasGif: boolean
265 postCount: number
266 }
267 'draft:delete': {
268 logContext: 'DraftsList'
269 draftAgeMs: number
270 }
271 'draft:listOpen': {
272 draftCount: number
273 }
274 'draft:post': {
275 draftAgeMs: number
276 wasEdited: boolean
277 }
278 'draft:discard': {
279 logContext: 'ComposerClose' | 'BeforeDraftsList'
280 hadContent: boolean
281 textLength: number
282 }
283
284 // Data events
285 'account:create:begin': {}
286 'account:create:success': {
287 signupDuration: number
288 fieldErrorsTotal: number
289 backgroundCount: number
290 }
291 'post:create': {
292 imageCount: number
293 isReply: boolean
294 isPartOfThread: boolean
295 hasLink: boolean
296 hasQuote: boolean
297 langs: string
298 logContext: 'Composer'
299 }
300 'thread:create': {
301 postCount: number
302 isReply: boolean
303 }
304 'post:like': {
305 uri: string
306 authorDid: string
307 doesLikerFollowPoster: boolean | undefined
308 doesPosterFollowLiker: boolean | undefined
309 likerClout: number | undefined
310 postClout: number | undefined
311 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
312 feedDescriptor?: string
313 }
314 'post:repost': {
315 uri: string
316 authorDid: string
317 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
318 feedDescriptor?: string
319 }
320 'post:unlike': {
321 uri: string
322 authorDid: string
323 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
324 feedDescriptor?: string
325 }
326 'post:unrepost': {
327 uri: string
328 authorDid: string
329 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
330 feedDescriptor?: string
331 }
332 'post:mute': {
333 uri: string
334 authorDid: string
335 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
336 feedDescriptor?: string
337 position?: number
338 }
339 'post:unmute': {
340 uri: string
341 authorDid: string
342 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
343 feedDescriptor?: string
344 position?: number
345 }
346 'post:pin': {}
347 'post:unpin': {}
348 'post:bookmark': {
349 uri: string
350 authorDid: string
351 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
352 feedDescriptor?: string
353 position?: number
354 }
355 'post:unbookmark': {
356 uri: string
357 authorDid: string
358 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
359 feedDescriptor?: string
360 position?: number
361 }
362 'post:clickReply': {
363 uri: string
364 authorDid: string
365 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
366 feedDescriptor?: string
367 position?: number
368 }
369 'post:clickQuotePost': {
370 uri: string
371 authorDid: string
372 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
373 feedDescriptor?: string
374 position?: number
375 }
376 'post:clickthroughAuthor': {
377 uri: string
378 authorDid: string
379 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
380 feedDescriptor?: string
381 position?: number
382 }
383 'post:clickthroughItem': {
384 uri: string
385 authorDid: string
386 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
387 feedDescriptor?: string
388 position?: number
389 }
390 'post:clickthroughEmbed': {
391 uri: string
392 authorDid: string
393 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
394 feedDescriptor?: string
395 position?: number
396 }
397 'post:view': {
398 uri: string
399 authorDid: string
400 logContext:
401 | 'FeedItem'
402 | 'PostThreadItem'
403 | 'Post'
404 | 'ImmersiveVideo'
405 | 'SearchResults'
406 | 'Bookmarks'
407 | 'Notifications'
408 | 'Hashtag'
409 | 'Topic'
410 | 'PostQuotes'
411 feedDescriptor?: string
412 position?: number
413 }
414 'bookmarks:view': {}
415 'bookmarks:post-clicked': {}
416 'profile:follow': {
417 contextProfileDid?: string
418 didBecomeMutual: boolean | undefined
419 followeeClout: number | undefined
420 followeeDid: string
421 followerClout: number | undefined
422 position?: number
423 logContext:
424 | 'RecommendedFollowsItem'
425 | 'PostThreadItem'
426 | 'ProfileCard'
427 | 'ProfileHeader'
428 | 'ProfileHeaderSuggestedFollows'
429 | 'ProfileMenu'
430 | 'ProfileHoverCard'
431 | 'AvatarButton'
432 | 'StarterPackProfilesList'
433 | 'FeedInterstitial'
434 | 'PostOnboardingFindFollows'
435 | 'ImmersiveVideo'
436 | 'ExploreSuggestedAccounts'
437 | 'OnboardingSuggestedAccounts'
438 | 'FindContacts'
439 }
440 'profile:followers:view': {
441 contextProfileDid: string
442 isOwnProfile: boolean
443 }
444 'profile:followers:paginate': {
445 contextProfileDid: string
446 itemCount: number
447 page: number
448 }
449 'profile:following:view': {
450 contextProfileDid: string
451 isOwnProfile: boolean
452 }
453 'profile:following:paginate': {
454 contextProfileDid: string
455 itemCount: number
456 page: number
457 }
458 'profileCard:seen': {
459 contextProfileDid?: string
460 profileDid: string
461 position?: number
462 }
463 'suggestedUser:follow': {
464 logContext:
465 | 'Explore'
466 | 'InterstitialDiscover'
467 | 'InterstitialProfile'
468 | 'Profile'
469 | 'Onboarding'
470 location: 'Card' | 'Profile' | 'FollowAll'
471 recId?: number | string
472 position: number
473 suggestedDid: string
474 category: string | null
475 }
476 'suggestedUser:press': {
477 logContext:
478 | 'Explore'
479 | 'InterstitialDiscover'
480 | 'InterstitialProfile'
481 | 'Onboarding'
482 recId?: number | string
483 position: number
484 suggestedDid: string
485 category: string | null
486 }
487 'suggestedUser:seen': {
488 logContext:
489 | 'Explore'
490 | 'InterstitialDiscover'
491 | 'InterstitialProfile'
492 | 'Profile'
493 | 'Onboarding'
494 | 'ProgressGuide'
495 recId?: number | string
496 position: number
497 suggestedDid: string
498 category: string | null
499 }
500 'suggestedUser:seeMore': {
501 logContext:
502 | 'Explore'
503 | 'InterstitialDiscover'
504 | 'InterstitialProfile'
505 | 'Profile'
506 | 'Onboarding'
507 }
508 'suggestedUser:dismiss': {
509 logContext: 'InterstitialDiscover' | 'InterstitialProfile'
510 recId?: number | string
511 position: number
512 suggestedDid: string
513 }
514 'profile:unfollow': {
515 logContext:
516 | 'RecommendedFollowsItem'
517 | 'PostThreadItem'
518 | 'ProfileCard'
519 | 'ProfileHeader'
520 | 'ProfileHeaderSuggestedFollows'
521 | 'ProfileMenu'
522 | 'ProfileHoverCard'
523 | 'Chat'
524 | 'AvatarButton'
525 | 'StarterPackProfilesList'
526 | 'FeedInterstitial'
527 | 'PostOnboardingFindFollows'
528 | 'ImmersiveVideo'
529 | 'ExploreSuggestedAccounts'
530 | 'OnboardingSuggestedAccounts'
531 | 'FindContacts'
532 }
533 'chat:create': {
534 logContext: 'ProfileHeader' | 'NewChatDialog' | 'SendViaChatDialog'
535 }
536 'chat:open': {
537 logContext:
538 | 'ProfileHeader'
539 | 'NewChatDialog'
540 | 'ChatsList'
541 | 'SendViaChatDialog'
542 }
543 'starterPack:addUser': {
544 starterPack?: string
545 }
546 'starterPack:removeUser': {
547 starterPack?: string
548 }
549 'starterPack:share': {
550 starterPack: string
551 shareType: 'link' | 'qrcode'
552 qrShareType?: 'save' | 'copy' | 'share'
553 }
554 'starterPack:followAll': {
555 logContext: 'StarterPackProfilesList' | 'Onboarding'
556 starterPack: string
557 count: number
558 }
559 'starterPack:delete': {}
560 'starterPack:create': {
561 setName: boolean
562 setDescription: boolean
563 profilesCount: number
564 feedsCount: number
565 }
566 'starterPack:ctaPress': {
567 starterPack: string
568 }
569 'starterPack:opened': {
570 starterPack: string
571 }
572 'link:clicked': {
573 url: string
574 domain: string
575 }
576
577 'feed:interstitial:feedCard:press': {}
578 'desktopFeeds:feed:click': {
579 feedUri: string
580 feedDescriptor: string
581 }
582
583 'profile:header:suggestedFollowsCard:press': {}
584 'profile:addToStarterPack': {}
585
586 'test:all:always': {}
587 'test:all:sometimes': {}
588 'test:all:boosted_by_gate1': {reason: 'base' | 'gate1'}
589 'test:all:boosted_by_gate2': {reason: 'base' | 'gate2'}
590 'test:all:boosted_by_both': {reason: 'base' | 'gate1' | 'gate2'}
591 'test:gate1:always': {}
592 'test:gate1:sometimes': {}
593 'test:gate2:always': {}
594 'test:gate2:sometimes': {}
595
596 'tmd:share': {}
597 'tmd:download': {}
598 'tmd:post': {}
599
600 'trendingTopics:show': {
601 context: 'settings'
602 }
603 'trendingTopics:hide': {
604 context: 'settings' | 'sidebar' | 'interstitial' | 'explore:trending'
605 }
606 'trendingTopic:click': {
607 context: 'sidebar' | 'interstitial' | 'explore'
608 }
609 'recommendedTopic:click': {
610 context: 'explore'
611 }
612 'trendingVideos:show': {
613 context: 'settings'
614 }
615 'trendingVideos:hide': {
616 context: 'settings' | 'interstitial:discover' | 'interstitial:explore'
617 }
618 'videoCard:click': {
619 context: 'interstitial:discover' | 'interstitial:explore' | 'feed'
620 }
621
622 'explore:module:seen': {
623 module:
624 | 'trendingTopics'
625 | 'trendingVideos'
626 | 'suggestedAccounts'
627 | 'suggestedFeeds'
628 | 'suggestedStarterPacks'
629 | `feed:${FeedDescriptor}`
630 }
631 'explore:module:searchButtonPress': {
632 module: 'suggestedAccounts' | 'suggestedFeeds'
633 }
634 'explore:suggestedAccounts:tabPressed': {
635 tab: string
636 }
637
638 'progressGuide:hide': {}
639 'progressGuide:followDialog:open': {}
640
641 'moderation:subscribedToLabeler': {}
642 'moderation:unsubscribedFromLabeler': {}
643 'moderation:changeLabelPreference': {
644 preference: string
645 }
646
647 'moderation:subscribedToList': {
648 listType: 'mute' | 'block'
649 }
650 'moderation:unsubscribedFromList': {
651 listType: 'mute' | 'block'
652 }
653
654 'reportDialog:open': {
655 subjectType: string
656 }
657 'reportDialog:close': {}
658 'reportDialog:success': {
659 reason: string
660 labeler: string
661 details: boolean
662 }
663 'reportDialog:failure': {}
664
665 translate: {
666 sourceLanguages: string[]
667 targetLanguage: string
668 textLength: number
669 }
670
671 'verification:create': {}
672 'verification:revoke': {}
673 'verification:badge:click': {}
674 'verification:learn-more': {
675 location:
676 | 'initialAnnouncementeNux'
677 | 'verificationsDialog'
678 | 'verifierDialog'
679 | 'verificationSettings'
680 }
681 'verification:settings:hideBadges': {}
682 'verification:settings:unHideBadges': {}
683
684 'live:create': {duration: number}
685 'live:edit': {}
686 'live:remove': {}
687 'live:card:open': {subject: string; from: 'post' | 'profile'}
688 'live:card:watch': {subject: string}
689 'live:card:openProfile': {subject: string}
690 'live:view:profile': {subject: string}
691 'live:view:post': {subject: string; feed?: string}
692
693 'post:share': {
694 uri: string
695 authorDid: string
696 logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo'
697 feedDescriptor?: string
698 postContext: 'feed' | 'thread'
699 position?: number
700 }
701 'share:press:copyLink': {}
702 'share:press:nativeShare': {}
703 'share:press:openDmSearch': {}
704 'share:press:dmSelected': {}
705 'share:press:recentDm': {}
706 'share:press:embed': {}
707
708 'thread:click:showOtherReplies': {}
709 'thread:click:hideReplyForMe': {}
710 'thread:click:hideReplyForEveryone': {}
711 'thread:preferences:load': {
712 [key: string]: any
713 }
714 'thread:preferences:update': {
715 [key: string]: any
716 }
717 'thread:click:headerMenuOpen': {}
718 'thread:click:editOwnThreadgate': {}
719 'thread:click:viewSomeoneElsesThreadgate': {}
720 'activitySubscription:enable': {
721 setting: 'posts' | 'posts_and_replies'
722 }
723 'activitySubscription:disable': {}
724 'activityPreference:changeChannels': {
725 name: string
726 push: boolean
727 list: boolean
728 }
729 'activityPreference:changeFilter': {
730 name: string
731 value: string
732 }
733
734 'ageAssurance:navigateToSettings': {}
735 'ageAssurance:dismissFeedBanner': {}
736 'ageAssurance:dismissSettingsNotice': {}
737 'ageAssurance:initDialogOpen': {
738 hasInitiatedPreviously: boolean
739 }
740 'ageAssurance:initDialogSubmit': {}
741 'ageAssurance:api:begin': {
742 platform: string
743 countryCode: string
744 regionCode?: string
745 }
746 'ageAssurance:initDialogError': {
747 code: string
748 }
749 'ageAssurance:redirectDialogOpen': {}
750 'ageAssurance:redirectDialogSuccess': {}
751 'ageAssurance:redirectDialogFail': {}
752 'ageAssurance:appealDialogOpen': {}
753 'ageAssurance:appealDialogSubmit': {}
754 'ageAssurance:noAccessScreen:shown': {
755 accountCreatedAt: string
756 isAARegion: boolean
757 hasDeclaredAge: boolean
758 canUpdateBirthday: boolean
759 }
760 'ageAssurance:noAccessScreen:openBirthdateDialog': {}
761
762 /*
763 * Specifically for the `BlockedGeoOverlay`
764 */
765 'blockedGeoOverlay:shown': {}
766
767 'geo:debug': {}
768
769 /*
770 * Find Contacts stuff
771 */
772
773 // user presses the button on the new feature NUX
774 'contacts:nux:ctaPressed': {}
775 // user presses the banner NUX
776 'contacts:nux:bannerPressed': {}
777 // user dismisses the banner
778 'contacts:nux:bannerDismissed': {}
779
780 // user lands on the contacts step
781 'onboarding:contacts:presented': {}
782 // user pressed "Import Contacts" button to begin flow
783 'onboarding:contacts:begin': {}
784 // skips the step entirely
785 'onboarding:contacts:skipPressed': {}
786 // user shared their contacts
787 'onboarding:contacts:contactsShared': {}
788 // user leaves the matches page
789 'onboarding:contacts:nextPressed': {
790 matchCount: number
791 followCount: number
792 dismissedMatchCount: number
793 }
794
795 // user entered a number
796 'contacts:phone:phoneEntered': {
797 entryPoint: 'Onboarding' | 'Standalone'
798 }
799 // user entered the correct one-time-code
800 'contacts:phone:phoneVerified': {
801 entryPoint: 'Onboarding' | 'Standalone'
802 }
803 // user responded to the contacts permission prompt
804 'contacts:permission:request': {
805 status: 'granted' | 'denied'
806 accessLevelIOS?: 'all' | 'limited' | 'none'
807 }
808 // contacts were successfully imported and matched
809 'contacts:import:success': {
810 contactCount: number
811 matchCount: number
812 entryPoint: 'Onboarding' | 'Standalone'
813 }
814 // contacts import failed
815 'contacts:import:failure': {
816 reason: 'noValidNumbers' | 'networkError' | 'unknown'
817 entryPoint: 'Onboarding' | 'Standalone'
818 }
819 // user followed a single match
820 'contacts:matches:follow': {
821 entryPoint: 'Onboarding' | 'Standalone'
822 }
823 // user pressed "Follow All" on matches
824 'contacts:matches:followAll': {
825 followCount: number
826 entryPoint: 'Onboarding' | 'Standalone'
827 }
828 // user dismissed a match
829 'contacts:matches:dismiss': {
830 entryPoint: 'Onboarding' | 'Standalone'
831 }
832 // user pressed invite to send an SMS to a non-match
833 'contacts:matches:invite': {
834 entryPoint: 'Onboarding' | 'Standalone'
835 }
836 // user opened the Find Contacts settings screen
837 'contacts:settings:presented': {
838 hasPreviouslySynced: boolean
839 matchCount?: number
840 }
841 // user followed a single match from settings
842 'contacts:settings:follow': {}
843 // user pressed "Follow All" from settings
844 'contacts:settings:followAll': {
845 followCount: number
846 }
847 // user dismissed a match from settings
848 'contacts:settings:dismiss': {}
849 // user re-entered the flow via the resync button
850 'contacts:settings:resync': {
851 daysSinceLastSync: number
852 }
853 // user pressed the remove all data button
854 'contacts:settings:removeData': {}
855
856 'liveEvents:feedBanner:seen': {
857 feed: string
858 context: LiveEventFeedMetricContext
859 }
860 'liveEvents:feedBanner:click': {
861 feed: string
862 context: LiveEventFeedMetricContext
863 }
864 'liveEvents:feedBanner:hide': {
865 feed: string
866 context: LiveEventFeedMetricContext
867 }
868 'liveEvents:feedBanner:unhide': {
869 feed: string
870 context: LiveEventFeedMetricContext
871 }
872 'liveEvents:hideAllFeedBanners': {
873 context: LiveEventFeedMetricContext
874 }
875 'liveEvents:unhideAllFeedBanners': {
876 context: LiveEventFeedMetricContext
877 }
878}