about summary refs log tree commit diff
path: root/src/view/screens
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/screens')
-rw-r--r--src/view/screens/AccessibilitySettings.tsx5
-rw-r--r--src/view/screens/AppPasswords.tsx7
-rw-r--r--src/view/screens/LanguageSettings.tsx8
-rw-r--r--src/view/screens/ModerationBlockedAccounts.tsx15
-rw-r--r--src/view/screens/ModerationMutedAccounts.tsx15
-rw-r--r--src/view/screens/Notifications.tsx11
-rw-r--r--src/view/screens/PreferencesExternalEmbeds.tsx5
-rw-r--r--src/view/screens/Profile.tsx6
-rw-r--r--src/view/screens/ProfileFeed.tsx56
-rw-r--r--src/view/screens/ProfileList.tsx74
-rw-r--r--src/view/screens/SavedFeeds.tsx36
-rw-r--r--src/view/screens/Search/Search.tsx5
-rw-r--r--src/view/screens/Settings/index.tsx11
13 files changed, 98 insertions, 156 deletions
diff --git a/src/view/screens/AccessibilitySettings.tsx b/src/view/screens/AccessibilitySettings.tsx
index 158dc8b8d..5d314e8e6 100644
--- a/src/view/screens/AccessibilitySettings.tsx
+++ b/src/view/screens/AccessibilitySettings.tsx
@@ -4,7 +4,6 @@ import {msg, Trans} from '@lingui/macro'
 import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {usePalette} from '#/lib/hooks/usePalette'
 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
 import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
@@ -36,7 +35,6 @@ type Props = NativeStackScreenProps<
 export function AccessibilitySettingsScreen({}: Props) {
   const pal = usePalette('default')
   const setMinimalShellMode = useSetMinimalShellMode()
-  const {screen} = useAnalytics()
   const {isMobile, isTabletOrMobile} = useWebMediaQueries()
   const {_} = useLingui()
 
@@ -51,9 +49,8 @@ export function AccessibilitySettingsScreen({}: Props) {
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('PreferencesExternalEmbeds')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   return (
diff --git a/src/view/screens/AppPasswords.tsx b/src/view/screens/AppPasswords.tsx
index 6f1cd1bb8..21a9cb0eb 100644
--- a/src/view/screens/AppPasswords.tsx
+++ b/src/view/screens/AppPasswords.tsx
@@ -12,7 +12,6 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
 import {NativeStackScreenProps} from '@react-navigation/native-stack'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {usePalette} from '#/lib/hooks/usePalette'
 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
 import {CommonNavigatorParams} from '#/lib/routes/types'
@@ -28,7 +27,7 @@ import {Button} from '#/view/com/util/forms/Button'
 import {Text} from '#/view/com/util/text/Text'
 import * as Toast from '#/view/com/util/Toast'
 import {ViewHeader} from '#/view/com/util/ViewHeader'
-import {CenteredView} from 'view/com/util/Views'
+import {CenteredView} from '#/view/com/util/Views'
 import {atoms as a} from '#/alf'
 import {useDialogControl} from '#/components/Dialog'
 import * as Prompt from '#/components/Prompt'
@@ -38,16 +37,14 @@ export function AppPasswords({}: Props) {
   const pal = usePalette('default')
   const {_} = useLingui()
   const setMinimalShellMode = useSetMinimalShellMode()
-  const {screen} = useAnalytics()
   const {isTabletOrDesktop} = useWebMediaQueries()
   const {openModal} = useModalControls()
   const {data: appPasswords, error} = useAppPasswordsQuery()
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('AppPasswords')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   const onAdd = React.useCallback(async () => {
diff --git a/src/view/screens/LanguageSettings.tsx b/src/view/screens/LanguageSettings.tsx
index bd69d7a55..c1daa54e6 100644
--- a/src/view/screens/LanguageSettings.tsx
+++ b/src/view/screens/LanguageSettings.tsx
@@ -10,7 +10,6 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
 
 import {APP_LANGUAGES, LANGUAGES} from '#/lib/../locale/languages'
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {usePalette} from '#/lib/hooks/usePalette'
 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
 import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
@@ -32,21 +31,18 @@ export function LanguageSettingsScreen(_props: Props) {
   const langPrefs = useLanguagePrefs()
   const setLangPrefs = useLanguagePrefsApi()
   const {isTabletOrDesktop} = useWebMediaQueries()
-  const {screen, track} = useAnalytics()
   const setMinimalShellMode = useSetMinimalShellMode()
   const {openModal} = useModalControls()
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('Settings')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   const onPressContentLanguages = React.useCallback(() => {
-    track('Settings:ContentlanguagesButtonClicked')
     openModal({name: 'content-languages-settings'})
-  }, [track, openModal])
+  }, [openModal])
 
   const onChangePrimaryLanguage = React.useCallback(
     (value: Parameters<PickerSelectProps['onValueChange']>[0]) => {
diff --git a/src/view/screens/ModerationBlockedAccounts.tsx b/src/view/screens/ModerationBlockedAccounts.tsx
index ebd9bb23e..88a5df7ec 100644
--- a/src/view/screens/ModerationBlockedAccounts.tsx
+++ b/src/view/screens/ModerationBlockedAccounts.tsx
@@ -12,16 +12,15 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
 import {NativeStackScreenProps} from '@react-navigation/native-stack'
 
+import {usePalette} from '#/lib/hooks/usePalette'
+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
+import {CommonNavigatorParams} from '#/lib/routes/types'
 import {cleanError} from '#/lib/strings/errors'
 import {logger} from '#/logger'
 import {useMyBlockedAccountsQuery} from '#/state/queries/my-blocked-accounts'
 import {useSetMinimalShellMode} from '#/state/shell'
-import {useAnalytics} from 'lib/analytics/analytics'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {CommonNavigatorParams} from 'lib/routes/types'
-import {ProfileCard} from 'view/com/profile/ProfileCard'
-import {CenteredView} from 'view/com/util/Views'
+import {ProfileCard} from '#/view/com/profile/ProfileCard'
+import {CenteredView} from '#/view/com/util/Views'
 import {ErrorScreen} from '../com/util/error/ErrorScreen'
 import {Text} from '../com/util/text/Text'
 import {ViewHeader} from '../com/util/ViewHeader'
@@ -35,7 +34,6 @@ export function ModerationBlockedAccounts({}: Props) {
   const {_} = useLingui()
   const setMinimalShellMode = useSetMinimalShellMode()
   const {isTabletOrDesktop} = useWebMediaQueries()
-  const {screen} = useAnalytics()
 
   const [isPTRing, setIsPTRing] = React.useState(false)
   const {
@@ -58,9 +56,8 @@ export function ModerationBlockedAccounts({}: Props) {
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('BlockedAccounts')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   const onRefresh = React.useCallback(async () => {
diff --git a/src/view/screens/ModerationMutedAccounts.tsx b/src/view/screens/ModerationMutedAccounts.tsx
index e395a3a5b..bd29cb2d9 100644
--- a/src/view/screens/ModerationMutedAccounts.tsx
+++ b/src/view/screens/ModerationMutedAccounts.tsx
@@ -12,16 +12,15 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
 import {NativeStackScreenProps} from '@react-navigation/native-stack'
 
+import {usePalette} from '#/lib/hooks/usePalette'
+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
+import {CommonNavigatorParams} from '#/lib/routes/types'
 import {cleanError} from '#/lib/strings/errors'
 import {logger} from '#/logger'
 import {useMyMutedAccountsQuery} from '#/state/queries/my-muted-accounts'
 import {useSetMinimalShellMode} from '#/state/shell'
-import {useAnalytics} from 'lib/analytics/analytics'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {CommonNavigatorParams} from 'lib/routes/types'
-import {ProfileCard} from 'view/com/profile/ProfileCard'
-import {CenteredView} from 'view/com/util/Views'
+import {ProfileCard} from '#/view/com/profile/ProfileCard'
+import {CenteredView} from '#/view/com/util/Views'
 import {ErrorScreen} from '../com/util/error/ErrorScreen'
 import {Text} from '../com/util/text/Text'
 import {ViewHeader} from '../com/util/ViewHeader'
@@ -35,7 +34,6 @@ export function ModerationMutedAccounts({}: Props) {
   const {_} = useLingui()
   const setMinimalShellMode = useSetMinimalShellMode()
   const {isTabletOrDesktop} = useWebMediaQueries()
-  const {screen} = useAnalytics()
 
   const [isPTRing, setIsPTRing] = React.useState(false)
   const {
@@ -58,9 +56,8 @@ export function ModerationMutedAccounts({}: Props) {
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('MutedAccounts')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   const onRefresh = React.useCallback(async () => {
diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx
index 073e91c45..818d3d0ed 100644
--- a/src/view/screens/Notifications.tsx
+++ b/src/view/screens/Notifications.tsx
@@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect, useIsFocused} from '@react-navigation/native'
 import {useQueryClient} from '@tanstack/react-query'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
 import {ComposeIcon2} from '#/lib/icons'
@@ -27,11 +26,11 @@ import {useSetMinimalShellMode} from '#/state/shell'
 import {useComposerControls} from '#/state/shell/composer'
 import {Feed} from '#/view/com/notifications/Feed'
 import {FAB} from '#/view/com/util/fab/FAB'
+import {ListMethods} from '#/view/com/util/List'
+import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn'
 import {MainScrollProvider} from '#/view/com/util/MainScrollProvider'
 import {ViewHeader} from '#/view/com/util/ViewHeader'
-import {ListMethods} from 'view/com/util/List'
-import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn'
-import {CenteredView} from 'view/com/util/Views'
+import {CenteredView} from '#/view/com/util/Views'
 import {atoms as a, useTheme} from '#/alf'
 import {Button} from '#/components/Button'
 import {SettingsGear2_Stroke2_Corner0_Rounded as SettingsIcon} from '#/components/icons/SettingsGear2'
@@ -49,7 +48,6 @@ export function NotificationsScreen({route: {params}}: Props) {
   const [isScrolledDown, setIsScrolledDown] = React.useState(false)
   const [isLoadingLatest, setIsLoadingLatest] = React.useState(false)
   const scrollElRef = React.useRef<ListMethods>(null)
-  const {screen} = useAnalytics()
   const t = useTheme()
   const {isDesktop} = useWebMediaQueries()
   const queryClient = useQueryClient()
@@ -101,9 +99,8 @@ export function NotificationsScreen({route: {params}}: Props) {
     React.useCallback(() => {
       setMinimalShellMode(false)
       logger.debug('NotificationsScreen: Focus')
-      screen('Notifications')
       onFocusCheckLatest()
-    }, [screen, setMinimalShellMode, onFocusCheckLatest]),
+    }, [setMinimalShellMode, onFocusCheckLatest]),
   )
   React.useEffect(() => {
     if (!isScreenFocused) {
diff --git a/src/view/screens/PreferencesExternalEmbeds.tsx b/src/view/screens/PreferencesExternalEmbeds.tsx
index 8b3550d6b..ae23b6e95 100644
--- a/src/view/screens/PreferencesExternalEmbeds.tsx
+++ b/src/view/screens/PreferencesExternalEmbeds.tsx
@@ -3,7 +3,6 @@ import {StyleSheet, View} from 'react-native'
 import {Trans} from '@lingui/macro'
 import {useFocusEffect} from '@react-navigation/native'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {usePalette} from '#/lib/hooks/usePalette'
 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
 import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
@@ -30,14 +29,12 @@ type Props = NativeStackScreenProps<
 export function PreferencesExternalEmbeds({}: Props) {
   const pal = usePalette('default')
   const setMinimalShellMode = useSetMinimalShellMode()
-  const {screen} = useAnalytics()
   const {isTabletOrMobile} = useWebMediaQueries()
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('PreferencesExternalEmbeds')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   return (
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index b37445fad..772625695 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -16,7 +16,6 @@ import {
   useQueryClient,
 } from '@tanstack/react-query'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {useSetTitle} from '#/lib/hooks/useSetTitle'
 import {ComposeIcon2} from '#/lib/icons'
 import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
@@ -167,7 +166,6 @@ function ProfileScreenLoaded({
   const {hasSession, currentAccount} = useSession()
   const setMinimalShellMode = useSetMinimalShellMode()
   const {openComposer} = useComposerControls()
-  const {screen, track} = useAnalytics()
   const {
     data: labelerInfo,
     error: labelerError,
@@ -296,11 +294,10 @@ function ProfileScreenLoaded({
   useFocusEffect(
     React.useCallback(() => {
       setMinimalShellMode(false)
-      screen('Profile')
       return listenSoftReset(() => {
         scrollSectionToTop(currentPage)
       })
-    }, [setMinimalShellMode, screen, currentPage, scrollSectionToTop]),
+    }, [setMinimalShellMode, currentPage, scrollSectionToTop]),
   )
 
   useFocusEffect(
@@ -316,7 +313,6 @@ function ProfileScreenLoaded({
   // =
 
   const onPressCompose = () => {
-    track('ProfileScreen:PressCompose')
     const mention =
       profile.handle === currentAccount?.handle ||
       isInvalidHandle(profile.handle)
diff --git a/src/view/screens/ProfileFeed.tsx b/src/view/screens/ProfileFeed.tsx
index 60e5193ff..a094cc3dd 100644
--- a/src/view/screens/ProfileFeed.tsx
+++ b/src/view/screens/ProfileFeed.tsx
@@ -8,6 +8,17 @@ import {NativeStackScreenProps} from '@react-navigation/native-stack'
 import {useQueryClient} from '@tanstack/react-query'
 
 import {HITSLOP_20} from '#/lib/constants'
+import {useHaptics} from '#/lib/haptics'
+import {usePalette} from '#/lib/hooks/usePalette'
+import {useSetTitle} from '#/lib/hooks/useSetTitle'
+import {ComposeIcon2} from '#/lib/icons'
+import {makeCustomFeedLink} from '#/lib/routes/links'
+import {CommonNavigatorParams} from '#/lib/routes/types'
+import {NavigationProp} from '#/lib/routes/types'
+import {shareUrl} from '#/lib/sharing'
+import {makeRecordUri} from '#/lib/strings/url-helpers'
+import {toShareUrl} from '#/lib/strings/url-helpers'
+import {s} from '#/lib/styles'
 import {logger} from '#/logger'
 import {isNative} from '#/platform/detection'
 import {listenSoftReset} from '#/state/events'
@@ -27,30 +38,18 @@ import {useResolveUriQuery} from '#/state/queries/resolve-uri'
 import {truncateAndInvalidate} from '#/state/queries/util'
 import {useSession} from '#/state/session'
 import {useComposerControls} from '#/state/shell/composer'
-import {useAnalytics} from 'lib/analytics/analytics'
-import {useHaptics} from 'lib/haptics'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useSetTitle} from 'lib/hooks/useSetTitle'
-import {ComposeIcon2} from 'lib/icons'
-import {makeCustomFeedLink} from 'lib/routes/links'
-import {CommonNavigatorParams} from 'lib/routes/types'
-import {NavigationProp} from 'lib/routes/types'
-import {shareUrl} from 'lib/sharing'
-import {makeRecordUri} from 'lib/strings/url-helpers'
-import {toShareUrl} from 'lib/strings/url-helpers'
-import {s} from 'lib/styles'
-import {PagerWithHeader} from 'view/com/pager/PagerWithHeader'
-import {Feed} from 'view/com/posts/Feed'
-import {ProfileSubpageHeader} from 'view/com/profile/ProfileSubpageHeader'
-import {EmptyState} from 'view/com/util/EmptyState'
-import {FAB} from 'view/com/util/fab/FAB'
-import {Button} from 'view/com/util/forms/Button'
-import {ListRef} from 'view/com/util/List'
-import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn'
-import {LoadingScreen} from 'view/com/util/LoadingScreen'
-import {Text} from 'view/com/util/text/Text'
-import * as Toast from 'view/com/util/Toast'
-import {CenteredView} from 'view/com/util/Views'
+import {PagerWithHeader} from '#/view/com/pager/PagerWithHeader'
+import {Feed} from '#/view/com/posts/Feed'
+import {ProfileSubpageHeader} from '#/view/com/profile/ProfileSubpageHeader'
+import {EmptyState} from '#/view/com/util/EmptyState'
+import {FAB} from '#/view/com/util/fab/FAB'
+import {Button} from '#/view/com/util/forms/Button'
+import {ListRef} from '#/view/com/util/List'
+import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn'
+import {LoadingScreen} from '#/view/com/util/LoadingScreen'
+import {Text} from '#/view/com/util/text/Text'
+import * as Toast from '#/view/com/util/Toast'
+import {CenteredView} from '#/view/com/util/Views'
 import {atoms as a, useTheme} from '#/alf'
 import {Button as NewButton, ButtonText} from '#/components/Button'
 import {useRichText} from '#/components/hooks/useRichText'
@@ -158,7 +157,6 @@ export function ProfileFeedScreenInner({
   const {hasSession, currentAccount} = useSession()
   const reportDialogControl = useReportDialogControl()
   const {openComposer} = useComposerControls()
-  const {track} = useAnalytics()
   const playHaptic = useHaptics()
   const feedSectionRef = React.useRef<SectionRef>(null)
   const isScreenFocused = useIsFocused()
@@ -247,8 +245,7 @@ export function ProfileFeedScreenInner({
   const onPressShare = React.useCallback(() => {
     const url = toShareUrl(feedInfo.route.href)
     shareUrl(url)
-    track('CustomFeed:Share')
-  }, [feedInfo, track])
+  }, [feedInfo])
 
   const onPressReport = React.useCallback(() => {
     reportDialogControl.open()
@@ -515,7 +512,6 @@ function AboutSection({
   const {_} = useLingui()
   const [likeUri, setLikeUri] = React.useState(feedInfo.likeUri)
   const {hasSession} = useSession()
-  const {track} = useAnalytics()
   const playHaptic = useHaptics()
   const {mutateAsync: likeFeed, isPending: isLikePending} = useLikeMutation()
   const {mutateAsync: unlikeFeed, isPending: isUnlikePending} =
@@ -532,11 +528,9 @@ function AboutSection({
 
       if (isLiked && likeUri) {
         await unlikeFeed({uri: likeUri})
-        track('CustomFeed:Unlike')
         setLikeUri('')
       } else {
         const res = await likeFeed({uri: feedInfo.uri, cid: feedInfo.cid})
-        track('CustomFeed:Like')
         setLikeUri(res.uri)
       }
     } catch (err) {
@@ -548,7 +542,7 @@ function AboutSection({
       )
       logger.error('Failed up toggle like', {message: err})
     }
-  }, [playHaptic, isLiked, likeUri, unlikeFeed, track, likeFeed, feedInfo, _])
+  }, [playHaptic, isLiked, likeUri, unlikeFeed, likeFeed, feedInfo, _])
 
   return (
     <View style={[styles.aboutSectionContainer]}>
diff --git a/src/view/screens/ProfileList.tsx b/src/view/screens/ProfileList.tsx
index 0c2c6405f..e0fd18ae9 100644
--- a/src/view/screens/ProfileList.tsx
+++ b/src/view/screens/ProfileList.tsx
@@ -14,8 +14,19 @@ import {useFocusEffect, useIsFocused} from '@react-navigation/native'
 import {useNavigation} from '@react-navigation/native'
 import {useQueryClient} from '@tanstack/react-query'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
+import {useHaptics} from '#/lib/haptics'
+import {usePalette} from '#/lib/hooks/usePalette'
+import {useSetTitle} from '#/lib/hooks/useSetTitle'
+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
+import {ComposeIcon2} from '#/lib/icons'
+import {makeListLink, makeProfileLink} from '#/lib/routes/links'
+import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
+import {NavigationProp} from '#/lib/routes/types'
+import {shareUrl} from '#/lib/sharing'
 import {cleanError} from '#/lib/strings/errors'
+import {sanitizeHandle} from '#/lib/strings/handles'
+import {toShareUrl} from '#/lib/strings/url-helpers'
+import {s} from '#/lib/styles'
 import {logger} from '#/logger'
 import {isNative, isWeb} from '#/platform/detection'
 import {listenSoftReset} from '#/state/events'
@@ -41,33 +52,24 @@ import {truncateAndInvalidate} from '#/state/queries/util'
 import {useSession} from '#/state/session'
 import {useSetMinimalShellMode} from '#/state/shell'
 import {useComposerControls} from '#/state/shell/composer'
-import {useHaptics} from 'lib/haptics'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useSetTitle} from 'lib/hooks/useSetTitle'
-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {ComposeIcon2} from 'lib/icons'
-import {makeListLink, makeProfileLink} from 'lib/routes/links'
-import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types'
-import {NavigationProp} from 'lib/routes/types'
-import {shareUrl} from 'lib/sharing'
-import {sanitizeHandle} from 'lib/strings/handles'
-import {toShareUrl} from 'lib/strings/url-helpers'
-import {s} from 'lib/styles'
 import {ListMembers} from '#/view/com/lists/ListMembers'
-import {PagerWithHeader} from 'view/com/pager/PagerWithHeader'
-import {Feed} from 'view/com/posts/Feed'
-import {ProfileSubpageHeader} from 'view/com/profile/ProfileSubpageHeader'
-import {EmptyState} from 'view/com/util/EmptyState'
-import {FAB} from 'view/com/util/fab/FAB'
-import {Button} from 'view/com/util/forms/Button'
-import {DropdownItem, NativeDropdown} from 'view/com/util/forms/NativeDropdown'
-import {TextLink} from 'view/com/util/Link'
-import {ListRef} from 'view/com/util/List'
-import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn'
-import {LoadingScreen} from 'view/com/util/LoadingScreen'
-import {Text} from 'view/com/util/text/Text'
-import * as Toast from 'view/com/util/Toast'
-import {CenteredView} from 'view/com/util/Views'
+import {PagerWithHeader} from '#/view/com/pager/PagerWithHeader'
+import {Feed} from '#/view/com/posts/Feed'
+import {ProfileSubpageHeader} from '#/view/com/profile/ProfileSubpageHeader'
+import {EmptyState} from '#/view/com/util/EmptyState'
+import {FAB} from '#/view/com/util/fab/FAB'
+import {Button} from '#/view/com/util/forms/Button'
+import {
+  DropdownItem,
+  NativeDropdown,
+} from '#/view/com/util/forms/NativeDropdown'
+import {TextLink} from '#/view/com/util/Link'
+import {ListRef} from '#/view/com/util/List'
+import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn'
+import {LoadingScreen} from '#/view/com/util/LoadingScreen'
+import {Text} from '#/view/com/util/text/Text'
+import * as Toast from '#/view/com/util/Toast'
+import {CenteredView} from '#/view/com/util/Views'
 import {ListHiddenScreen} from '#/screens/List/ListHiddenScreen'
 import {atoms as a, useTheme} from '#/alf'
 import {useDialogControl} from '#/components/Dialog'
@@ -306,7 +308,6 @@ function Header({
   const isBlocking = !!list.viewer?.blocked
   const isMuting = !!list.viewer?.muted
   const isOwner = list.creator.did === currentAccount?.did
-  const {track} = useAnalytics()
   const playHaptic = useHaptics()
 
   const {mutateAsync: addSavedFeeds, isPending: isAddSavedFeedPending} =
@@ -384,7 +385,6 @@ function Header({
     try {
       await listMuteMutation.mutateAsync({uri: list.uri, mute: true})
       Toast.show(_(msg`List muted`))
-      track('Lists:Mute')
     } catch {
       Toast.show(
         _(
@@ -392,13 +392,12 @@ function Header({
         ),
       )
     }
-  }, [list, listMuteMutation, track, _])
+  }, [list, listMuteMutation, _])
 
   const onUnsubscribeMute = useCallback(async () => {
     try {
       await listMuteMutation.mutateAsync({uri: list.uri, mute: false})
       Toast.show(_(msg`List unmuted`))
-      track('Lists:Unmute')
     } catch {
       Toast.show(
         _(
@@ -406,13 +405,12 @@ function Header({
         ),
       )
     }
-  }, [list, listMuteMutation, track, _])
+  }, [list, listMuteMutation, _])
 
   const onSubscribeBlock = useCallback(async () => {
     try {
       await listBlockMutation.mutateAsync({uri: list.uri, block: true})
       Toast.show(_(msg`List blocked`))
-      track('Lists:Block')
     } catch {
       Toast.show(
         _(
@@ -420,13 +418,12 @@ function Header({
         ),
       )
     }
-  }, [list, listBlockMutation, track, _])
+  }, [list, listBlockMutation, _])
 
   const onUnsubscribeBlock = useCallback(async () => {
     try {
       await listBlockMutation.mutateAsync({uri: list.uri, block: false})
       Toast.show(_(msg`List unblocked`))
-      track('Lists:Unblock')
     } catch {
       Toast.show(
         _(
@@ -434,7 +431,7 @@ function Header({
         ),
       )
     }
-  }, [list, listBlockMutation, track, _])
+  }, [list, listBlockMutation, _])
 
   const onPressEdit = useCallback(() => {
     openModal({
@@ -451,7 +448,6 @@ function Header({
     }
 
     Toast.show(_(msg`List deleted`))
-    track('Lists:Delete')
     if (navigation.canGoBack()) {
       navigation.goBack()
     } else {
@@ -461,7 +457,6 @@ function Header({
     list,
     listDeleteMutation,
     navigation,
-    track,
     _,
     removeSavedFeed,
     savedFeedConfig,
@@ -474,8 +469,7 @@ function Header({
   const onPressShare = useCallback(() => {
     const url = toShareUrl(`/profile/${list.creator.did}/lists/${rkey}`)
     shareUrl(url)
-    track('Lists:Share')
-  }, [list, rkey, track])
+  }, [list, rkey])
 
   const dropdownItems: DropdownItem[] = useMemo(() => {
     let items: DropdownItem[] = [
diff --git a/src/view/screens/SavedFeeds.tsx b/src/view/screens/SavedFeeds.tsx
index 3402db2c1..66bbd9b8a 100644
--- a/src/view/screens/SavedFeeds.tsx
+++ b/src/view/screens/SavedFeeds.tsx
@@ -7,7 +7,11 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect} from '@react-navigation/native'
 import {NativeStackScreenProps} from '@react-navigation/native-stack'
 
-import {track} from '#/lib/analytics/analytics'
+import {useHaptics} from '#/lib/haptics'
+import {usePalette} from '#/lib/hooks/usePalette'
+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
+import {CommonNavigatorParams} from '#/lib/routes/types'
+import {colors, s} from '#/lib/styles'
 import {logger} from '#/logger'
 import {
   useOverwriteSavedFeedsMutation,
@@ -16,18 +20,12 @@ import {
 } from '#/state/queries/preferences'
 import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
 import {useSetMinimalShellMode} from '#/state/shell'
-import {useAnalytics} from 'lib/analytics/analytics'
-import {useHaptics} from 'lib/haptics'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {CommonNavigatorParams} from 'lib/routes/types'
-import {colors, s} from 'lib/styles'
-import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard'
-import {TextLink} from 'view/com/util/Link'
-import {Text} from 'view/com/util/text/Text'
-import * as Toast from 'view/com/util/Toast'
-import {ViewHeader} from 'view/com/util/ViewHeader'
-import {CenteredView, ScrollView} from 'view/com/util/Views'
+import {FeedSourceCard} from '#/view/com/feeds/FeedSourceCard'
+import {TextLink} from '#/view/com/util/Link'
+import {Text} from '#/view/com/util/text/Text'
+import * as Toast from '#/view/com/util/Toast'
+import {ViewHeader} from '#/view/com/util/ViewHeader'
+import {CenteredView, ScrollView} from '#/view/com/util/Views'
 import {NoFollowingFeed} from '#/screens/Feeds/NoFollowingFeed'
 import {NoSavedFeedsOfAnyType} from '#/screens/Feeds/NoSavedFeedsOfAnyType'
 import {atoms as a, useTheme} from '#/alf'
@@ -51,7 +49,6 @@ export function SavedFeeds({}: Props) {
   const pal = usePalette('default')
   const {_} = useLingui()
   const {isMobile, isTabletOrDesktop} = useWebMediaQueries()
-  const {screen} = useAnalytics()
   const setMinimalShellMode = useSetMinimalShellMode()
   const {data: preferences} = usePreferencesQuery()
   const {
@@ -77,9 +74,8 @@ export function SavedFeeds({}: Props) {
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('SavedFeeds')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   return (
@@ -256,10 +252,6 @@ function ListItem({
 
     try {
       await overwriteSavedFeeds(nextFeeds)
-      track('CustomFeed:Reorder', {
-        uri: feed.value,
-        index: nextIndex,
-      })
     } catch (e) {
       Toast.show(_(msg`There was an issue contacting the server`), 'xmark')
       logger.error('Failed to set pinned feed order', {message: e})
@@ -282,10 +274,6 @@ function ListItem({
 
     try {
       await overwriteSavedFeeds(nextFeeds)
-      track('CustomFeed:Reorder', {
-        uri: feed.value,
-        index: nextIndex,
-      })
     } catch (e) {
       Toast.show(_(msg`There was an issue contacting the server`), 'xmark')
       logger.error('Failed to set pinned feed order', {message: e})
diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index 583999f87..66c354b3b 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -23,7 +23,6 @@ import AsyncStorage from '@react-native-async-storage/async-storage'
 import {useFocusEffect, useNavigation} from '@react-navigation/native'
 
 import {LANGUAGES} from '#/lib/../locale/languages'
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {createHitslop} from '#/lib/constants'
 import {HITSLOP_10} from '#/lib/constants'
 import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
@@ -601,7 +600,6 @@ export function SearchScreen(
   const navigation = useNavigation<NavigationProp>()
   const textInput = React.useRef<TextInput>(null)
   const {_} = useLingui()
-  const {track} = useAnalytics()
   const setDrawerOpen = useSetDrawerOpen()
   const setMinimalShellMode = useSetMinimalShellMode()
 
@@ -656,9 +654,8 @@ export function SearchScreen(
   }, [])
 
   const onPressMenu = React.useCallback(() => {
-    track('ViewHeader:MenuButtonClicked')
     setDrawerOpen(true)
-  }, [track, setDrawerOpen])
+  }, [setDrawerOpen])
 
   const onPressClearQuery = React.useCallback(() => {
     scrollToTopWeb()
diff --git a/src/view/screens/Settings/index.tsx b/src/view/screens/Settings/index.tsx
index 73bfaa83e..a2b767097 100644
--- a/src/view/screens/Settings/index.tsx
+++ b/src/view/screens/Settings/index.tsx
@@ -18,7 +18,6 @@ import {useLingui} from '@lingui/react'
 import {useFocusEffect, useNavigation} from '@react-navigation/native'
 import {useQueryClient} from '@tanstack/react-query'
 
-import {useAnalytics} from '#/lib/analytics/analytics'
 import {appVersion, BUNDLE_DATE, bundleInfo} from '#/lib/app-info'
 import {STATUS_PAGE_URL} from '#/lib/constants'
 import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher'
@@ -146,7 +145,6 @@ export function SettingsScreen({}: Props) {
   const onboardingDispatch = useOnboardingDispatch()
   const navigation = useNavigation<NavigationProp>()
   const {isMobile} = useWebMediaQueries()
-  const {screen, track} = useAnalytics()
   const {openModal} = useModalControls()
   const {accounts, currentAccount} = useSession()
   const {mutate: clearPreferences} = useClearPreferencesMutation()
@@ -178,19 +176,16 @@ export function SettingsScreen({}: Props) {
 
   useFocusEffect(
     React.useCallback(() => {
-      screen('Settings')
       setMinimalShellMode(false)
-    }, [screen, setMinimalShellMode]),
+    }, [setMinimalShellMode]),
   )
 
   const onPressAddAccount = React.useCallback(() => {
-    track('Settings:AddAccountButtonClicked')
     setShowLoggedOut(true)
     closeAllActiveElements()
-  }, [track, setShowLoggedOut, closeAllActiveElements])
+  }, [setShowLoggedOut, closeAllActiveElements])
 
   const onPressChangeHandle = React.useCallback(() => {
-    track('Settings:ChangeHandleButtonClicked')
     openModal({
       name: 'change-handle',
       onChanged() {
@@ -202,7 +197,7 @@ export function SettingsScreen({}: Props) {
         }
       },
     })
-  }, [track, queryClient, openModal, currentAccount])
+  }, [queryClient, openModal, currentAccount])
 
   const onPressExportRepository = React.useCallback(() => {
     exportCarControl.open()