···15 withTiming,
16} from 'react-native-reanimated'
17import {useSafeAreaInsets} from 'react-native-safe-area-context'
18-import Svg, {Path, SvgProps} from 'react-native-svg'
19import {Image} from 'expo-image'
20import * as SplashScreen from 'expo-splash-screen'
21
···15 withTiming,
16} from 'react-native-reanimated'
17import {useSafeAreaInsets} from 'react-native-safe-area-context'
18+import Svg, {Path, type SvgProps} from 'react-native-svg'
19import {Image} from 'expo-image'
20import * as SplashScreen from 'expo-splash-screen'
21
+1-1
src/alf/themes.ts
···1import {atoms} from '#/alf/atoms'
2-import {Palette, Theme} from '#/alf/types'
3import {
4 BLUE_HUE,
5 defaultScale,
···1import {atoms} from '#/alf/atoms'
2+import {type Palette, type Theme} from '#/alf/types'
3import {
4 BLUE_HUE,
5 defaultScale,
+1-1
src/alf/types.ts
···1-import {StyleProp, TextStyle, ViewStyle} from 'react-native'
23export type TextStyleProp = {
4 style?: StyleProp<TextStyle>
···1+import {type StyleProp, type TextStyle, type ViewStyle} from 'react-native'
23export type TextStyleProp = {
4 style?: StyleProp<TextStyle>
+1-1
src/alf/util/themeSelector.ts
···1-import {ThemeName} from '#/alf/types'
23export function select<T>(name: ThemeName, options: Record<ThemeName, T>) {
4 switch (name) {
···1+import {type ThemeName} from '#/alf/types'
23export function select<T>(name: ThemeName, options: Record<ThemeName, T>) {
4 switch (name) {
+2-2
src/alf/util/useColorModeTheme.ts
···1import React from 'react'
2-import {ColorSchemeName, useColorScheme} from 'react-native'
34import {isWeb} from '#/platform/detection'
5import {useThemePrefs} from '#/state/shell'
6import {dark, dim, light} from '#/alf/themes'
7-import {ThemeName} from '#/alf/types'
89export function useColorModeTheme(): ThemeName {
10 const theme = useThemeName()
···1import React from 'react'
2+import {type ColorSchemeName, useColorScheme} from 'react-native'
34import {isWeb} from '#/platform/detection'
5import {useThemePrefs} from '#/state/shell'
6import {dark, dim, light} from '#/alf/themes'
7+import {type ThemeName} from '#/alf/types'
89export function useColorModeTheme(): ThemeName {
10 const theme = useThemeName()
+1-1
src/alf/util/useGutters.ts
···1import React from 'react'
23-import {Breakpoint, useBreakpoints} from '#/alf/breakpoints'
4import * as tokens from '#/alf/tokens'
56type Gutter = 'compact' | 'base' | 'wide' | 0
···1import React from 'react'
23+import {type Breakpoint, useBreakpoints} from '#/alf/breakpoints'
4import * as tokens from '#/alf/tokens'
56type Gutter = 'compact' | 'base' | 'wide' | 0
+1-1
src/components/Dialog/utils.ts
···1import React from 'react'
23-import {DialogControlProps} from '#/components/Dialog/types'
45export function useAutoOpen(control: DialogControlProps, showTimeout?: number) {
6 React.useEffect(() => {
···1import React from 'react'
23+import {type DialogControlProps} from '#/components/Dialog/types'
45export function useAutoOpen(control: DialogControlProps, showTimeout?: number) {
6 React.useEffect(() => {
+2-2
src/components/Fill.tsx
···1-import React from 'react'
2import {View} from 'react-native'
034-import {atoms as a, ViewStyleProp} from '#/alf'
56export function Fill({
7 children,
···01import {View} from 'react-native'
2+import type React from 'react'
34+import {atoms as a, type ViewStyleProp} from '#/alf'
56export function Fill({
7 children,
+1-1
src/components/GradientFill.tsx
···1import {LinearGradient} from 'expo-linear-gradient'
23-import {atoms as a, tokens, ViewStyleProp} from '#/alf'
45export function GradientFill({
6 gradient,
···1import {LinearGradient} from 'expo-linear-gradient'
23+import {atoms as a, type tokens, type ViewStyleProp} from '#/alf'
45export function GradientFill({
6 gradient,
+4-4
src/components/IconCircle.tsx
···3import {
4 atoms as a,
5 flatten,
6- TextStyleProp,
7 useTheme,
8- ViewStyleProp,
9} from '#/alf'
10-import {Props} from '#/components/icons/common'
11-import {Growth_Stroke2_Corner0_Rounded as Growth} from '#/components/icons/Growth'
1213export function IconCircle({
14 icon: Icon,
···3import {
4 atoms as a,
5 flatten,
6+ type TextStyleProp,
7 useTheme,
8+ type ViewStyleProp,
9} from '#/alf'
10+import {type Props} from '#/components/icons/common'
11+import {type Growth_Stroke2_Corner0_Rounded as Growth} from '#/components/icons/Growth'
1213export function IconCircle({
14 icon: Icon,
+4-4
src/components/LabelingServiceCard/index.tsx
···1-import React from 'react'
2import {View} from 'react-native'
3-import {AppBskyLabelerDefs} from '@atproto/api'
4import {msg, Plural, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
067import {getLabelingServiceTitle} from '#/lib/moderation'
8import {sanitizeHandle} from '#/lib/strings/handles'
9import {useLabelerInfoQuery} from '#/state/queries/labeler'
10import {UserAvatar} from '#/view/com/util/UserAvatar'
11-import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
12import {Flag_Stroke2_Corner0_Rounded as Flag} from '#/components/icons/Flag'
13-import {Link as InternalLink, LinkProps} from '#/components/Link'
14import {RichText} from '#/components/RichText'
15import {Text} from '#/components/Typography'
16import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '../icons/Chevron'
···01import {View} from 'react-native'
2+import {type AppBskyLabelerDefs} from '@atproto/api'
3import {msg, Plural, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5+import type React from 'react'
67import {getLabelingServiceTitle} from '#/lib/moderation'
8import {sanitizeHandle} from '#/lib/strings/handles'
9import {useLabelerInfoQuery} from '#/state/queries/labeler'
10import {UserAvatar} from '#/view/com/util/UserAvatar'
11+import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
12import {Flag_Stroke2_Corner0_Rounded as Flag} from '#/components/icons/Flag'
13+import {Link as InternalLink, type LinkProps} from '#/components/Link'
14import {RichText} from '#/components/RichText'
15import {Text} from '#/components/Typography'
16import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '../icons/Chevron'
+1-1
src/components/LikedByList.tsx
···1import React from 'react'
2-import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1import React from 'react'
2+import {type AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
+2-2
src/components/LinearGradientBackground.tsx
···1-import React from 'react'
2-import {StyleProp, ViewStyle} from 'react-native'
3import {LinearGradient} from 'expo-linear-gradient'
045import {gradients} from '#/alf/tokens'
6
···1+import {type StyleProp, type ViewStyle} from 'react-native'
02import {LinearGradient} from 'expo-linear-gradient'
3+import type React from 'react'
45import {gradients} from '#/alf/tokens'
6
+1-1
src/components/Loader.tsx
···8} from 'react-native-reanimated'
910import {atoms as a, flatten, useTheme} from '#/alf'
11-import {Props, useCommonSVGProps} from '#/components/icons/common'
12import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader'
1314export function Loader(props: Props) {
···8} from 'react-native-reanimated'
910import {atoms as a, flatten, useTheme} from '#/alf'
11+import {type Props, useCommonSVGProps} from '#/components/icons/common'
12import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader'
1314export function Loader(props: Props) {
+1-1
src/components/Loader.web.tsx
···1import {View} from 'react-native'
23import {atoms as a, flatten, useTheme} from '#/alf'
4-import {Props, useCommonSVGProps} from '#/components/icons/common'
5import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader'
67export function Loader(props: Props) {
···1import {View} from 'react-native'
23import {atoms as a, flatten, useTheme} from '#/alf'
4+import {type Props, useCommonSVGProps} from '#/components/icons/common'
5import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader'
67export function Loader(props: Props) {
+2-2
src/components/MediaInsetBorder.tsx
···1-import React from 'react'
23-import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
4import {Fill} from '#/components/Fill'
56/**
···1+import type React from 'react'
23+import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
4import {Fill} from '#/components/Fill'
56/**
+8-8
src/components/Menu/types.ts
···1-import React from 'react'
2import {
3- AccessibilityProps,
4- AccessibilityRole,
5- GestureResponderEvent,
6- PressableProps,
7} from 'react-native'
089-import {TextStyleProp, ViewStyleProp} from '#/alf'
10-import * as Dialog from '#/components/Dialog'
11-import {Props as SVGIconProps} from '#/components/icons/common'
1213export type ContextType = {
14 control: Dialog.DialogOuterProps['control']
···01import {
2+ type AccessibilityProps,
3+ type AccessibilityRole,
4+ type GestureResponderEvent,
5+ type PressableProps,
6} from 'react-native'
7+import type React from 'react'
89+import {type TextStyleProp, type ViewStyleProp} from '#/alf'
10+import type * as Dialog from '#/components/Dialog'
11+import {type Props as SVGIconProps} from '#/components/icons/common'
1213export type ContextType = {
14 control: Dialog.DialogOuterProps['control']
+1-1
src/components/NewskieDialog.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {AppBskyActorDefs, moderateProfile} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6import {differenceInSeconds} from 'date-fns'
···1import React from 'react'
2import {View} from 'react-native'
3+import {type AppBskyActorDefs, moderateProfile} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6import {differenceInSeconds} from 'date-fns'
+2-2
src/components/Pills.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {BSKY_LABELER_DID, ModerationCause} from '@atproto/api'
4import {Trans} from '@lingui/macro'
56import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
7import {UserAvatar} from '#/view/com/util/UserAvatar'
8-import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
9import {Button} from '#/components/Button'
10import {
11 ModerationDetailsDialog,
···1import React from 'react'
2import {View} from 'react-native'
3+import {BSKY_LABELER_DID, type ModerationCause} from '@atproto/api'
4import {Trans} from '@lingui/macro'
56import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
7import {UserAvatar} from '#/view/com/util/UserAvatar'
8+import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
9import {Button} from '#/components/Button'
10import {
11 ModerationDetailsDialog,
+1-1
src/components/ProgressGuide/List.tsx
···1-import {StyleProp, View, ViewStyle} from 'react-native'
2import {msg, Trans} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
4
···1+import {type StyleProp, View, type ViewStyle} from 'react-native'
2import {msg, Trans} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
4
+2-2
src/components/ReportDialog/SelectLabelerView.tsx
···1import {View} from 'react-native'
2-import {AppBskyLabelerDefs} from '@atproto/api'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5···9import {Divider} from '#/components/Divider'
10import * as LabelingServiceCard from '#/components/LabelingServiceCard'
11import {Text} from '#/components/Typography'
12-import {ReportDialogProps} from './types'
1314export function SelectLabelerView({
15 ...props
···1import {View} from 'react-native'
2+import {type AppBskyLabelerDefs} from '@atproto/api'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5···9import {Divider} from '#/components/Divider'
10import * as LabelingServiceCard from '#/components/LabelingServiceCard'
11import {Text} from '#/components/Typography'
12+import {type ReportDialogProps} from './types'
1314export function SelectLabelerView({
15 ...props
···1import React from 'react'
2import {View} from 'react-native'
3-import {AppBskyLabelerDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67-import {ReportOption, useReportOptions} from '#/lib/moderation/useReportOptions'
0008import {Link} from '#/components/Link'
9import {DMCA_LINK} from '#/components/ReportDialog/const'
10export {useDialogControl as useReportDialogControl} from '#/components/Dialog'
···23} from '#/components/icons/Chevron'
24import {SquareArrowTopRight_Stroke2_Corner0_Rounded as SquareArrowTopRight} from '#/components/icons/SquareArrowTopRight'
25import {Text} from '#/components/Typography'
26-import {ReportDialogProps} from './types'
2728export function SelectReportOptionView(props: {
29 params: ReportDialogProps['params']
···1import React from 'react'
2import {View} from 'react-native'
3+import {type AppBskyLabelerDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67+import {
8+ type ReportOption,
9+ useReportOptions,
10+} from '#/lib/moderation/useReportOptions'
11import {Link} from '#/components/Link'
12import {DMCA_LINK} from '#/components/ReportDialog/const'
13export {useDialogControl as useReportDialogControl} from '#/components/Dialog'
···26} from '#/components/icons/Chevron'
27import {SquareArrowTopRight_Stroke2_Corner0_Rounded as SquareArrowTopRight} from '#/components/icons/SquareArrowTopRight'
28import {Text} from '#/components/Typography'
29+import {type ReportDialogProps} from './types'
3031export function SelectReportOptionView(props: {
32 params: ReportDialogProps['params']
+3-3
src/components/ReportDialog/SubmitView.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {AppBskyLabelerDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67import {getLabelingServiceTitle} from '#/lib/moderation'
8-import {ReportOption} from '#/lib/moderation/useReportOptions'
9import {isAndroid} from '#/platform/detection'
10import {useAgent} from '#/state/session'
11import {CharProgress} from '#/view/com/composer/char-progress/CharProgress'
···19import {PaperPlane_Stroke2_Corner0_Rounded as SendIcon} from '#/components/icons/PaperPlane'
20import {Loader} from '#/components/Loader'
21import {Text} from '#/components/Typography'
22-import {ReportDialogProps} from './types'
2324export function SubmitView({
25 params,
···1import React from 'react'
2import {View} from 'react-native'
3+import {type AppBskyLabelerDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67import {getLabelingServiceTitle} from '#/lib/moderation'
8+import {type ReportOption} from '#/lib/moderation/useReportOptions'
9import {isAndroid} from '#/platform/detection'
10import {useAgent} from '#/state/session'
11import {CharProgress} from '#/view/com/composer/char-progress/CharProgress'
···19import {PaperPlane_Stroke2_Corner0_Rounded as SendIcon} from '#/components/icons/PaperPlane'
20import {Loader} from '#/components/Loader'
21import {Text} from '#/components/Typography'
22+import {type ReportDialogProps} from './types'
2324export function SubmitView({
25 params,
+4-4
src/components/ReportDialog/index.tsx
···1import React from 'react'
2import {Pressable, View} from 'react-native'
3-import {ScrollView} from 'react-native-gesture-handler'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67-import {ReportOption} from '#/lib/moderation/useReportOptions'
8import {useMyLabelersQuery} from '#/state/queries/preferences'
9export {useDialogControl as useReportDialogControl} from '#/components/Dialog'
1011-import {AppBskyLabelerDefs} from '@atproto/api'
1213import {atoms as a} from '#/alf'
14import * as Dialog from '#/components/Dialog'
···18import {SelectLabelerView} from './SelectLabelerView'
19import {SelectReportOptionView} from './SelectReportOptionView'
20import {SubmitView} from './SubmitView'
21-import {ReportDialogProps} from './types'
2223export function ReportDialog(props: ReportDialogProps) {
24 return (
···1import React from 'react'
2import {Pressable, View} from 'react-native'
3+import {type ScrollView} from 'react-native-gesture-handler'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67+import {type ReportOption} from '#/lib/moderation/useReportOptions'
8import {useMyLabelersQuery} from '#/state/queries/preferences'
9export {useDialogControl as useReportDialogControl} from '#/components/Dialog'
1011+import {type AppBskyLabelerDefs} from '@atproto/api'
1213import {atoms as a} from '#/alf'
14import * as Dialog from '#/components/Dialog'
···18import {SelectLabelerView} from './SelectLabelerView'
19import {SelectReportOptionView} from './SelectReportOptionView'
20import {SubmitView} from './SubmitView'
21+import {type ReportDialogProps} from './types'
2223export function ReportDialog(props: ReportDialogProps) {
24 return (
+1-1
src/components/ReportDialog/types.ts
···1-import * as Dialog from '#/components/Dialog'
23export type ReportDialogProps = {
4 control: Dialog.DialogOuterProps['control']
···1+import type * as Dialog from '#/components/Dialog'
23export type ReportDialogProps = {
4 control: Dialog.DialogOuterProps['control']
+2-2
src/components/RichTextTag.tsx
···1import React from 'react'
2-import {StyleProp, Text as RNText, TextStyle} from 'react-native'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {useNavigation} from '@react-navigation/native'
67-import {NavigationProp} from '#/lib/routes/types'
8import {isInvalidHandle} from '#/lib/strings/handles'
9import {isNative, isWeb} from '#/platform/detection'
10import {
···1import React from 'react'
2+import {type StyleProp, Text as RNText, type TextStyle} from 'react-native'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {useNavigation} from '@react-navigation/native'
67+import {type NavigationProp} from '#/lib/routes/types'
8import {isInvalidHandle} from '#/lib/strings/handles'
9import {isNative, isWeb} from '#/platform/detection'
10import {
+3-3
src/components/StarterPack/Main/PostsList.tsx
···4import {useLingui} from '@lingui/react'
56import {isNative} from '#/platform/detection'
7-import {FeedDescriptor} from '#/state/queries/post-feed'
8import {PostFeed} from '#/view/com/posts/PostFeed'
9import {EmptyState} from '#/view/com/util/EmptyState'
10-import {ListRef} from '#/view/com/util/List'
11-import {SectionRef} from '#/screens/Profile/Sections/types'
1213interface ProfilesListProps {
14 listUri: string
···4import {useLingui} from '@lingui/react'
56import {isNative} from '#/platform/detection'
7+import {type FeedDescriptor} from '#/state/queries/post-feed'
8import {PostFeed} from '#/view/com/posts/PostFeed'
9import {EmptyState} from '#/view/com/util/EmptyState'
10+import {type ListRef} from '#/view/com/util/List'
11+import {type SectionRef} from '#/screens/Profile/Sections/types'
1213interface ProfilesListProps {
14 listUri: string
+10-7
src/components/StarterPack/Main/ProfilesList.tsx
···1import React, {useCallback} from 'react'
2-import {ListRenderItemInfo, View} from 'react-native'
3import {
4- AppBskyActorDefs,
5- AppBskyGraphGetList,
6 AtUri,
7- ModerationOpts,
8} from '@atproto/api'
9-import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query'
0001011import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
12import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
···14import {isNative, isWeb} from '#/platform/detection'
15import {useAllListMembersQuery} from '#/state/queries/list-members'
16import {useSession} from '#/state/session'
17-import {List, ListRef} from '#/view/com/util/List'
18-import {SectionRef} from '#/screens/Profile/Sections/types'
19import {atoms as a, useTheme} from '#/alf'
20import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
21import {Default as ProfileCard} from '#/components/ProfileCard'
···1import React, {useCallback} from 'react'
2+import {type ListRenderItemInfo, View} from 'react-native'
3import {
4+ type AppBskyActorDefs,
5+ type AppBskyGraphGetList,
6 AtUri,
7+ type ModerationOpts,
8} from '@atproto/api'
9+import {
10+ type InfiniteData,
11+ type UseInfiniteQueryResult,
12+} from '@tanstack/react-query'
1314import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
15import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
···17import {isNative, isWeb} from '#/platform/detection'
18import {useAllListMembersQuery} from '#/state/queries/list-members'
19import {useSession} from '#/state/session'
20+import {List, type ListRef} from '#/view/com/util/List'
21+import {type SectionRef} from '#/screens/Profile/Sections/types'
22import {atoms as a, useTheme} from '#/alf'
23import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
24import {Default as ProfileCard} from '#/components/ProfileCard'
+1-1
src/components/StarterPack/QrCode.tsx
···3// @ts-expect-error missing types
4import QRCode from 'react-native-qrcode-styled'
5import type ViewShot from 'react-native-view-shot'
6-import {AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
7import {Trans} from '@lingui/macro'
89import {isWeb} from '#/platform/detection'
···3// @ts-expect-error missing types
4import QRCode from 'react-native-qrcode-styled'
5import type ViewShot from 'react-native-view-shot'
6+import {type AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
7import {Trans} from '@lingui/macro'
89import {isWeb} from '#/platform/detection'
···1-import React from 'react'
2-import {StyleProp, ViewStyle} from 'react-native'
3import Animated, {
4 FadeIn,
5 FadeOut,
6 SlideInLeft,
7 SlideInRight,
8} from 'react-native-reanimated'
0910import {isWeb} from '#/platform/detection'
11
···1+import {type StyleProp, type ViewStyle} from 'react-native'
02import Animated, {
3 FadeIn,
4 FadeOut,
5 SlideInLeft,
6 SlideInRight,
7} from 'react-native-reanimated'
8+import type React from 'react'
910import {isWeb} from '#/platform/detection'
11
+1-1
src/components/SubtleWebHover.tsx
···1-import {ViewStyleProp} from '#/alf'
23export function SubtleWebHover({}: ViewStyleProp & {hover: boolean}) {
4 return null
···1+import {type ViewStyleProp} from '#/alf'
23export function SubtleWebHover({}: ViewStyleProp & {hover: boolean}) {
4 return null
+4-4
src/components/TrendingTopics.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {AtUri} from '@atproto/api'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6···10// import {Hashtag_Stroke2_Corner0_Rounded as Hashtag} from '#/components/icons/Hashtag'
11// import {CloseQuote_Filled_Stroke2_Corner0_Rounded as Quote} from '#/components/icons/Quote'
12// import {UserAvatar} from '#/view/com/util/UserAvatar'
13-import type {TrendingTopic} from '#/state/queries/trending/useTrendingTopics'
14-import {atoms as a, native, useTheme, ViewStyleProp} from '#/alf'
15import {StarterPack as StarterPackIcon} from '#/components/icons/StarterPack'
16-import {Link as InternalLink, LinkProps} from '#/components/Link'
17import {Text} from '#/components/Typography'
1819export function TrendingTopic({
···1import React from 'react'
2import {View} from 'react-native'
3+import {type AtUri} from '@atproto/api'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6···10// import {Hashtag_Stroke2_Corner0_Rounded as Hashtag} from '#/components/icons/Hashtag'
11// import {CloseQuote_Filled_Stroke2_Corner0_Rounded as Quote} from '#/components/icons/Quote'
12// import {UserAvatar} from '#/view/com/util/UserAvatar'
13+import {type TrendingTopic} from '#/state/queries/trending/useTrendingTopics'
14+import {atoms as a, native, useTheme, type ViewStyleProp} from '#/alf'
15import {StarterPack as StarterPackIcon} from '#/components/icons/StarterPack'
16+import {Link as InternalLink, type LinkProps} from '#/components/Link'
17import {Text} from '#/components/Typography'
1819export function TrendingTopic({
+4-4
src/components/VideoPostCard.tsx
···3import {Image} from 'expo-image'
4import {LinearGradient} from 'expo-linear-gradient'
5import {
6- AppBskyActorDefs,
7 AppBskyEmbedVideo,
8- AppBskyFeedDefs,
9 AppBskyFeedPost,
10- ModerationDecision,
11} from '@atproto/api'
12import {msg} from '@lingui/macro'
13import {useLingui} from '@lingui/react'
···15import {sanitizeHandle} from '#/lib/strings/handles'
16import {formatCount} from '#/view/com/util/numeric/format'
17import {UserAvatar} from '#/view/com/util/UserAvatar'
18-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
19import {atoms as a, useTheme} from '#/alf'
20import {BLUE_HUE} from '#/alf/util/colorGeneration'
21import {select} from '#/alf/util/themeSelector'
···3import {Image} from 'expo-image'
4import {LinearGradient} from 'expo-linear-gradient'
5import {
6+ type AppBskyActorDefs,
7 AppBskyEmbedVideo,
8+ type AppBskyFeedDefs,
9 AppBskyFeedPost,
10+ type ModerationDecision,
11} from '@atproto/api'
12import {msg} from '@lingui/macro'
13import {useLingui} from '@lingui/react'
···15import {sanitizeHandle} from '#/lib/strings/handles'
16import {formatCount} from '#/view/com/util/numeric/format'
17import {UserAvatar} from '#/view/com/util/UserAvatar'
18+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
19import {atoms as a, useTheme} from '#/alf'
20import {BLUE_HUE} from '#/alf/util/colorGeneration'
21import {select} from '#/alf/util/themeSelector'
+1-1
src/components/anim/AnimatedCheck.tsx
···8} from 'react-native-reanimated'
9import Svg, {Circle, Path} from 'react-native-svg'
1011-import {Props, useCommonSVGProps} from '#/components/icons/common'
1213const AnimatedPath = Animated.createAnimatedComponent(Path)
14const AnimatedCircle = Animated.createAnimatedComponent(Circle)
···8} from 'react-native-reanimated'
9import Svg, {Circle, Path} from 'react-native-svg'
1011+import {type Props, useCommonSVGProps} from '#/components/icons/common'
1213const AnimatedPath = Animated.createAnimatedComponent(Path)
14const AnimatedCircle = Animated.createAnimatedComponent(Circle)
+1-1
src/components/dialogs/Embed.tsx
···1import {memo, useEffect, useMemo, useState} from 'react'
2import {View} from 'react-native'
3-import {AppBskyActorDefs, AppBskyFeedPost, AtUri} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6
···1import {memo, useEffect, useMemo, useState} from 'react'
2import {View} from 'react-native'
3+import {type AppBskyActorDefs, type AppBskyFeedPost, AtUri} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6
+2-2
src/components/dialogs/MutedWords.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6···16 native,
17 useBreakpoints,
18 useTheme,
19- ViewStyleProp,
20 web,
21} from '#/alf'
22import {Button, ButtonIcon, ButtonText} from '#/components/Button'
···1import React from 'react'
2import {View} from 'react-native'
3+import {type AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6···16 native,
17 useBreakpoints,
18 useTheme,
19+ type ViewStyleProp,
20 web,
21} from '#/alf'
22import {Button, ButtonIcon, ButtonText} from '#/components/Button'
+2-2
src/components/dms/BlockedByListDialog.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {ModerationCause} from '@atproto/api'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67import {listUriToHref} from '#/lib/strings/url-helpers'
8import {atoms as a, useTheme} from '#/alf'
9import * as Dialog from '#/components/Dialog'
10-import {DialogControlProps} from '#/components/Dialog'
11import {InlineLinkText} from '#/components/Link'
12import * as Prompt from '#/components/Prompt'
13import {Text} from '#/components/Typography'
···1import React from 'react'
2import {View} from 'react-native'
3+import {type ModerationCause} from '@atproto/api'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67import {listUriToHref} from '#/lib/strings/url-helpers'
8import {atoms as a, useTheme} from '#/alf'
9import * as Dialog from '#/components/Dialog'
10+import {type DialogControlProps} from '#/components/Dialog'
11import {InlineLinkText} from '#/components/Link'
12import * as Prompt from '#/components/Prompt'
13import {Text} from '#/components/Typography'
+2-2
src/components/dms/LeaveConvoPrompt.tsx
···2import {useLingui} from '@lingui/react'
3import {StackActions, useNavigation} from '@react-navigation/native'
45-import {NavigationProp} from '#/lib/routes/types'
6import {isNative} from '#/platform/detection'
7import {useLeaveConvo} from '#/state/queries/messages/leave-conversation'
8import * as Toast from '#/view/com/util/Toast'
9-import {DialogOuterProps} from '#/components/Dialog'
10import * as Prompt from '#/components/Prompt'
1112export function LeaveConvoPrompt({
···2import {useLingui} from '@lingui/react'
3import {StackActions, useNavigation} from '@react-navigation/native'
45+import {type NavigationProp} from '#/lib/routes/types'
6import {isNative} from '#/platform/detection'
7import {useLeaveConvo} from '#/state/queries/messages/leave-conversation'
8import * as Toast from '#/view/com/util/Toast'
9+import {type DialogOuterProps} from '#/components/Dialog'
10import * as Prompt from '#/components/Prompt'
1112export function LeaveConvoPrompt({
+2-2
src/components/dms/MessagesListBlockedFooter.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {ModerationDecision} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6···14import {LeaveConvoPrompt} from '#/components/dms/LeaveConvoPrompt'
15import {ReportConversationPrompt} from '#/components/dms/ReportConversationPrompt'
16import {Text} from '#/components/Typography'
17-import * as bsky from '#/types/bsky'
1819export function MessagesListBlockedFooter({
20 recipient: initialRecipient,
···1import React from 'react'
2import {View} from 'react-native'
3+import {type ModerationDecision} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6···14import {LeaveConvoPrompt} from '#/components/dms/LeaveConvoPrompt'
15import {ReportConversationPrompt} from '#/components/dms/ReportConversationPrompt'
16import {Text} from '#/components/Typography'
17+import type * as bsky from '#/types/bsky'
1819export function MessagesListBlockedFooter({
20 recipient: initialRecipient,
+1-1
src/components/dms/ReportConversationPrompt.tsx
···1import {msg} from '@lingui/macro'
2import {useLingui} from '@lingui/react'
34-import {DialogControlProps} from '#/components/Dialog'
5import * as Prompt from '#/components/Prompt'
67export function ReportConversationPrompt({
···1import {msg} from '@lingui/macro'
2import {useLingui} from '@lingui/react'
34+import {type DialogControlProps} from '#/components/Dialog'
5import * as Prompt from '#/components/Prompt'
67export function ReportConversationPrompt({
+2-2
src/components/feeds/PostFeedVideoGridRow.tsx
···2import {AppBskyEmbedVideo} from '@atproto/api'
34import {logEvent} from '#/lib/statsig/statsig'
5-import {FeedPostSliceItem} from '#/state/queries/post-feed'
6-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
7import {atoms as a, useGutters} from '#/alf'
8import * as Grid from '#/components/Grid'
9import {
···2import {AppBskyEmbedVideo} from '@atproto/api'
34import {logEvent} from '#/lib/statsig/statsig'
5+import {type FeedPostSliceItem} from '#/state/queries/post-feed'
6+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
7import {atoms as a, useGutters} from '#/alf'
8import * as Grid from '#/components/Grid'
9import {
+2-2
src/components/forms/DateField/index.web.tsx
···1import React from 'react'
2-import {StyleSheet, TextInput, TextInputProps} from 'react-native'
3// @ts-expect-error untyped
4import {unstable_createElement} from 'react-native-web'
56-import {DateFieldProps} from '#/components/forms/DateField/types'
7import {toSimpleDateString} from '#/components/forms/DateField/utils'
8import * as TextField from '#/components/forms/TextField'
9import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
···1import React from 'react'
2+import {StyleSheet, type TextInput, type TextInputProps} from 'react-native'
3// @ts-expect-error untyped
4import {unstable_createElement} from 'react-native-web'
56+import {type DateFieldProps} from '#/components/forms/DateField/types'
7import {toSimpleDateString} from '#/components/forms/DateField/utils'
8import * as TextField from '#/components/forms/TextField'
9import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
+1-1
src/components/forms/SearchInput.tsx
···1import React from 'react'
2-import {TextInput, View} from 'react-native'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1import React from 'react'
2+import {type TextInput, View} from 'react-native'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
+3-3
src/components/hooks/useFollowMethods.ts
···2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
45-import {LogEvents} from '#/lib/statsig/statsig'
6import {logger} from '#/logger'
7-import {Shadow} from '#/state/cache/types'
8import {useProfileFollowMutationQueue} from '#/state/queries/profile'
9import {useRequireAuth} from '#/state/session'
10import * as Toast from '#/view/com/util/Toast'
11-import * as bsky from '#/types/bsky'
1213export function useFollowMethods({
14 profile,
···2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
45+import {type LogEvents} from '#/lib/statsig/statsig'
6import {logger} from '#/logger'
7+import {type Shadow} from '#/state/cache/types'
8import {useProfileFollowMutationQueue} from '#/state/queries/profile'
9import {useRequireAuth} from '#/state/session'
10import * as Toast from '#/view/com/util/Toast'
11+import type * as bsky from '#/types/bsky'
1213export function useFollowMethods({
14 profile,
+1-1
src/components/icons/TEMPLATE.tsx
···1import React from 'react'
2import Svg, {Path} from 'react-native-svg'
34-import {Props, useCommonSVGProps} from '#/components/icons/common'
56export const IconTemplate_Stroke2_Corner0_Rounded = React.forwardRef(
7 function LogoImpl(props: Props, ref) {
···1import React from 'react'
2import Svg, {Path} from 'react-native-svg'
34+import {type Props, useCommonSVGProps} from '#/components/icons/common'
56export const IconTemplate_Stroke2_Corner0_Rounded = React.forwardRef(
7 function LogoImpl(props: Props, ref) {
···8import {atoms as a, useBreakpoints, useTheme} from '#/alf'
9import {Button, ButtonIcon, ButtonText} from '#/components/Button'
10import * as Dialog from '#/components/Dialog'
11-import {DialogControlProps} from '#/components/Dialog'
12import {Divider} from '#/components/Divider'
13import {ArrowRotateCounterClockwise_Stroke2_Corner0_Rounded as Resend} from '#/components/icons/ArrowRotateCounterClockwise'
14import {useIntentDialogs} from '#/components/intents/IntentDialogs'
···8import {atoms as a, useBreakpoints, useTheme} from '#/alf'
9import {Button, ButtonIcon, ButtonText} from '#/components/Button'
10import * as Dialog from '#/components/Dialog'
11+import {type DialogControlProps} from '#/components/Dialog'
12import {Divider} from '#/components/Divider'
13import {ArrowRotateCounterClockwise_Stroke2_Corner0_Rounded as Resend} from '#/components/icons/ArrowRotateCounterClockwise'
14import {useIntentDialogs} from '#/components/intents/IntentDialogs'
+8-3
src/components/moderation/LabelsOnMe.tsx
···1-import {StyleProp, View, ViewStyle} from 'react-native'
2-import {AppBskyFeedDefs, ComAtprotoLabelDefs} from '@atproto/api'
3import {msg, Plural, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56import {useSession} from '#/state/session'
7import {atoms as a} from '#/alf'
8-import {Button, ButtonIcon, ButtonSize, ButtonText} from '#/components/Button'
000009import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
10import {
11 LabelsOnMeDialog,
···1+import {type StyleProp, View, type ViewStyle} from 'react-native'
2+import {type AppBskyFeedDefs, type ComAtprotoLabelDefs} from '@atproto/api'
3import {msg, Plural, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56import {useSession} from '#/state/session'
7import {atoms as a} from '#/alf'
8+import {
9+ Button,
10+ ButtonIcon,
11+ type ButtonSize,
12+ ButtonText,
13+} from '#/components/Button'
14import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
15import {
16 LabelsOnMeDialog,
+1-1
src/components/moderation/LabelsOnMeDialog.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {ComAtprotoLabelDefs, ComAtprotoModerationDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6import {useMutation} from '@tanstack/react-query'
···1import React from 'react'
2import {View} from 'react-native'
3+import {type ComAtprotoLabelDefs, ComAtprotoModerationDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6import {useMutation} from '@tanstack/react-query'
···1import {View} from 'react-native'
2-import {ModerationCause} from '@atproto/api'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5···12import {atoms as a, useGutters, useTheme} from '#/alf'
13import * as Dialog from '#/components/Dialog'
14import {InlineLinkText} from '#/components/Link'
15-import {AppModerationCause} from '#/components/Pills'
16import {Text} from '#/components/Typography'
1718export {useDialogControl as useModerationDetailsDialogControl} from '#/components/Dialog'
···1import {View} from 'react-native'
2+import {type ModerationCause} from '@atproto/api'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5···12import {atoms as a, useGutters, useTheme} from '#/alf'
13import * as Dialog from '#/components/Dialog'
14import {InlineLinkText} from '#/components/Link'
15+import {type AppModerationCause} from '#/components/Pills'
16import {Text} from '#/components/Typography'
1718export {useDialogControl as useModerationDetailsDialogControl} from '#/components/Dialog'
+2-2
src/components/moderation/PostAlerts.tsx
···1-import {StyleProp, ViewStyle} from 'react-native'
2-import {ModerationCause, ModerationUI} from '@atproto/api'
34import {getModerationCauseKey, unique} from '#/lib/moderation'
5import * as Pills from '#/components/Pills'
···1+import {type StyleProp, type ViewStyle} from 'react-native'
2+import {type ModerationCause, type ModerationUI} from '@atproto/api'
34import {getModerationCauseKey, unique} from '#/lib/moderation'
5import * as Pills from '#/components/Pills'
+2-2
src/components/moderation/ProfileHeaderAlerts.tsx
···1-import {StyleProp, ViewStyle} from 'react-native'
2-import {ModerationDecision} from '@atproto/api'
34import {getModerationCauseKey, unique} from '#/lib/moderation'
5import * as Pills from '#/components/Pills'
···1+import {type StyleProp, type ViewStyle} from 'react-native'
2+import {type ModerationDecision} from '@atproto/api'
34import {getModerationCauseKey, unique} from '#/lib/moderation'
5import * as Pills from '#/components/Pills'
+5-5
src/components/moderation/ReportDialog/action.ts
···1import {
2- $Typed,
3- ChatBskyConvoDefs,
4- ComAtprotoModerationCreateReport,
5} from '@atproto/api'
6import {msg} from '@lingui/macro'
7import {useLingui} from '@lingui/react'
···910import {logger} from '#/logger'
11import {useAgent} from '#/state/session'
12-import {ReportState} from './state'
13-import {ParsedReportSubject} from './types'
1415export function useSubmitReportMutation() {
16 const {_} = useLingui()
···1import {
2+ type $Typed,
3+ type ChatBskyConvoDefs,
4+ type ComAtprotoModerationCreateReport,
5} from '@atproto/api'
6import {msg} from '@lingui/macro'
7import {useLingui} from '@lingui/react'
···910import {logger} from '#/logger'
11import {useAgent} from '#/state/session'
12+import {type ReportState} from './state'
13+import {type ParsedReportSubject} from './types'
1415export function useSubmitReportMutation() {
16 const {_} = useLingui()
+1-1
src/components/moderation/ReportDialog/copy.ts
···2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
45-import {ParsedReportSubject} from './types'
67export function useCopyForSubject(subject: ParsedReportSubject) {
8 const {_} = useLingui()
···2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
45+import {type ParsedReportSubject} from './types'
67export function useCopyForSubject(subject: ParsedReportSubject) {
8 const {_} = useLingui()
+2-2
src/components/moderation/ReportDialog/state.ts
···1-import {AppBskyLabelerDefs, ComAtprotoModerationDefs} from '@atproto/api'
23-import {ReportOption} from './utils/useReportOptions'
45export type ReportState = {
6 selectedOption?: ReportOption
···1+import {type AppBskyLabelerDefs, ComAtprotoModerationDefs} from '@atproto/api'
23+import {type ReportOption} from './utils/useReportOptions'
45export type ReportState = {
6 selectedOption?: ReportOption
+6-6
src/components/moderation/ReportDialog/types.ts
···1import {
2- $Typed,
3- AppBskyActorDefs,
4- AppBskyFeedDefs,
5- AppBskyGraphDefs,
6- ChatBskyConvoDefs,
7} from '@atproto/api'
89-import * as Dialog from '#/components/Dialog'
1011export type ReportSubject =
12 | $Typed<AppBskyActorDefs.ProfileViewBasic>
···1import {
2+ type $Typed,
3+ type AppBskyActorDefs,
4+ type AppBskyFeedDefs,
5+ type AppBskyGraphDefs,
6+ type ChatBskyConvoDefs,
7} from '@atproto/api'
89+import type * as Dialog from '#/components/Dialog'
1011export type ReportSubject =
12 | $Typed<AppBskyActorDefs.ProfileViewBasic>
···6} from '@atproto/api'
78import {
9- ParsedReportSubject,
10- ReportSubject,
11} from '#/components/moderation/ReportDialog/types'
12import * as bsky from '#/types/bsky'
13
···6} from '@atproto/api'
78import {
9+ type ParsedReportSubject,
10+ type ReportSubject,
11} from '#/components/moderation/ReportDialog/types'
12import * as bsky from '#/types/bsky'
13
+4-4
src/components/moderation/ScreenHider.tsx
···1import React from 'react'
2import {
3- StyleProp,
4 TouchableWithoutFeedback,
5 View,
6- ViewStyle,
7} from 'react-native'
8-import {ModerationUI} from '@atproto/api'
9import {msg, Trans} from '@lingui/macro'
10import {useLingui} from '@lingui/react'
11import {useNavigation} from '@react-navigation/native'
1213import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
14import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
15-import {NavigationProp} from '#/lib/routes/types'
16import {CenteredView} from '#/view/com/util/Views'
17import {atoms as a, useTheme, web} from '#/alf'
18import {Button, ButtonText} from '#/components/Button'
···1import React from 'react'
2import {
3+ type StyleProp,
4 TouchableWithoutFeedback,
5 View,
6+ type ViewStyle,
7} from 'react-native'
8+import {type ModerationUI} from '@atproto/api'
9import {msg, Trans} from '@lingui/macro'
10import {useLingui} from '@lingui/react'
11import {useNavigation} from '@react-navigation/native'
1213import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
14import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
15+import {type NavigationProp} from '#/lib/routes/types'
16import {CenteredView} from '#/view/com/util/Views'
17import {atoms as a, useTheme, web} from '#/alf'
18import {Button, ButtonText} from '#/components/Button'
+3-3
src/lib/api/feed/custom.ts
···1import {
2- AppBskyFeedDefs,
3- AppBskyFeedGetFeed as GetCustomFeed,
4 BskyAgent,
5 jsonStringToLex,
6} from '@atproto/api'
···9 getAppLanguageAsContentLanguage,
10 getContentLanguages,
11} from '#/state/preferences/languages'
12-import {FeedAPI, FeedAPIResponse} from './types'
13import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
1415export class CustomFeedAPI implements FeedAPI {
···1import {
2+ type AppBskyFeedDefs,
3+ type AppBskyFeedGetFeed as GetCustomFeed,
4 BskyAgent,
5 jsonStringToLex,
6} from '@atproto/api'
···9 getAppLanguageAsContentLanguage,
10 getContentLanguages,
11} from '#/state/preferences/languages'
12+import {type FeedAPI, type FeedAPIResponse} from './types'
13import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
1415export class CustomFeedAPI implements FeedAPI {
+2-2
src/lib/api/feed/following.ts
···1-import {AppBskyFeedDefs, BskyAgent} from '@atproto/api'
23-import {FeedAPI, FeedAPIResponse} from './types'
45export class FollowingFeedAPI implements FeedAPI {
6 agent: BskyAgent
···1+import {type AppBskyFeedDefs, type BskyAgent} from '@atproto/api'
23+import {type FeedAPI, type FeedAPIResponse} from './types'
45export class FollowingFeedAPI implements FeedAPI {
6 agent: BskyAgent
+4-4
src/lib/api/feed/likes.ts
···1import {
2- AppBskyFeedDefs,
3- AppBskyFeedGetActorLikes as GetActorLikes,
4- BskyAgent,
5} from '@atproto/api'
67-import {FeedAPI, FeedAPIResponse} from './types'
89export class LikesFeedAPI implements FeedAPI {
10 agent: BskyAgent
···1import {
2+ type AppBskyFeedDefs,
3+ type AppBskyFeedGetActorLikes as GetActorLikes,
4+ type BskyAgent,
5} from '@atproto/api'
67+import {type FeedAPI, type FeedAPIResponse} from './types'
89export class LikesFeedAPI implements FeedAPI {
10 agent: BskyAgent
+12-4
src/lib/api/feed/merge.ts
···1-import {AppBskyFeedDefs, AppBskyFeedGetTimeline, BskyAgent} from '@atproto/api'
00002import shuffle from 'lodash.shuffle'
34import {bundleAsync} from '#/lib/async/bundle'
5import {timeout} from '#/lib/async/timeout'
6import {feedUriToHref} from '#/lib/strings/url-helpers'
7import {getContentLanguages} from '#/state/preferences/languages'
8-import {FeedParams} from '#/state/queries/post-feed'
9import {FeedTuner} from '../feed-manip'
10-import {FeedTunerFn} from '../feed-manip'
11-import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types'
000012import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
1314const REQUEST_WAIT_MS = 500 // 500ms
···1+import {
2+ type AppBskyFeedDefs,
3+ type AppBskyFeedGetTimeline,
4+ type BskyAgent,
5+} from '@atproto/api'
6import shuffle from 'lodash.shuffle'
78import {bundleAsync} from '#/lib/async/bundle'
9import {timeout} from '#/lib/async/timeout'
10import {feedUriToHref} from '#/lib/strings/url-helpers'
11import {getContentLanguages} from '#/state/preferences/languages'
12+import {type FeedParams} from '#/state/queries/post-feed'
13import {FeedTuner} from '../feed-manip'
14+import {type FeedTunerFn} from '../feed-manip'
15+import {
16+ type FeedAPI,
17+ type FeedAPIResponse,
18+ type ReasonFeedSource,
19+} from './types'
20import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
2122const REQUEST_WAIT_MS = 500 // 500ms
···23import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants'
4import {isWeb} from '#/platform/detection'
5-import {UsePreferencesQueryResponse} from '#/state/queries/preferences'
67let debugTopics = ''
8if (isWeb && typeof window !== 'undefined') {
···23import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants'
4import {isWeb} from '#/platform/detection'
5+import {type UsePreferencesQueryResponse} from '#/state/queries/preferences'
67let debugTopics = ''
8if (isWeb && typeof window !== 'undefined') {
+1-1
src/lib/api/upload-blob.ts
···1import {copyAsync} from 'expo-file-system'
2-import {BskyAgent, ComAtprotoRepoUploadBlob} from '@atproto/api'
34import {safeDeleteAsync} from '#/lib/media/manip'
5
···1import {copyAsync} from 'expo-file-system'
2+import {type BskyAgent, type ComAtprotoRepoUploadBlob} from '@atproto/api'
34import {safeDeleteAsync} from '#/lib/media/manip'
5
+1-1
src/lib/api/upload-blob.web.ts
···1-import {BskyAgent, ComAtprotoRepoUploadBlob} from '@atproto/api'
23/**
4 * @note It is recommended, on web, to use the `file` instance of the file
···1+import {type BskyAgent, type ComAtprotoRepoUploadBlob} from '@atproto/api'
23/**
4 * @note It is recommended, on web, to use the `file` instance of the file
···1-import {ImageRequireSource} from 'react-native'
23// @ts-ignore we need to pretend -prf
4export const DEF_AVATAR: ImageRequireSource = {uri: '/img/default-avatar.png'}
···1+import {type ImageRequireSource} from 'react-native'
23// @ts-ignore we need to pretend -prf
4export const DEF_AVATAR: ImageRequireSource = {uri: '/img/default-avatar.png'}
···1+import {
2+ Pressable,
3+ type PressableProps,
4+ type StyleProp,
5+ type ViewStyle,
6+} from 'react-native'
7import Animated, {
8 cancelAnimation,
9 useAnimatedStyle,
+2-2
src/lib/hooks/useAccountSwitcher.ts
···45import {logger} from '#/logger'
6import {isWeb} from '#/platform/detection'
7-import {SessionAccount, useSessionApi} from '#/state/session'
8import {useLoggedOutViewControls} from '#/state/shell/logged-out'
9import * as Toast from '#/view/com/util/Toast'
10import {logEvent} from '../statsig/statsig'
11-import {LogEvents} from '../statsig/statsig'
1213export function useAccountSwitcher() {
14 const [pendingDid, setPendingDid] = useState<string | null>(null)
···45import {logger} from '#/logger'
6import {isWeb} from '#/platform/detection'
7+import {type SessionAccount, useSessionApi} from '#/state/session'
8import {useLoggedOutViewControls} from '#/state/shell/logged-out'
9import * as Toast from '#/view/com/util/Toast'
10import {logEvent} from '../statsig/statsig'
11+import {type LogEvents} from '../statsig/statsig'
1213export function useAccountSwitcher() {
14 const [pendingDid, setPendingDid] = useState<string | null>(null)
+1-1
src/lib/hooks/useGoBack.ts
···1import {StackActions, useNavigation} from '@react-navigation/native'
23-import {NavigationProp} from '#/lib/routes/types'
4import {router} from '#/routes'
56export function useGoBack(onGoBack?: () => unknown) {
···1import {StackActions, useNavigation} from '@react-navigation/native'
23+import {type NavigationProp} from '#/lib/routes/types'
4import {router} from '#/routes'
56export function useGoBack(onGoBack?: () => unknown) {
+1-1
src/lib/hooks/useSetTitle.ts
···1import {useEffect} from 'react'
2import {useNavigation} from '@react-navigation/native'
34-import {NavigationProp} from '#/lib/routes/types'
5import {bskyTitle} from '#/lib/strings/headings'
6import {useUnreadNotifications} from '#/state/queries/notifications/unread'
7
···1import {useEffect} from 'react'
2import {useNavigation} from '@react-navigation/native'
34+import {type NavigationProp} from '#/lib/routes/types'
5import {bskyTitle} from '#/lib/strings/headings'
6import {useUnreadNotifications} from '#/state/queries/notifications/unread'
7
+1-1
src/lib/hooks/useTimeAgo.ts
···1import {useCallback} from 'react'
2-import {I18n} from '@lingui/core'
3import {defineMessage, msg, plural} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {differenceInSeconds} from 'date-fns'
···1import {useCallback} from 'react'
2+import {type I18n} from '@lingui/core'
3import {defineMessage, msg, plural} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {differenceInSeconds} from 'date-fns'
+1-1
src/lib/hooks/useWebScrollRestoration.ts
···1import {useEffect, useMemo, useState} from 'react'
2-import {EventArg, useNavigation} from '@react-navigation/core'
34if ('scrollRestoration' in history) {
5 // Tell the brower not to mess with the scroll.
···1import {useEffect, useMemo, useState} from 'react'
2+import {type EventArg, useNavigation} from '@react-navigation/core'
34if ('scrollRestoration' in history) {
5 // Tell the brower not to mess with the scroll.
+2-2
src/lib/media/video/compress.web.ts
···1-import {ImagePickerAsset} from 'expo-image-picker'
23import {VIDEO_MAX_SIZE} from '#/lib/constants'
4import {VideoTooLargeError} from '#/lib/media/video/errors'
5-import {CompressedVideo} from './types'
67// doesn't actually compress, converts to ArrayBuffer
8export async function compressVideo(
···1+import {type ImagePickerAsset} from 'expo-image-picker'
23import {VIDEO_MAX_SIZE} from '#/lib/constants'
4import {VideoTooLargeError} from '#/lib/media/video/errors'
5+import {type CompressedVideo} from './types'
67// doesn't actually compress, converts to ArrayBuffer
8export async function compressVideo(
+2-2
src/lib/media/video/upload.shared.ts
···1-import {BskyAgent} from '@atproto/api'
2-import {I18n} from '@lingui/core'
3import {msg} from '@lingui/macro'
45import {VIDEO_SERVICE_DID} from '#/lib/constants'
···1+import {type BskyAgent} from '@atproto/api'
2+import {type I18n} from '@lingui/core'
3import {msg} from '@lingui/macro'
45import {VIDEO_SERVICE_DID} from '#/lib/constants'
+3-3
src/lib/media/video/upload.ts
···1import {createUploadTask, FileSystemUploadType} from 'expo-file-system'
2-import {AppBskyVideoDefs, BskyAgent} from '@atproto/api'
3-import {I18n} from '@lingui/core'
4import {msg} from '@lingui/macro'
5import {nanoid} from 'nanoid/non-secure'
67import {AbortError} from '#/lib/async/cancelable'
8import {ServerError} from '#/lib/media/video/errors'
9-import {CompressedVideo} from '#/lib/media/video/types'
10import {getServiceAuthToken, getVideoUploadLimits} from './upload.shared'
11import {createVideoEndpointUrl, mimeToExt} from './util'
12
···1import {createUploadTask, FileSystemUploadType} from 'expo-file-system'
2+import {type AppBskyVideoDefs, type BskyAgent} from '@atproto/api'
3+import {type I18n} from '@lingui/core'
4import {msg} from '@lingui/macro'
5import {nanoid} from 'nanoid/non-secure'
67import {AbortError} from '#/lib/async/cancelable'
8import {ServerError} from '#/lib/media/video/errors'
9+import {type CompressedVideo} from '#/lib/media/video/types'
10import {getServiceAuthToken, getVideoUploadLimits} from './upload.shared'
11import {createVideoEndpointUrl, mimeToExt} from './util'
12
+4-4
src/lib/media/video/upload.web.ts
···1-import {AppBskyVideoDefs} from '@atproto/api'
2-import {BskyAgent} from '@atproto/api'
3-import {I18n} from '@lingui/core'
4import {msg} from '@lingui/macro'
5import {nanoid} from 'nanoid/non-secure'
67import {AbortError} from '#/lib/async/cancelable'
8import {ServerError} from '#/lib/media/video/errors'
9-import {CompressedVideo} from '#/lib/media/video/types'
10import {getServiceAuthToken, getVideoUploadLimits} from './upload.shared'
11import {createVideoEndpointUrl, mimeToExt} from './util'
12
···1+import {type AppBskyVideoDefs} from '@atproto/api'
2+import {type BskyAgent} from '@atproto/api'
3+import {type I18n} from '@lingui/core'
4import {msg} from '@lingui/macro'
5import {nanoid} from 'nanoid/non-secure'
67import {AbortError} from '#/lib/async/cancelable'
8import {ServerError} from '#/lib/media/video/errors'
9+import {type CompressedVideo} from '#/lib/media/video/types'
10import {getServiceAuthToken, getVideoUploadLimits} from './upload.shared'
11import {createVideoEndpointUrl, mimeToExt} from './util'
12
+1-1
src/lib/media/video/util.ts
···1import {AtpAgent} from '@atproto/api'
23-import {SupportedMimeTypes, VIDEO_SERVICE} from '#/lib/constants'
45export const createVideoEndpointUrl = (
6 route: string,
···1import {AtpAgent} from '@atproto/api'
23+import {type SupportedMimeTypes, VIDEO_SERVICE} from '#/lib/constants'
45export const createVideoEndpointUrl = (
6 route: string,
+1-1
src/lib/moderation/blocked-and-muted.ts
···1-import * as bsky from '#/types/bsky'
23export function isBlockedOrBlocking(profile: bsky.profile.AnyProfileView) {
4 return profile.viewer?.blockedBy || profile.viewer?.blocking
···1+import type * as bsky from '#/types/bsky'
23export function isBlockedOrBlocking(profile: bsky.profile.AnyProfileView) {
4 return profile.viewer?.blockedBy || profile.viewer?.blocking
+4-1
src/lib/moderation/useLabelBehaviorDescription.ts
···1-import {InterpretedLabelValueDefinition, LabelPreference} from '@atproto/api'
0002import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
4
···1+import {
2+ type InterpretedLabelValueDefinition,
3+ type LabelPreference,
4+} from '@atproto/api'
5import {msg} from '@lingui/macro'
6import {useLingui} from '@lingui/react'
7
+4-4
src/lib/moderation/useLabelInfo.ts
···1import {
2- AppBskyLabelerDefs,
3- ComAtprotoLabelDefs,
4- InterpretedLabelValueDefinition,
5 interpretLabelValueDefinition,
6 LABELS,
7} from '@atproto/api'
···9import * as bcp47Match from 'bcp-47-match'
1011import {
12- GlobalLabelStrings,
13 useGlobalLabelStrings,
14} from '#/lib/moderation/useGlobalLabelStrings'
15import {useLabelDefinitions} from '#/state/preferences'
···1import {
2+ type AppBskyLabelerDefs,
3+ type ComAtprotoLabelDefs,
4+ type InterpretedLabelValueDefinition,
5 interpretLabelValueDefinition,
6 LABELS,
7} from '@atproto/api'
···9import * as bcp47Match from 'bcp-47-match'
1011import {
12+ type GlobalLabelStrings,
13 useGlobalLabelStrings,
14} from '#/lib/moderation/useGlobalLabelStrings'
15import {useLabelDefinitions} from '#/state/preferences'
+4-3
src/lib/react-query.tsx
···1-import React, {useRef, useState} from 'react'
2-import {AppState, AppStateStatus} from 'react-native'
3import AsyncStorage from '@react-native-async-storage/async-storage'
4import {createAsyncStoragePersister} from '@tanstack/query-async-storage-persister'
5import {focusManager, onlineManager, QueryClient} from '@tanstack/react-query'
6import {
7 PersistQueryClientProvider,
8- PersistQueryClientProviderProps,
9} from '@tanstack/react-query-persist-client'
01011import {isNative} from '#/platform/detection'
12import {listenNetworkConfirmed, listenNetworkLost} from '#/state/events'
···1+import {useRef, useState} from 'react'
2+import {AppState, type AppStateStatus} from 'react-native'
3import AsyncStorage from '@react-native-async-storage/async-storage'
4import {createAsyncStoragePersister} from '@tanstack/query-async-storage-persister'
5import {focusManager, onlineManager, QueryClient} from '@tanstack/react-query'
6import {
7 PersistQueryClientProvider,
8+ type PersistQueryClientProviderProps,
9} from '@tanstack/react-query-persist-client'
10+import type React from 'react'
1112import {isNative} from '#/platform/detection'
13import {listenNetworkConfirmed, listenNetworkLost} from '#/state/events'
+2-2
src/lib/routes/helpers.ts
···1-import {NavigationProp} from '@react-navigation/native'
23-import {RouteParams, State} from './types'
45export function getRootNavigation<T extends {}>(
6 nav: NavigationProp<T>,
···1+import {type NavigationProp} from '@react-navigation/native'
23+import {type RouteParams, type State} from './types'
45export function getRootNavigation<T extends {}>(
6 nav: NavigationProp<T>,
···1-import {AppBskyRichtextFacet, RichText} from '@atproto/api'
23import {linkRequiresWarning} from './url-helpers'
4
···1+import {AppBskyRichtextFacet, type RichText} from '@atproto/api'
23import {linkRequiresWarning} from './url-helpers'
4
+1-1
src/lib/strings/rich-text-manip.ts
···1-import {AppBskyRichtextFacet, RichText, UnicodeString} from '@atproto/api'
23import {toShortUrl} from './url-helpers'
4
···1+import {AppBskyRichtextFacet, type RichText, UnicodeString} from '@atproto/api'
23import {toShortUrl} from './url-helpers'
4
+1-1
src/lib/strings/time.ts
···1-import {I18n} from '@lingui/core'
23export function niceDate(i18n: I18n, date: number | string | Date) {
4 const d = new Date(date)
···1+import {type I18n} from '@lingui/core'
23export function niceDate(i18n: I18n, date: number | string | Date) {
4 const d = new Date(date)
+1-1
src/lib/themes.ts
···4import {darkPalette, dimPalette, lightPalette} from '#/alf/themes'
5import {fontWeight} from '#/alf/tokens'
6import {colors} from './styles'
7-import type {Theme} from './ThemeContext'
89export const defaultTheme: Theme = {
10 colorScheme: 'light',
···4import {darkPalette, dimPalette, lightPalette} from '#/alf/themes'
5import {fontWeight} from '#/alf/tokens'
6import {colors} from './styles'
7+import {type Theme} from './ThemeContext'
89export const defaultTheme: Theme = {
10 colorScheme: 'light',
+1-1
src/locale/deviceLocales.ts
···1-import {getLocales as defaultGetLocales, Locale} from 'expo-localization'
23import {dedupArray} from '#/lib/functions'
4
···1+import {getLocales as defaultGetLocales, type Locale} from 'expo-localization'
23import {dedupArray} from '#/lib/functions'
4
+1-1
src/locale/i18nProvider.tsx
···1-import React from 'react'
2import {i18n} from '@lingui/core'
3import {I18nProvider as DefaultI18nProvider} from '@lingui/react'
045import {useLocaleLanguage} from './i18n'
6
···01import {i18n} from '@lingui/core'
2import {I18nProvider as DefaultI18nProvider} from '@lingui/react'
3+import type React from 'react'
45import {useLocaleLanguage} from './i18n'
6
+1-1
src/logger/__tests__/logDump.test.ts
···1import {expect, test} from '@jest/globals'
23-import {add, ConsoleTransportEntry, getEntries} from '#/logger/logDump'
4import {LogContext, LogLevel} from '#/logger/types'
56test('works', () => {
···1import {expect, test} from '@jest/globals'
23+import {add, type ConsoleTransportEntry, getEntries} from '#/logger/logDump'
4import {LogContext, LogLevel} from '#/logger/types'
56test('works', () => {
+1-1
src/logger/logDump.ts
···1-import type {LogContext, LogLevel, Metadata} from '#/logger/types'
23export type ConsoleTransportEntry = {
4 id: string
···1+import {type LogContext, type LogLevel, type Metadata} from '#/logger/types'
23export type ConsoleTransportEntry = {
4 id: string
+1-1
src/logger/transports/bitdrift.ts
···1import {debug, error, info, warn} from '#/logger/bitdrift/lib'
2-import {LogLevel, Transport} from '#/logger/types'
3import {prepareMetadata} from '#/logger/util'
45const logFunctions = {
···1import {debug, error, info, warn} from '#/logger/bitdrift/lib'
2+import {LogLevel, type Transport} from '#/logger/types'
3import {prepareMetadata} from '#/logger/util'
45const logFunctions = {
+1-1
src/logger/transports/console.ts
···1import format from 'date-fns/format'
23-import {LogLevel, Transport} from '#/logger/types'
4import {prepareMetadata} from '#/logger/util'
5import {isWeb} from '#/platform/detection'
6
···1import format from 'date-fns/format'
23+import {LogLevel, type Transport} from '#/logger/types'
4import {prepareMetadata} from '#/logger/util'
5import {isWeb} from '#/platform/detection'
6
+1-1
src/logger/util.ts
···1-import {LogLevel, Metadata, Serializable} from '#/logger/types'
23export const enabledLogLevels: {
4 [key in LogLevel]: LogLevel[]
···1+import {LogLevel, type Metadata, type Serializable} from '#/logger/types'
23export const enabledLogLevels: {
4 [key in LogLevel]: LogLevel[]
+1-1
src/screens/Home/NoFeedsPinned.tsx
···67import {DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED} from '#/lib/constants'
8import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences'
9-import {UsePreferencesQueryResponse} from '#/state/queries/preferences'
10import {CenteredView} from '#/view/com/util/Views'
11import {atoms as a} from '#/alf'
12import {Button, ButtonIcon, ButtonText} from '#/components/Button'
···67import {DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED} from '#/lib/constants'
8import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences'
9+import {type UsePreferencesQueryResponse} from '#/state/queries/preferences'
10import {CenteredView} from '#/view/com/util/Views'
11import {atoms as a} from '#/alf'
12import {Button, ButtonIcon, ButtonText} from '#/components/Button'
+1-1
src/screens/List/ListHiddenScreen.tsx
···11import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list'
12import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list'
13import {
14- UsePreferencesQueryResponse,
15 useRemoveFeedMutation,
16} from '#/state/queries/preferences'
17import {useSession} from '#/state/session'
···11import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list'
12import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list'
13import {
14+ type UsePreferencesQueryResponse,
15 useRemoveFeedMutation,
16} from '#/state/queries/preferences'
17import {useSession} from '#/state/session'
+1-1
src/screens/Login/ChooseAccountForm.tsx
···56import {logEvent} from '#/lib/statsig/statsig'
7import {logger} from '#/logger'
8-import {SessionAccount, useSession, useSessionApi} from '#/state/session'
9import {useLoggedOutViewControls} from '#/state/shell/logged-out'
10import * as Toast from '#/view/com/util/Toast'
11import {atoms as a} from '#/alf'
···56import {logEvent} from '#/lib/statsig/statsig'
7import {logger} from '#/logger'
8+import {type SessionAccount, useSession, useSessionApi} from '#/state/session'
9import {useLoggedOutViewControls} from '#/state/shell/logged-out'
10import * as Toast from '#/view/com/util/Toast'
11import {atoms as a} from '#/alf'
+1-1
src/screens/Login/FormContainer.tsx
···1-import React from 'react'
2import {type StyleProp, View, type ViewStyle} from 'react-native'
034import {atoms as a, useBreakpoints, useTheme} from '#/alf'
5import {Text} from '#/components/Typography'
···01import {type StyleProp, View, type ViewStyle} from 'react-native'
2+import type React from 'react'
34import {atoms as a, useBreakpoints, useTheme} from '#/alf'
5import {Text} from '#/components/Typography'
+2-2
src/screens/Login/ScreenTransition.tsx
···1-import React from 'react'
2-import {StyleProp, ViewStyle} from 'react-native'
3import Animated, {FadeInRight, FadeOutLeft} from 'react-native-reanimated'
045export function ScreenTransition({
6 style,
···1+import {type StyleProp, type ViewStyle} from 'react-native'
02import Animated, {FadeInRight, FadeOutLeft} from 'react-native-reanimated'
3+import type React from 'react'
45export function ScreenTransition({
6 style,
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56-import {ActiveConvoStates} from '#/state/messages/convo'
7import {useModerationOpts} from '#/state/preferences/moderation-opts'
8import {useSession} from '#/state/session'
9import {atoms as a, useTheme} from '#/alf'
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56+import {type ActiveConvoStates} from '#/state/messages/convo'
7import {useModerationOpts} from '#/state/preferences/moderation-opts'
8import {useSession} from '#/state/session'
9import {atoms as a, useTheme} from '#/alf'
···9} from '@atproto/api'
10import {msg} from '@lingui/macro'
11import {useLingui} from '@lingui/react'
12-import {RouteProp, useNavigation, useRoute} from '@react-navigation/native'
1314import {makeProfileLink} from '#/lib/routes/links'
15-import {CommonNavigatorParams, NavigationProp} from '#/lib/routes/types'
00016import {
17 convertBskyAppUrlIfNeeded,
18 isBskyPostUrl,
···9} from '@atproto/api'
10import {msg} from '@lingui/macro'
11import {useLingui} from '@lingui/react'
12+import {type RouteProp, useNavigation, useRoute} from '@react-navigation/native'
1314import {makeProfileLink} from '#/lib/routes/links'
15+import {
16+ type CommonNavigatorParams,
17+ type NavigationProp,
18+} from '#/lib/routes/types'
19import {
20 convertBskyAppUrlIfNeeded,
21 isBskyPostUrl,
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56-import {ConvoItem, ConvoItemError} from '#/state/messages/convo/types'
7import {atoms as a, useTheme} from '#/alf'
8import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
9import {InlineLinkText} from '#/components/Link'
···3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56+import {type ConvoItem, ConvoItemError} from '#/state/messages/convo/types'
7import {atoms as a, useTheme} from '#/alf'
8import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
9import {InlineLinkText} from '#/components/Link'
···1import React from 'react'
2-import {TextStyle, View, ViewStyle} from 'react-native'
34import {capitalize} from '#/lib/strings/capitalize'
5import {useInterestsDisplayNames} from '#/screens/Onboarding/state'
···1import React from 'react'
2+import {type TextStyle, View, type ViewStyle} from 'react-native'
34import {capitalize} from '#/lib/strings/capitalize'
5import {useInterestsDisplayNames} from '#/screens/Onboarding/state'
···1import React from 'react'
2import {View} from 'react-native'
34-import {Avatar} from '#/screens/Onboarding/StepProfile/index'
5import {atoms as a, useTheme} from '#/alf'
67export function AvatarCreatorCircle({
···1import React from 'react'
2import {View} from 'react-native'
34+import {type Avatar} from '#/screens/Onboarding/StepProfile/index'
5import {atoms as a, useTheme} from '#/alf'
67export function AvatarCreatorCircle({
···3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56-import {Avatar} from '#/screens/Onboarding/StepProfile/index'
7import {
8- AvatarColor,
9 avatarColors,
10 emojiItems,
11- EmojiName,
12 emojiNames,
13} from '#/screens/Onboarding/StepProfile/types'
14import {atoms as a, useTheme} from '#/alf'
···3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56+import {type Avatar} from '#/screens/Onboarding/StepProfile/index'
7import {
8+ type AvatarColor,
9 avatarColors,
10 emojiItems,
11+ type EmojiName,
12 emojiNames,
13} from '#/screens/Onboarding/StepProfile/types'
14import {atoms as a, useTheme} from '#/alf'
+4-1
src/screens/Post/PostLikedBy.tsx
···2import {Plural, Trans} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0006import {makeRecordUri} from '#/lib/strings/url-helpers'
7import {usePostThreadQuery} from '#/state/queries/post-thread'
8import {useSetMinimalShellMode} from '#/state/shell'
···2import {Plural, Trans} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45+import {
6+ type CommonNavigatorParams,
7+ type NativeStackScreenProps,
8+} from '#/lib/routes/types'
9import {makeRecordUri} from '#/lib/strings/url-helpers'
10import {usePostThreadQuery} from '#/state/queries/post-thread'
11import {useSetMinimalShellMode} from '#/state/shell'
+4-1
src/screens/Post/PostQuotes.tsx
···2import {Plural, Trans} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0006import {makeRecordUri} from '#/lib/strings/url-helpers'
7import {usePostThreadQuery} from '#/state/queries/post-thread'
8import {useSetMinimalShellMode} from '#/state/shell'
···2import {Plural, Trans} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45+import {
6+ type CommonNavigatorParams,
7+ type NativeStackScreenProps,
8+} from '#/lib/routes/types'
9import {makeRecordUri} from '#/lib/strings/url-helpers'
10import {usePostThreadQuery} from '#/state/queries/post-thread'
11import {useSetMinimalShellMode} from '#/state/shell'
+4-1
src/screens/Post/PostRepostedBy.tsx
···2import {Plural, Trans} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0006import {makeRecordUri} from '#/lib/strings/url-helpers'
7import {usePostThreadQuery} from '#/state/queries/post-thread'
8import {useSetMinimalShellMode} from '#/state/shell'
···2import {Plural, Trans} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45+import {
6+ type CommonNavigatorParams,
7+ type NativeStackScreenProps,
8+} from '#/lib/routes/types'
9import {makeRecordUri} from '#/lib/strings/url-helpers'
10import {usePostThreadQuery} from '#/state/queries/post-thread'
11import {useSetMinimalShellMode} from '#/state/shell'
+1-1
src/screens/Profile/ErrorState.tsx
···4import {useLingui} from '@lingui/react'
5import {useNavigation} from '@react-navigation/native'
67-import {NavigationProp} from '#/lib/routes/types'
8import {atoms as a, useTheme} from '#/alf'
9import {Button, ButtonText} from '#/components/Button'
10import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
···4import {useLingui} from '@lingui/react'
5import {useNavigation} from '@react-navigation/native'
67+import {type NavigationProp} from '#/lib/routes/types'
8import {atoms as a, useTheme} from '#/alf'
9import {Button, ButtonText} from '#/components/Button'
10import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
+2-2
src/screens/Profile/Header/DisplayName.tsx
···1import {View} from 'react-native'
2-import {AppBskyActorDefs, ModerationDecision} from '@atproto/api'
34import {sanitizeDisplayName} from '#/lib/strings/display-names'
5import {sanitizeHandle} from '#/lib/strings/handles'
6-import {Shadow} from '#/state/cache/types'
7import {atoms as a, useBreakpoints, useTheme} from '#/alf'
8import {Text} from '#/components/Typography'
9
···1import {View} from 'react-native'
2+import {type AppBskyActorDefs, type ModerationDecision} from '@atproto/api'
34import {sanitizeDisplayName} from '#/lib/strings/display-names'
5import {sanitizeHandle} from '#/lib/strings/handles'
6+import {type Shadow} from '#/state/cache/types'
7import {atoms as a, useBreakpoints, useTheme} from '#/alf'
8import {Text} from '#/components/Typography'
9
+3-3
src/screens/Profile/Header/GrowableAvatar.tsx
···1-import React from 'react'
2-import {StyleProp, View, ViewStyle} from 'react-native'
3import Animated, {
4 Extrapolation,
5 interpolate,
6- SharedValue,
7 useAnimatedStyle,
8} from 'react-native-reanimated'
0910import {isIOS} from '#/platform/detection'
11import {usePagerHeaderContext} from '#/view/com/pager/PagerHeaderContext'
···1+import {type StyleProp, View, type ViewStyle} from 'react-native'
02import Animated, {
3 Extrapolation,
4 interpolate,
5+ type SharedValue,
6 useAnimatedStyle,
7} from 'react-native-reanimated'
8+import type React from 'react'
910import {isIOS} from '#/platform/detection'
11import {usePagerHeaderContext} from '#/view/com/pager/PagerHeaderContext'
+3-2
src/screens/Profile/Header/GrowableBanner.tsx
···1-import React, {useEffect, useState} from 'react'
2import {View} from 'react-native'
3import {ActivityIndicator} from 'react-native'
4import Animated, {
5 Extrapolation,
6 interpolate,
7 runOnJS,
8- SharedValue,
9 useAnimatedProps,
10 useAnimatedReaction,
11 useAnimatedStyle,
···13import {useSafeAreaInsets} from 'react-native-safe-area-context'
14import {BlurView} from 'expo-blur'
15import {useIsFetching} from '@tanstack/react-query'
01617import {isIOS} from '#/platform/detection'
18import {RQKEY_ROOT as STARTERPACK_RQKEY_ROOT} from '#/state/queries/actor-starter-packs'
···1+import {useEffect, useState} from 'react'
2import {View} from 'react-native'
3import {ActivityIndicator} from 'react-native'
4import Animated, {
5 Extrapolation,
6 interpolate,
7 runOnJS,
8+ type SharedValue,
9 useAnimatedProps,
10 useAnimatedReaction,
11 useAnimatedStyle,
···13import {useSafeAreaInsets} from 'react-native-safe-area-context'
14import {BlurView} from 'expo-blur'
15import {useIsFetching} from '@tanstack/react-query'
16+import type React from 'react'
1718import {isIOS} from '#/platform/detection'
19import {RQKEY_ROOT as STARTERPACK_RQKEY_ROOT} from '#/state/queries/actor-starter-packs'
+2-2
src/screens/Profile/Header/Metrics.tsx
···1import {View} from 'react-native'
2-import {AppBskyActorDefs} from '@atproto/api'
3import {msg, plural} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56import {makeProfileLink} from '#/lib/routes/links'
7-import {Shadow} from '#/state/cache/types'
8import {formatCount} from '#/view/com/util/numeric/format'
9import {atoms as a, useTheme} from '#/alf'
10import {InlineLinkText} from '#/components/Link'
···1import {View} from 'react-native'
2+import {type AppBskyActorDefs} from '@atproto/api'
3import {msg, plural} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56import {makeProfileLink} from '#/lib/routes/links'
7+import {type Shadow} from '#/state/cache/types'
8import {formatCount} from '#/view/com/util/numeric/format'
9import {atoms as a, useTheme} from '#/alf'
10import {InlineLinkText} from '#/components/Link'
+4-1
src/screens/Profile/Header/StatusBarShadow.tsx
···1-import Animated, {SharedValue, useAnimatedStyle} from 'react-native-reanimated'
0002import {useSafeAreaInsets} from 'react-native-safe-area-context'
3import {LinearGradient} from 'expo-linear-gradient'
4
···1+import Animated, {
2+ type SharedValue,
3+ useAnimatedStyle,
4+} from 'react-native-reanimated'
5import {useSafeAreaInsets} from 'react-native-safe-area-context'
6import {LinearGradient} from 'expo-linear-gradient'
7
+5-5
src/screens/Profile/Header/index.tsx
···1import React, {memo, useState} from 'react'
2-import {LayoutChangeEvent, StyleSheet, View} from 'react-native'
3import Animated, {
4 runOnJS,
5 useAnimatedReaction,
···8} from 'react-native-reanimated'
9import {useSafeAreaInsets} from 'react-native-safe-area-context'
10import {
11- AppBskyActorDefs,
12- AppBskyLabelerDefs,
13- ModerationOpts,
14- RichText as RichTextAPI,
15} from '@atproto/api'
16import {useIsFocused} from '@react-navigation/native'
17
···1import React, {memo, useState} from 'react'
2+import {type LayoutChangeEvent, StyleSheet, View} from 'react-native'
3import Animated, {
4 runOnJS,
5 useAnimatedReaction,
···8} from 'react-native-reanimated'
9import {useSafeAreaInsets} from 'react-native-safe-area-context'
10import {
11+ type AppBskyActorDefs,
12+ type AppBskyLabelerDefs,
13+ type ModerationOpts,
14+ type RichText as RichTextAPI,
15} from '@atproto/api'
16import {useIsFocused} from '@react-navigation/native'
17
+5-2
src/screens/Profile/KnownFollowers.tsx
···1import React from 'react'
2-import {AppBskyActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {useFocusEffect} from '@react-navigation/native'
67import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
8-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0009import {cleanError} from '#/lib/strings/errors'
10import {logger} from '#/logger'
11import {useProfileKnownFollowersQuery} from '#/state/queries/known-followers'
···1import React from 'react'
2+import {type AppBskyActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {useFocusEffect} from '@react-navigation/native'
67import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
8+import {
9+ type CommonNavigatorParams,
10+ type NativeStackScreenProps,
11+} from '#/lib/routes/types'
12import {cleanError} from '#/lib/strings/errors'
13import {logger} from '#/logger'
14import {useProfileKnownFollowersQuery} from '#/state/queries/known-followers'
+4-1
src/screens/Profile/ProfileFollowers.tsx
···2import {Plural} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0006import {sanitizeDisplayName} from '#/lib/strings/display-names'
7import {useProfileQuery} from '#/state/queries/profile'
8import {useResolveDidQuery} from '#/state/queries/resolve-uri'
···2import {Plural} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45+import {
6+ type CommonNavigatorParams,
7+ type NativeStackScreenProps,
8+} from '#/lib/routes/types'
9import {sanitizeDisplayName} from '#/lib/strings/display-names'
10import {useProfileQuery} from '#/state/queries/profile'
11import {useResolveDidQuery} from '#/state/queries/resolve-uri'
+4-1
src/screens/Profile/ProfileFollows.tsx
···2import {Plural} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0006import {sanitizeDisplayName} from '#/lib/strings/display-names'
7import {useProfileQuery} from '#/state/queries/profile'
8import {useResolveDidQuery} from '#/state/queries/resolve-uri'
···2import {Plural} from '@lingui/macro'
3import {useFocusEffect} from '@react-navigation/native'
45+import {
6+ type CommonNavigatorParams,
7+ type NativeStackScreenProps,
8+} from '#/lib/routes/types'
9import {sanitizeDisplayName} from '#/lib/strings/display-names'
10import {useProfileQuery} from '#/state/queries/profile'
11import {useResolveDidQuery} from '#/state/queries/resolve-uri'
+4-1
src/screens/Profile/ProfileLabelerLikedBy.tsx
···3import {useLingui} from '@lingui/react'
4import {useFocusEffect} from '@react-navigation/native'
56-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0007import {makeRecordUri} from '#/lib/strings/url-helpers'
8import {useSetMinimalShellMode} from '#/state/shell'
9import {ViewHeader} from '#/view/com/util/ViewHeader'
···3import {useLingui} from '@lingui/react'
4import {useFocusEffect} from '@react-navigation/native'
56+import {
7+ type CommonNavigatorParams,
8+ type NativeStackScreenProps,
9+} from '#/lib/routes/types'
10import {makeRecordUri} from '#/lib/strings/url-helpers'
11import {useSetMinimalShellMode} from '#/state/shell'
12import {ViewHeader} from '#/view/com/util/ViewHeader'
···1import {Image} from 'expo-image'
23-import {AppIconSet} from '#/screens/Settings/AppIconSettings/types'
4import {atoms as a, platform, useTheme} from '#/alf'
56export function AppIconImage({
···1import {Image} from 'expo-image'
23+import {type AppIconSet} from '#/screens/Settings/AppIconSettings/types'
4import {atoms as a, platform, useTheme} from '#/alf'
56export function AppIconImage({
···8 SlideInRight,
9 SlideOutLeft,
10} from 'react-native-reanimated'
11-import {ComAtprotoServerCreateAppPassword} from '@atproto/api'
12import {msg, Trans} from '@lingui/macro'
13import {useLingui} from '@lingui/react'
14import {useMutation} from '@tanstack/react-query'
···8 SlideInRight,
9 SlideOutLeft,
10} from 'react-native-reanimated'
11+import {type ComAtprotoServerCreateAppPassword} from '@atproto/api'
12import {msg, Trans} from '@lingui/macro'
13import {useLingui} from '@lingui/react'
14import {useMutation} from '@tanstack/react-query'
+2-2
src/screens/Settings/components/CopyButton.tsx
···1import {useCallback, useEffect, useState} from 'react'
2-import {GestureResponderEvent, View} from 'react-native'
3import Animated, {
4 FadeOutUp,
5 useReducedMotion,
···9import {Trans} from '@lingui/macro'
1011import {atoms as a, useTheme} from '#/alf'
12-import {Button, ButtonProps} from '#/components/Button'
13import {Text} from '#/components/Typography'
1415export function CopyButton({
···1import {useCallback, useEffect, useState} from 'react'
2+import {type GestureResponderEvent, View} from 'react-native'
3import Animated, {
4 FadeOutUp,
5 useReducedMotion,
···9import {Trans} from '@lingui/macro'
1011import {atoms as a, useTheme} from '#/alf'
12+import {Button, type ButtonProps} from '#/components/Button'
13import {Text} from '#/components/Typography'
1415export function CopyButton({
···7import {useAgent, useSessionApi} from '#/state/session'
8import {atoms as a, useBreakpoints, useTheme} from '#/alf'
9import {Button, ButtonIcon, ButtonText} from '#/components/Button'
10-import {DialogOuterProps} from '#/components/Dialog'
11import {Divider} from '#/components/Divider'
12import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
13import {Loader} from '#/components/Loader'
···7import {useAgent, useSessionApi} from '#/state/session'
8import {atoms as a, useBreakpoints, useTheme} from '#/alf'
9import {Button, ButtonIcon, ButtonText} from '#/components/Button'
10+import {type DialogOuterProps} from '#/components/Dialog'
11import {Divider} from '#/components/Divider'
12import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
13import {Loader} from '#/components/Loader'
+1-1
src/screens/Settings/components/PwiOptOut.tsx
···1import React from 'react'
2import {View} from 'react-native'
3-import {$Typed, ComAtprotoLabelDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6
···1import React from 'react'
2import {View} from 'react-native'
3+import {type $Typed, ComAtprotoLabelDefs} from '@atproto/api'
4import {msg, Trans} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6
+2-2
src/screens/StarterPack/Wizard/StepFeeds.tsx
···1import {useState} from 'react'
2-import {ListRenderItemInfo, View} from 'react-native'
3import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
4-import {AppBskyFeedDefs, ModerationOpts} from '@atproto/api'
5import {Trans} from '@lingui/macro'
67import {DISCOVER_FEED_URI} from '#/lib/constants'
···1import {useState} from 'react'
2+import {type ListRenderItemInfo, View} from 'react-native'
3import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
4+import {type AppBskyFeedDefs, type ModerationOpts} from '@atproto/api'
5import {Trans} from '@lingui/macro'
67import {DISCOVER_FEED_URI} from '#/lib/constants'
+3-3
src/screens/StarterPack/Wizard/StepProfiles.tsx
···1import {useState} from 'react'
2-import {ListRenderItemInfo, View} from 'react-native'
3import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
4-import {AppBskyActorDefs, ModerationOpts} from '@atproto/api'
5import {Trans} from '@lingui/macro'
67import {isNative} from '#/platform/detection'
···16import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
17import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard'
18import {Text} from '#/components/Typography'
19-import * as bsky from '#/types/bsky'
2021function keyExtractor(item: AppBskyActorDefs.ProfileViewBasic) {
22 return item?.did ?? ''
···1import {useState} from 'react'
2+import {type ListRenderItemInfo, View} from 'react-native'
3import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
4+import {type AppBskyActorDefs, type ModerationOpts} from '@atproto/api'
5import {Trans} from '@lingui/macro'
67import {isNative} from '#/platform/detection'
···16import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
17import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard'
18import {Text} from '#/components/Typography'
19+import type * as bsky from '#/types/bsky'
2021function keyExtractor(item: AppBskyActorDefs.ProfileViewBasic) {
22 return item?.did ?? ''
+4-4
src/screens/VideoFeed/components/Header.tsx
···1import {useCallback} from 'react'
2-import {GestureResponderEvent, View} from 'react-native'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {useNavigation} from '@react-navigation/native'
67import {HITSLOP_30} from '#/lib/constants'
8-import {NavigationProp} from '#/lib/routes/types'
9import {sanitizeHandle} from '#/lib/strings/handles'
10import {useFeedSourceInfoQuery} from '#/state/queries/feed'
11import {UserAvatar} from '#/view/com/util/UserAvatar'
12-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
13import {atoms as a, useBreakpoints} from '#/alf'
14-import {Button, ButtonProps} from '#/components/Button'
15import {ArrowLeft_Stroke2_Corner0_Rounded as ArrowLeft} from '#/components/icons/Arrow'
16import * as Layout from '#/components/Layout'
17import {BUTTON_VISUAL_ALIGNMENT_OFFSET} from '#/components/Layout/const'
···1import {useCallback} from 'react'
2+import {type GestureResponderEvent, View} from 'react-native'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5import {useNavigation} from '@react-navigation/native'
67import {HITSLOP_30} from '#/lib/constants'
8+import {type NavigationProp} from '#/lib/routes/types'
9import {sanitizeHandle} from '#/lib/strings/handles'
10import {useFeedSourceInfoQuery} from '#/state/queries/feed'
11import {UserAvatar} from '#/view/com/util/UserAvatar'
12+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
13import {atoms as a, useBreakpoints} from '#/alf'
14+import {Button, type ButtonProps} from '#/components/Button'
15import {ArrowLeft_Stroke2_Corner0_Rounded as ArrowLeft} from '#/components/icons/Arrow'
16import * as Layout from '#/components/Layout'
17import {BUTTON_VISUAL_ALIGNMENT_OFFSET} from '#/components/Layout/const'
+1-1
src/screens/VideoFeed/types.ts
···1-import {AuthorFilter} from '#/state/queries/post-feed'
23/**
4 * Kind of like `FeedDescriptor` but not
···1+import {type AuthorFilter} from '#/state/queries/post-feed'
23/**
4 * Kind of like `FeedDescriptor` but not
···1import {
2+ type ConvoState,
3+ type ConvoStateBackgrounded,
4+ type ConvoStateDisabled,
5+ type ConvoStateReady,
6+ type ConvoStateSuspended,
7 ConvoStatus,
8} from './types'
9
+1-1
src/state/messages/events/types.ts
···1-import {BskyAgent, ChatBskyConvoGetLog} from '@atproto/api'
23export type MessagesEventBusParams = {
4 agent: BskyAgent
···1+import {type BskyAgent, type ChatBskyConvoGetLog} from '@atproto/api'
23export type MessagesEventBusParams = {
4 agent: BskyAgent
+1-1
src/state/messages/index.tsx
···1-import React from 'react'
23import {CurrentConvoIdProvider} from '#/state/messages/current-convo-id'
4import {MessagesEventBusProvider} from '#/state/messages/events'
···1+import type React from 'react'
23import {CurrentConvoIdProvider} from '#/state/messages/current-convo-id'
4import {MessagesEventBusProvider} from '#/state/messages/events'
+2-2
src/state/persisted/index.web.ts
···4import {logger} from '#/logger'
5import {
6 defaults,
7- Schema,
8 tryParse,
9 tryStringify,
10} from '#/state/persisted/schema'
11-import {PersistedApi} from './types'
12import {normalizeData} from './util'
1314export type {PersistedAccount, Schema} from '#/state/persisted/schema'
···4import {logger} from '#/logger'
5import {
6 defaults,
7+ type Schema,
8 tryParse,
9 tryStringify,
10} from '#/state/persisted/schema'
11+import {type PersistedApi} from './types'
12import {normalizeData} from './util'
1314export type {PersistedAccount, Schema} from '#/state/persisted/schema'
+1-1
src/state/persisted/types.ts
···1-import type {Schema} from './schema'
23export type PersistedApi = {
4 init(): Promise<void>
···1+import {type Schema} from './schema'
23export type PersistedApi = {
4 init(): Promise<void>
+1-1
src/state/persisted/util.ts
···23import {dedupArray} from '#/lib/functions'
4import {logger} from '#/logger'
5-import {Schema} from '#/state/persisted/schema'
67export function normalizeData(data: Schema) {
8 const next = {...data}
···23import {dedupArray} from '#/lib/functions'
4import {logger} from '#/logger'
5+import {type Schema} from '#/state/persisted/schema'
67export function normalizeData(data: Schema) {
8 const next = {...data}
+1-1
src/state/preferences/index.tsx
···1-import React from 'react'
23import {Provider as AltTextRequiredProvider} from './alt-text-required'
4import {Provider as AutoplayProvider} from './autoplay'
···1+import type React from 'react'
23import {Provider as AltTextRequiredProvider} from './alt-text-required'
4import {Provider as AutoplayProvider} from './autoplay'
+5-1
src/state/queries/actor-autocomplete.ts
···1import React from 'react'
2-import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api'
00003import {keepPreviousData, useQuery, useQueryClient} from '@tanstack/react-query'
45import {isJustAMute, moduiContainsHideableOffense} from '#/lib/moderation'
···1import React from 'react'
2+import {
3+ type AppBskyActorDefs,
4+ moderateProfile,
5+ type ModerationOpts,
6+} from '@atproto/api'
7import {keepPreviousData, useQuery, useQueryClient} from '@tanstack/react-query'
89import {isJustAMute, moduiContainsHideableOffense} from '#/lib/moderation'
+1-1
src/state/queries/app-passwords.ts
···1-import {ComAtprotoServerCreateAppPassword} from '@atproto/api'
2import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
34import {STALE} from '#/state/queries'
···1+import {type ComAtprotoServerCreateAppPassword} from '@atproto/api'
2import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
34import {STALE} from '#/state/queries'
+1-1
src/state/queries/invites.ts
···1-import {ComAtprotoServerDefs} from '@atproto/api'
2import {useQuery} from '@tanstack/react-query'
34import {cleanError} from '#/lib/strings/errors'
···1+import {type ComAtprotoServerDefs} from '@atproto/api'
2import {useQuery} from '@tanstack/react-query'
34import {cleanError} from '#/lib/strings/errors'
+7-4
src/state/queries/known-followers.ts
···1-import {AppBskyActorDefs, AppBskyGraphGetKnownFollowers} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
00006 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···01import {
2+ type AppBskyActorDefs,
3+ type AppBskyGraphGetKnownFollowers,
4+} from '@atproto/api'
5+import {
6+ type InfiniteData,
7+ type QueryClient,
8+ type QueryKey,
9 useInfiniteQuery,
10} from '@tanstack/react-query'
11
+4-4
src/state/queries/my-blocked-accounts.ts
···1-import {AppBskyActorDefs, AppBskyGraphGetBlocks} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···1+import {type AppBskyActorDefs, type AppBskyGraphGetBlocks} from '@atproto/api'
2import {
3+ type InfiniteData,
4+ type QueryClient,
5+ type QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
+2-2
src/state/queries/my-lists.ts
···1-import {AppBskyGraphDefs} from '@atproto/api'
2-import {QueryClient, useQuery} from '@tanstack/react-query'
34import {accumulate} from '#/lib/async/accumulate'
5import {STALE} from '#/state/queries'
···1+import {type AppBskyGraphDefs} from '@atproto/api'
2+import {type QueryClient, useQuery} from '@tanstack/react-query'
34import {accumulate} from '#/lib/async/accumulate'
5import {STALE} from '#/state/queries'
+4-4
src/state/queries/my-muted-accounts.ts
···1-import {AppBskyActorDefs, AppBskyGraphGetMutes} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···1+import {type AppBskyActorDefs, type AppBskyGraphGetMutes} from '@atproto/api'
2import {
3+ type InfiniteData,
4+ type QueryClient,
5+ type QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
+1-1
src/state/queries/nuxs/types.ts
···1-import {AppBskyActorDefs} from '@atproto/api'
23export type Data = Record<string, unknown> | undefined
4
···1+import {type AppBskyActorDefs} from '@atproto/api'
23export type Data = Record<string, unknown> | undefined
4
+3-3
src/state/queries/nuxs/util.ts
···1-import {AppBskyActorDefs, nuxSchema} from '@atproto/api'
23import {
4- AppNux,
5- Nux,
6 nuxNames,
7 NuxSchemas,
8} from '#/state/queries/nuxs/definitions'
···1+import {type AppBskyActorDefs, nuxSchema} from '@atproto/api'
23import {
4+ type AppNux,
5+ type Nux,
6 nuxNames,
7 NuxSchemas,
8} from '#/state/queries/nuxs/definitions'
+1-1
src/state/queries/post-interaction-settings.ts
···1-import {AppBskyActorDefs} from '@atproto/api'
2import {useMutation, useQueryClient} from '@tanstack/react-query'
34import {preferencesQueryKey} from '#/state/queries/preferences'
···1+import {type AppBskyActorDefs} from '@atproto/api'
2import {useMutation, useQueryClient} from '@tanstack/react-query'
34import {preferencesQueryKey} from '#/state/queries/preferences'
+4-4
src/state/queries/post-liked-by.ts
···1-import {AppBskyActorDefs, AppBskyFeedGetLikes} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···1+import {type AppBskyActorDefs, type AppBskyFeedGetLikes} from '@atproto/api'
2import {
3+ type InfiniteData,
4+ type QueryClient,
5+ type QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···1import {
2+ type AppBskyActorDefs,
3 AppBskyEmbedRecord,
4+ type AppBskyFeedDefs,
5+ type AppBskyFeedGetQuotes,
6 AtUri,
7} from '@atproto/api'
8import {
9+ type InfiniteData,
10+ type QueryClient,
11+ type QueryKey,
12 useInfiniteQuery,
13} from '@tanstack/react-query'
14
+7-4
src/state/queries/post-reposted-by.ts
···1-import {AppBskyActorDefs, AppBskyFeedGetRepostedBy} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
00006 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···01import {
2+ type AppBskyActorDefs,
3+ type AppBskyFeedGetRepostedBy,
4+} from '@atproto/api'
5+import {
6+ type InfiniteData,
7+ type QueryClient,
8+ type QueryKey,
9 useInfiniteQuery,
10} from '@tanstack/react-query'
11
+3-3
src/state/queries/preferences/types.ts
···1import {
2- BskyFeedViewPreference,
3- BskyPreferences,
4- BskyThreadViewPreference,
5} from '@atproto/api'
67export type UsePreferencesQueryResponse = Omit<
···1import {
2+ type BskyFeedViewPreference,
3+ type BskyPreferences,
4+ type BskyThreadViewPreference,
5} from '@atproto/api'
67export type UsePreferencesQueryResponse = Omit<
+9-2
src/state/queries/profile-feedgens.ts
···1-import {AppBskyFeedGetActorFeeds, moderateFeedGenerator} from '@atproto/api'
2-import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
000000034import {useAgent} from '#/state/session'
5import {useModerationOpts} from '../preferences/moderation-opts'
···1+import {
2+ type AppBskyFeedGetActorFeeds,
3+ moderateFeedGenerator,
4+} from '@atproto/api'
5+import {
6+ type InfiniteData,
7+ type QueryKey,
8+ useInfiniteQuery,
9+} from '@tanstack/react-query'
1011import {useAgent} from '#/state/session'
12import {useModerationOpts} from '../preferences/moderation-opts'
+7-4
src/state/queries/profile-followers.ts
···1-import {AppBskyActorDefs, AppBskyGraphGetFollowers} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
00006 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···01import {
2+ type AppBskyActorDefs,
3+ type AppBskyGraphGetFollowers,
4+} from '@atproto/api'
5+import {
6+ type InfiniteData,
7+ type QueryClient,
8+ type QueryKey,
9 useInfiniteQuery,
10} from '@tanstack/react-query'
11
+4-4
src/state/queries/profile-follows.ts
···1-import {AppBskyActorDefs, AppBskyGraphGetFollows} from '@atproto/api'
2import {
3- InfiniteData,
4- QueryClient,
5- QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
···1+import {type AppBskyActorDefs, type AppBskyGraphGetFollows} from '@atproto/api'
2import {
3+ type InfiniteData,
4+ type QueryClient,
5+ type QueryKey,
6 useInfiniteQuery,
7} from '@tanstack/react-query'
8
+6-2
src/state/queries/profile-lists.ts
···1-import {AppBskyGraphGetLists, moderateUserList} from '@atproto/api'
2-import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
000034import {useAgent} from '#/state/session'
5import {useModerationOpts} from '../preferences/moderation-opts'
···1+import {type AppBskyGraphGetLists, moderateUserList} from '@atproto/api'
2+import {
3+ type InfiniteData,
4+ type QueryKey,
5+ useInfiniteQuery,
6+} from '@tanstack/react-query'
78import {useAgent} from '#/state/session'
9import {useModerationOpts} from '../preferences/moderation-opts'
+4-4
src/state/queries/resolve-link.ts
···1-import {QueryClient, useQuery} from '@tanstack/react-query'
23import {STALE} from '#/state/queries/index'
4import {useAgent} from '../session'
···9const RQKEY_GIF_ROOT = 'resolve-gif'
10export const RQKEY_GIF = (url: string) => [RQKEY_GIF_ROOT, url]
1112-import {BskyAgent} from '@atproto/api'
1314-import {ResolvedLink, resolveGif, resolveLink} from '#/lib/api/resolve'
15-import {Gif} from './tenor'
1617export function useResolveLinkQuery(url: string) {
18 const agent = useAgent()
···1+import {type QueryClient, useQuery} from '@tanstack/react-query'
23import {STALE} from '#/state/queries/index'
4import {useAgent} from '../session'
···9const RQKEY_GIF_ROOT = 'resolve-gif'
10export const RQKEY_GIF = (url: string) => [RQKEY_GIF_ROOT, url]
1112+import {type BskyAgent} from '@atproto/api'
1314+import {type ResolvedLink, resolveGif, resolveLink} from '#/lib/api/resolve'
15+import {type Gif} from './tenor'
1617export function useResolveLinkQuery(url: string) {
18 const agent = useAgent()
+5-1
src/state/queries/resolve-uri.ts
···1import {AtUri} from '@atproto/api'
2-import {QueryClient, useQuery, UseQueryResult} from '@tanstack/react-query'
000034import {STALE} from '#/state/queries'
5import {useAgent} from '#/state/session'
···1import {AtUri} from '@atproto/api'
2+import {
3+ type QueryClient,
4+ useQuery,
5+ type UseQueryResult,
6+} from '@tanstack/react-query'
78import {STALE} from '#/state/queries'
9import {useAgent} from '#/state/session'
···1import React from 'react'
2import {
3+ type AppBskyActorDefs,
4+ type AppBskyFeedDefs,
5+ type AppBskyFeedSearchPosts,
6 AtUri,
7 moderatePost,
8} from '@atproto/api'
9import {
10+ type InfiniteData,
11+ type QueryClient,
12+ type QueryKey,
13 useInfiniteQuery,
14} from '@tanstack/react-query'
15
+6-2
src/state/queries/suggested-feeds.ts
···1-import {AppBskyFeedGetSuggestedFeeds} from '@atproto/api'
2-import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
000034import {STALE} from '#/state/queries'
5import {useAgent} from '#/state/session'
···1+import {type AppBskyFeedGetSuggestedFeeds} from '@atproto/api'
2+import {
3+ type InfiniteData,
4+ type QueryKey,
5+ useInfiniteQuery,
6+} from '@tanstack/react-query'
78import {STALE} from '#/state/queries'
9import {useAgent} from '#/state/session'
+3-3
src/state/queries/threadgate/index.ts
···1import {
2 AppBskyFeedDefs,
3- AppBskyFeedGetPostThread,
4 AppBskyFeedThreadgate,
5 AtUri,
6- BskyAgent,
7} from '@atproto/api'
8import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
9···11import {until} from '#/lib/async/until'
12import {STALE} from '#/state/queries'
13import {RQKEY_ROOT as postThreadQueryKeyRoot} from '#/state/queries/post-thread'
14-import {ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
15import {
16 createThreadgateRecord,
17 mergeThreadgateRecords,
···1import {
2 AppBskyFeedDefs,
3+ type AppBskyFeedGetPostThread,
4 AppBskyFeedThreadgate,
5 AtUri,
6+ type BskyAgent,
7} from '@atproto/api'
8import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
9···11import {until} from '#/lib/async/until'
12import {STALE} from '#/state/queries'
13import {RQKEY_ROOT as postThreadQueryKeyRoot} from '#/state/queries/post-thread'
14+import {type ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
15import {
16 createThreadgateRecord,
17 mergeThreadgateRecords,
+2-2
src/state/queries/threadgate/util.ts
···1-import {AppBskyFeedDefs, AppBskyFeedThreadgate} from '@atproto/api'
23-import {ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
4import * as bsky from '#/types/bsky'
56export function threadgateViewToAllowUISetting(
···1+import {type AppBskyFeedDefs, AppBskyFeedThreadgate} from '@atproto/api'
23+import {type ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
4import * as bsky from '#/types/bsky'
56export function threadgateViewToAllowUISetting(
+2-2
src/state/queries/unstable-profile-cache.ts
···1import {useCallback} from 'react'
2-import {QueryClient, useQueryClient} from '@tanstack/react-query'
34-import * as bsky from '#/types/bsky'
56const unstableProfileViewCacheQueryKeyRoot = 'unstableProfileViewCache'
7export const unstableProfileViewCacheQueryKey = (didOrHandle: string) => [
···1import {useCallback} from 'react'
2+import {type QueryClient, useQueryClient} from '@tanstack/react-query'
34+import type * as bsky from '#/types/bsky'
56const unstableProfileViewCacheQueryKeyRoot = 'unstableProfileViewCache'
7export const unstableProfileViewCacheQueryKey = (didOrHandle: string) => [
+8-4
src/state/queries/util.ts
···1import {
2- AppBskyActorDefs,
3 AppBskyEmbedRecord,
4 AppBskyEmbedRecordWithMedia,
5- AppBskyFeedDefs,
6 AppBskyFeedPost,
7- AtUri,
8} from '@atproto/api'
9-import {InfiniteData, QueryClient, QueryKey} from '@tanstack/react-query'
00001011import * as bsky from '#/types/bsky'
12
···1import {
2+ type AppBskyActorDefs,
3 AppBskyEmbedRecord,
4 AppBskyEmbedRecordWithMedia,
5+ type AppBskyFeedDefs,
6 AppBskyFeedPost,
7+ type AtUri,
8} from '@atproto/api'
9+import {
10+ type InfiniteData,
11+ type QueryClient,
12+ type QueryKey,
13+} from '@tanstack/react-query'
1415import * as bsky from '#/types/bsky'
16
+1-1
src/state/session/__tests__/session-test.ts
···2import {describe, expect, it, jest} from '@jest/globals'
34import {agentToSessionAccountOrThrow} from '../agent'
5-import {Action, getInitialState, reducer, State} from '../reducer'
67jest.mock('jwt-decode', () => ({
8 jwtDecode(_token: string) {
···2import {describe, expect, it, jest} from '@jest/globals'
34import {agentToSessionAccountOrThrow} from '../agent'
5+import {type Action, getInitialState, reducer, type State} from '../reducer'
67jest.mock('jwt-decode', () => ({
8 jwtDecode(_token: string) {
+1-1
src/state/session/moderation.ts
···3import {IS_TEST_USER} from '#/lib/constants'
4import {configureAdditionalModerationAuthorities} from './additional-moderation-authorities'
5import {readLabelers} from './agent-config'
6-import {SessionAccount} from './types'
78export function configureModerationForGuest() {
9 // This global mutation is *only* OK because this code is only relevant for testing.
···3import {IS_TEST_USER} from '#/lib/constants'
4import {configureAdditionalModerationAuthorities} from './additional-moderation-authorities'
5import {readLabelers} from './agent-config'
6+import {type SessionAccount} from './types'
78export function configureModerationForGuest() {
9 // This global mutation is *only* OK because this code is only relevant for testing.
+1-1
src/state/session/util.ts
···3import {hasProp} from '#/lib/type-guards'
4import {logger} from '#/logger'
5import * as persisted from '#/state/persisted'
6-import {SessionAccount} from './types'
78export function readLastActiveAccount() {
9 const {currentAccount, accounts} = persisted.get('session')
···3import {hasProp} from '#/lib/type-guards'
4import {logger} from '#/logger'
5import * as persisted from '#/state/persisted'
6+import {type SessionAccount} from './types'
78export function readLastActiveAccount() {
9 const {currentAccount, accounts} = persisted.get('session')
+1-1
src/state/shell/reminders.ts
···1import {simpleAreDatesEqual} from '#/lib/strings/time'
2import {logger} from '#/logger'
3import * as persisted from '#/state/persisted'
4-import {SessionAccount} from '../session'
5import {isOnboardingActive} from './onboarding'
67export function shouldRequestEmailConfirmation(account: SessionAccount) {
···1import {simpleAreDatesEqual} from '#/lib/strings/time'
2import {logger} from '#/logger'
3import * as persisted from '#/state/persisted'
4+import {type SessionAccount} from '../session'
5import {isOnboardingActive} from './onboarding'
67export function shouldRequestEmailConfirmation(account: SessionAccount) {
+1-1
src/types/bsky/index.ts
···1-import {ValidationResult} from '@atproto/lexicon'
23export * as post from '#/types/bsky/post'
4export * as profile from '#/types/bsky/profile'
···1+import {type ValidationResult} from '@atproto/lexicon'
23export * as post from '#/types/bsky/post'
4export * as profile from '#/types/bsky/profile'
···1-import React from 'react'
2import {View} from 'react-native'
034import {MAX_ALT_TEXT} from '#/lib/constants'
5import {CharProgress} from '#/view/com/composer/char-progress/CharProgress'
···01import {View} from 'react-native'
2+import type React from 'react'
34import {MAX_ALT_TEXT} from '#/lib/constants'
5import {CharProgress} from '#/view/com/composer/char-progress/CharProgress'
+1-1
src/view/com/composer/KeyboardAccessory.tsx
···1-import React from 'react'
2import {View} from 'react-native'
3import {KeyboardStickyView} from 'react-native-keyboard-controller'
4import {useSafeAreaInsets} from 'react-native-safe-area-context'
056import {isWeb} from '#/platform/detection'
7import {atoms as a, useTheme} from '#/alf'
···01import {View} from 'react-native'
2import {KeyboardStickyView} from 'react-native-keyboard-controller'
3import {useSafeAreaInsets} from 'react-native-safe-area-context'
4+import type React from 'react'
56import {isWeb} from '#/platform/detection'
7import {atoms as a, useTheme} from '#/alf'
···1-import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'
000002// @ts-ignore no type definition -prf
3import ProgressCircle from 'react-native-progress/Circle'
4// @ts-ignore no type definition -prf
···1+import {
2+ type StyleProp,
3+ type TextStyle,
4+ View,
5+ type ViewStyle,
6+} from 'react-native'
7// @ts-ignore no type definition -prf
8import ProgressCircle from 'react-native-progress/Circle'
9// @ts-ignore no type definition -prf
+1-1
src/view/com/composer/photos/SelectGifBtn.tsx
···4import {useLingui} from '@lingui/react'
56import {logEvent} from '#/lib/statsig/statsig'
7-import {Gif} from '#/state/queries/tenor'
8import {atoms as a, useTheme} from '#/alf'
9import {Button} from '#/components/Button'
10import {GifSelectDialog} from '#/components/dialogs/GifSelect'
···4import {useLingui} from '@lingui/react'
56import {logEvent} from '#/lib/statsig/statsig'
7+import {type Gif} from '#/state/queries/tenor'
8import {atoms as a, useTheme} from '#/alf'
9import {Button} from '#/components/Button'
10import {GifSelectDialog} from '#/components/dialogs/GifSelect'
···1617import {URL_REGEX} from '@atproto/api'
18import {Mark} from '@tiptap/core'
19-import {Node as ProsemirrorNode} from '@tiptap/pm/model'
20import {Plugin, PluginKey} from '@tiptap/pm/state'
21import {Decoration, DecorationSet} from '@tiptap/pm/view'
22
···1617import {URL_REGEX} from '@atproto/api'
18import {Mark} from '@tiptap/core'
19+import {type Node as ProsemirrorNode} from '@tiptap/pm/model'
20import {Plugin, PluginKey} from '@tiptap/pm/state'
21import {Decoration, DecorationSet} from '@tiptap/pm/view'
22
···1617import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api'
18import {Mark} from '@tiptap/core'
19-import {Node as ProsemirrorNode} from '@tiptap/pm/model'
20import {Plugin, PluginKey} from '@tiptap/pm/state'
21import {Decoration, DecorationSet} from '@tiptap/pm/view'
22
···1617import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api'
18import {Mark} from '@tiptap/core'
19+import {type Node as ProsemirrorNode} from '@tiptap/pm/model'
20import {Plugin, PluginKey} from '@tiptap/pm/state'
21import {Decoration, DecorationSet} from '@tiptap/pm/view'
22
···1-import {Keyboard, StyleProp, ViewStyle} from 'react-native'
2-import {AnimatedStyle} from 'react-native-reanimated'
3-import {AppBskyFeedPostgate} from '@atproto/api'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67import {isNative} from '#/platform/detection'
8-import {ThreadgateAllowUISetting} from '#/state/queries/threadgate'
9import {native} from '#/alf'
10import {Button, ButtonIcon, ButtonText} from '#/components/Button'
11import * as Dialog from '#/components/Dialog'
···1+import {Keyboard, type StyleProp, type ViewStyle} from 'react-native'
2+import {type AnimatedStyle} from 'react-native-reanimated'
3+import {type AppBskyFeedPostgate} from '@atproto/api'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
67import {isNative} from '#/platform/detection'
8+import {type ThreadgateAllowUISetting} from '#/state/queries/threadgate'
9import {native} from '#/alf'
10import {Button, ButtonIcon, ButtonText} from '#/components/Button'
11import * as Dialog from '#/components/Dialog'
···1-import React, {useRef} from 'react'
2import {View} from 'react-native'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
056import {logger} from '#/logger'
7import * as Toast from '#/view/com/util/Toast'
···1+import {useRef} from 'react'
2import {View} from 'react-native'
3import {msg, Trans} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5+import type React from 'react'
67import {logger} from '#/logger'
8import * as Toast from '#/view/com/util/Toast'
+2-2
src/view/com/composer/videos/VideoPreview.web.tsx
···1import {View} from 'react-native'
2-import {ImagePickerAsset} from 'expo-image-picker'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56-import {CompressedVideo} from '#/lib/media/video/types'
7import {clamp} from '#/lib/numbers'
8import {useAutoplayDisabled} from '#/state/preferences'
9import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn'
···1import {View} from 'react-native'
2+import {type ImagePickerAsset} from 'expo-image-picker'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
56+import {type CompressedVideo} from '#/lib/media/video/types'
7import {clamp} from '#/lib/numbers'
8import {useAutoplayDisabled} from '#/state/preferences'
9import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn'
···1import {View} from 'react-native'
2// @ts-expect-error no type definition
3import ProgressPie from 'react-native-progress/Pie'
4-import {ImagePickerAsset} from 'expo-image-picker'
56import {clamp} from '#/lib/numbers'
7import {isWeb} from '#/platform/detection'
···1import {View} from 'react-native'
2// @ts-expect-error no type definition
3import ProgressPie from 'react-native-progress/Pie'
4+import {type ImagePickerAsset} from 'expo-image-picker'
56import {clamp} from '#/lib/numbers'
7import {isWeb} from '#/platform/detection'
+1-1
src/view/com/composer/videos/pickVideo.web.ts
···1-import {ImagePickerAsset, ImagePickerResult} from 'expo-image-picker'
23import {SUPPORTED_MIME_TYPES} from '#/lib/constants'
4
···1+import {type ImagePickerAsset, type ImagePickerResult} from 'expo-image-picker'
23import {SUPPORTED_MIME_TYPES} from '#/lib/constants'
4
···6 *
7 */
89-import {TransformsStyle} from 'react-native'
10-import {MeasuredDimensions} from 'react-native-reanimated'
1112export type Dimensions = {
13 width: number
···6 *
7 */
89+import {type TransformsStyle} from 'react-native'
10+import {type MeasuredDimensions} from 'react-native-reanimated'
1112export type Dimensions = {
13 width: number
···5 * LICENSE file in the root directory of this source tree.
6 *
7 */
8-import {StyleSheet, TouchableOpacity, ViewStyle} from 'react-native'
9import {SafeAreaView} from 'react-native-safe-area-context'
10import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
11import {msg} from '@lingui/macro'
···5 * LICENSE file in the root directory of this source tree.
6 *
7 */
8+import {StyleSheet, TouchableOpacity, type ViewStyle} from 'react-native'
9import {SafeAreaView} from 'react-native-safe-area-context'
10import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
11import {msg} from '@lingui/macro'
···23import React from 'react'
4import {View} from 'react-native'
5-import {PanGesture} from 'react-native-gesture-handler'
6-import {SharedValue} from 'react-native-reanimated'
78-import {Dimensions} from '#/lib/media/types'
9import {
10- Dimensions as ImageDimensions,
11- ImageSource,
12- Transform,
13} from '../../@types'
1415type Props = {
···23import React from 'react'
4import {View} from 'react-native'
5+import {type PanGesture} from 'react-native-gesture-handler'
6+import {type SharedValue} from 'react-native-reanimated'
78+import {type Dimensions} from '#/lib/media/types'
9import {
10+ type Dimensions as ImageDimensions,
11+ type ImageSource,
12+ type Transform,
13} from '../../@types'
1415type Props = {
+1-1
src/view/com/lightbox/ImageViewing/transforms.ts
···1-import type {Position} from './@types'
23export type TransformMatrix = [
4 number,
···1+import {type Position} from './@types'
23export type TransformMatrix = [
4 number,
+3-3
src/view/com/modals/InviteCodes.tsx
···6 View,
7} from 'react-native'
8import {setStringAsync} from 'expo-clipboard'
9-import {ComAtprotoServerDefs} from '@atproto/api'
10import {
11 FontAwesomeIcon,
12- FontAwesomeIconStyle,
13} from '@fortawesome/react-native-fontawesome'
14import {msg, Trans} from '@lingui/macro'
15import {useLingui} from '@lingui/react'
···22import {useInvitesAPI, useInvitesState} from '#/state/invites'
23import {useModalControls} from '#/state/modals'
24import {
25- InviteCodesQueryResponse,
26 useInviteCodesQuery,
27} from '#/state/queries/invites'
28import {ErrorMessage} from '../util/error/ErrorMessage'
···6 View,
7} from 'react-native'
8import {setStringAsync} from 'expo-clipboard'
9+import {type ComAtprotoServerDefs} from '@atproto/api'
10import {
11 FontAwesomeIcon,
12+ type FontAwesomeIconStyle,
13} from '@fortawesome/react-native-fontawesome'
14import {msg, Trans} from '@lingui/macro'
15import {useLingui} from '@lingui/react'
···22import {useInvitesAPI, useInvitesState} from '#/state/invites'
23import {useModalControls} from '#/state/modals'
24import {
25+ type InviteCodesQueryResponse,
26 useInviteCodesQuery,
27} from '#/state/queries/invites'
28import {ErrorMessage} from '../util/error/ErrorMessage'
+2-2
src/view/com/modals/UserAddRemoveLists.tsx
···5 useWindowDimensions,
6 View,
7} from 'react-native'
8-import {AppBskyGraphDefs as GraphDefs} from '@atproto/api'
9import {msg, Trans} from '@lingui/macro'
10import {useLingui} from '@lingui/react'
11···18import {useModalControls} from '#/state/modals'
19import {
20 getMembership,
21- ListMembersip,
22 useDangerousListMembershipsQuery,
23 useListMembershipAddMutation,
24 useListMembershipRemoveMutation,
···5 useWindowDimensions,
6 View,
7} from 'react-native'
8+import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api'
9import {msg, Trans} from '@lingui/macro'
10import {useLingui} from '@lingui/react'
11···18import {useModalControls} from '#/state/modals'
19import {
20 getMembership,
21+ type ListMembersip,
22 useDangerousListMembershipsQuery,
23 useListMembershipAddMutation,
24 useListMembershipRemoveMutation,
+1-1
src/view/com/post-thread/PostLikedBy.tsx
···1import {useCallback, useMemo, useState} from 'react'
2-import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1import {useCallback, useMemo, useState} from 'react'
2+import {type AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
+2-2
src/view/com/post-thread/PostQuotes.tsx
···1import {useCallback, useState} from 'react'
2import {
3- AppBskyFeedDefs,
4 AppBskyFeedPost,
5 moderatePost,
6- ModerationDecision,
7} from '@atproto/api'
8import {msg} from '@lingui/macro'
9import {useLingui} from '@lingui/react'
···1import {useCallback, useState} from 'react'
2import {
3+ type AppBskyFeedDefs,
4 AppBskyFeedPost,
5 moderatePost,
6+ type ModerationDecision,
7} from '@atproto/api'
8import {msg} from '@lingui/macro'
9import {useLingui} from '@lingui/react'
+1-1
src/view/com/post-thread/PostRepostedBy.tsx
···1import {useCallback, useMemo, useState} from 'react'
2-import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1import {useCallback, useMemo, useState} from 'react'
2+import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
+2-2
src/view/com/posts/CustomFeedEmptyState.tsx
···2import {StyleSheet, View} from 'react-native'
3import {
4 FontAwesomeIcon,
5- FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
7import {Trans} from '@lingui/macro'
8import {useNavigation} from '@react-navigation/native'
910import {usePalette} from '#/lib/hooks/usePalette'
11import {MagnifyingGlassIcon} from '#/lib/icons'
12-import {NavigationProp} from '#/lib/routes/types'
13import {s} from '#/lib/styles'
14import {isWeb} from '#/platform/detection'
15import {Button} from '../util/forms/Button'
···2import {StyleSheet, View} from 'react-native'
3import {
4 FontAwesomeIcon,
5+ type FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
7import {Trans} from '@lingui/macro'
8import {useNavigation} from '@react-navigation/native'
910import {usePalette} from '#/lib/hooks/usePalette'
11import {MagnifyingGlassIcon} from '#/lib/icons'
12+import {type NavigationProp} from '#/lib/routes/types'
13import {s} from '#/lib/styles'
14import {isWeb} from '#/platform/detection'
15import {Button} from '../util/forms/Button'
+2-2
src/view/com/posts/FollowingEmptyState.tsx
···2import {StyleSheet, View} from 'react-native'
3import {
4 FontAwesomeIcon,
5- FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
7import {Trans} from '@lingui/macro'
8import {useNavigation} from '@react-navigation/native'
910import {usePalette} from '#/lib/hooks/usePalette'
11import {MagnifyingGlassIcon} from '#/lib/icons'
12-import {NavigationProp} from '#/lib/routes/types'
13import {s} from '#/lib/styles'
14import {isWeb} from '#/platform/detection'
15import {Button} from '../util/forms/Button'
···2import {StyleSheet, View} from 'react-native'
3import {
4 FontAwesomeIcon,
5+ type FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
7import {Trans} from '@lingui/macro'
8import {useNavigation} from '@react-navigation/native'
910import {usePalette} from '#/lib/hooks/usePalette'
11import {MagnifyingGlassIcon} from '#/lib/icons'
12+import {type NavigationProp} from '#/lib/routes/types'
13import {s} from '#/lib/styles'
14import {isWeb} from '#/platform/detection'
15import {Button} from '../util/forms/Button'
+2-2
src/view/com/posts/FollowingEndOfFeed.tsx
···2import {Dimensions, StyleSheet, View} from 'react-native'
3import {
4 FontAwesomeIcon,
5- FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
7import {Trans} from '@lingui/macro'
8import {useNavigation} from '@react-navigation/native'
910import {usePalette} from '#/lib/hooks/usePalette'
11-import {NavigationProp} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {isWeb} from '#/platform/detection'
14import {Button} from '../util/forms/Button'
···2import {Dimensions, StyleSheet, View} from 'react-native'
3import {
4 FontAwesomeIcon,
5+ type FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
7import {Trans} from '@lingui/macro'
8import {useNavigation} from '@react-navigation/native'
910import {usePalette} from '#/lib/hooks/usePalette'
11+import {type NavigationProp} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {isWeb} from '#/platform/detection'
14import {Button} from '../util/forms/Button'
+1-1
src/view/com/profile/ProfileFollowers.tsx
···1import React from 'react'
2-import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1import React from 'react'
2+import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
+1-1
src/view/com/profile/ProfileFollows.tsx
···1import React from 'react'
2-import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1import React from 'react'
2+import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1+import {type AlertButton, type AlertStatic} from 'react-native'
23class WebAlert implements Pick<AlertStatic, 'alert'> {
4 public alert(title: string, message?: string, buttons?: AlertButton[]): void {
+3-2
src/view/com/util/BottomSheetCustomBackdrop.tsx
···1-import React, {useMemo} from 'react'
2import {TouchableWithoutFeedback} from 'react-native'
3import Animated, {
4 Extrapolation,
5 interpolate,
6 useAnimatedStyle,
7} from 'react-native-reanimated'
8-import {BottomSheetBackdropProps} from '@discord/bottom-sheet/src'
9import {msg} from '@lingui/macro'
10import {useLingui} from '@lingui/react'
01112export function createCustomBackdrop(
13 onClose?: (() => void) | undefined,
···1+import {useMemo} from 'react'
2import {TouchableWithoutFeedback} from 'react-native'
3import Animated, {
4 Extrapolation,
5 interpolate,
6 useAnimatedStyle,
7} from 'react-native-reanimated'
8+import {type BottomSheetBackdropProps} from '@discord/bottom-sheet/src'
9import {msg} from '@lingui/macro'
10import {useLingui} from '@lingui/react'
11+import type React from 'react'
1213export function createCustomBackdrop(
14 onClose?: (() => void) | undefined,
+3-3
src/view/com/util/EmptyState.tsx
···1-import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native'
2-import {IconProp} from '@fortawesome/fontawesome-svg-core'
3import {
4 FontAwesomeIcon,
5- FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
78import {usePalette} from '#/lib/hooks/usePalette'
···1+import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native'
2+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
3import {
4 FontAwesomeIcon,
5+ type FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
78import {usePalette} from '#/lib/hooks/usePalette'
+2-2
src/view/com/util/EmptyStateWithButton.tsx
···1import {StyleSheet, View} from 'react-native'
2-import {IconProp} from '@fortawesome/fontawesome-svg-core'
3import {
4 FontAwesomeIcon,
5- FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
78import {usePalette} from '#/lib/hooks/usePalette'
···1import {StyleSheet, View} from 'react-native'
2+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
3import {
4 FontAwesomeIcon,
5+ type FontAwesomeIconStyle,
6} from '@fortawesome/react-native-fontawesome'
78import {usePalette} from '#/lib/hooks/usePalette'
+2-2
src/view/com/util/ErrorBoundary.tsx
···1-import {Component, ErrorInfo, ReactNode} from 'react'
2-import {StyleProp, ViewStyle} from 'react-native'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
···1+import {Component, type ErrorInfo, type ReactNode} from 'react'
2+import {type StyleProp, type ViewStyle} from 'react-native'
3import {msg} from '@lingui/macro'
4import {useLingui} from '@lingui/react'
5
+2-2
src/view/com/util/FeedInfoText.tsx
···1-import {StyleProp, StyleSheet, TextStyle} from 'react-native'
23import {sanitizeDisplayName} from '#/lib/strings/display-names'
4-import {TypographyVariant} from '#/lib/ThemeContext'
5import {useFeedSourceInfoQuery} from '#/state/queries/feed'
6import {TextLinkOnWebOnly} from './Link'
7import {LoadingPlaceholder} from './LoadingPlaceholder'
···1+import {type StyleProp, StyleSheet, type TextStyle} from 'react-native'
23import {sanitizeDisplayName} from '#/lib/strings/display-names'
4+import {type TypographyVariant} from '#/lib/ThemeContext'
5import {useFeedSourceInfoQuery} from '#/state/queries/feed'
6import {TextLinkOnWebOnly} from './Link'
7import {LoadingPlaceholder} from './LoadingPlaceholder'
+1-1
src/view/com/util/LoadMoreRetryBtn.tsx
···1import {StyleSheet} from 'react-native'
2import {
3 FontAwesomeIcon,
4- FontAwesomeIconStyle,
5} from '@fortawesome/react-native-fontawesome'
67import {usePalette} from '#/lib/hooks/usePalette'
···1import {StyleSheet} from 'react-native'
2import {
3 FontAwesomeIcon,
4+ type FontAwesomeIconStyle,
5} from '@fortawesome/react-native-fontawesome'
67import {usePalette} from '#/lib/hooks/usePalette'
+1-1
src/view/com/util/MainScrollProvider.tsx
···1import React, {useCallback, useEffect} from 'react'
2-import {NativeScrollEvent} from 'react-native'
3import {interpolate, useSharedValue, withSpring} from 'react-native-reanimated'
4import EventEmitter from 'eventemitter3'
5
···1import React, {useCallback, useEffect} from 'react'
2+import {type NativeScrollEvent} from 'react-native'
3import {interpolate, useSharedValue, withSpring} from 'react-native-reanimated'
4import EventEmitter from 'eventemitter3'
5
+8-3
src/view/com/util/PressableWithHover.tsx
···1-import {forwardRef, PropsWithChildren} from 'react'
2-import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native'
3-import {View} from 'react-native'
0000045import {addStyle} from '#/lib/styles'
6import {useInteractionState} from '#/components/hooks/useInteractionState'
···1+import {forwardRef, type PropsWithChildren} from 'react'
2+import {
3+ Pressable,
4+ type PressableProps,
5+ type StyleProp,
6+ type ViewStyle,
7+} from 'react-native'
8+import {type View} from 'react-native'
910import {addStyle} from '#/lib/styles'
11import {useInteractionState} from '#/components/hooks/useInteractionState'
+3-3
src/view/com/util/Views.tsx
···1import {forwardRef} from 'react'
2-import {FlatListComponent} from 'react-native'
3-import {View, ViewProps} from 'react-native'
4import Animated from 'react-native-reanimated'
5-import {FlatListPropsWithLayout} from 'react-native-reanimated'
67// If you explode these into functions, don't forget to forwardRef!
8
···1import {forwardRef} from 'react'
2+import {type FlatListComponent} from 'react-native'
3+import {View, type ViewProps} from 'react-native'
4import Animated from 'react-native-reanimated'
5+import {type FlatListPropsWithLayout} from 'react-native-reanimated'
67// If you explode these into functions, don't forget to forwardRef!
8
+1-1
src/view/com/util/WebAuxClickWrapper.tsx
···1-import React from 'react'
2import {Platform} from 'react-native'
034const onMouseUp = (e: React.MouseEvent & {target: HTMLElement}) => {
5 // Only handle whenever it is the middle button
···01import {Platform} from 'react-native'
2+import type React from 'react'
34const onMouseUp = (e: React.MouseEvent & {target: HTMLElement}) => {
5 // Only handle whenever it is the middle button
+3-3
src/view/com/util/error/ErrorMessage.tsx
···1import {
2- StyleProp,
3 StyleSheet,
4 TouchableOpacity,
5 View,
6- ViewStyle,
7} from 'react-native'
8import {
9 FontAwesomeIcon,
10- FontAwesomeIconStyle,
11} from '@fortawesome/react-native-fontawesome'
12import {msg} from '@lingui/macro'
13import {useLingui} from '@lingui/react'
···1import {
2+ type StyleProp,
3 StyleSheet,
4 TouchableOpacity,
5 View,
6+ type ViewStyle,
7} from 'react-native'
8import {
9 FontAwesomeIcon,
10+ type FontAwesomeIconStyle,
11} from '@fortawesome/react-native-fontawesome'
12import {msg} from '@lingui/macro'
13import {useLingui} from '@lingui/react'
+1-1
src/view/com/util/error/ErrorScreen.tsx
···1import {View} from 'react-native'
2import {
3 FontAwesomeIcon,
4- FontAwesomeIconStyle,
5} from '@fortawesome/react-native-fontawesome'
6import {msg, Trans} from '@lingui/macro'
7import {useLingui} from '@lingui/react'
···1import {View} from 'react-native'
2import {
3 FontAwesomeIcon,
4+ type FontAwesomeIconStyle,
5} from '@fortawesome/react-native-fontawesome'
6import {msg, Trans} from '@lingui/macro'
7import {useLingui} from '@lingui/react'
+1-1
src/view/com/util/fab/FAB.web.tsx
···1import {View} from 'react-native'
23import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
4-import {FABInner, FABProps} from './FABInner'
56export const FAB = (_opts: FABProps) => {
7 const {isDesktop} = useWebMediaQueries()
···1import {View} from 'react-native'
23import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
4+import {FABInner, type FABProps} from './FABInner'
56export const FAB = (_opts: FABProps) => {
7 const {isDesktop} = useWebMediaQueries()
···1+import {Image, type ImageProps, type ImageSource} from 'expo-image'
23interface HighPriorityImageProps extends ImageProps {
4 source: ImageSource
+1-1
src/view/com/util/layouts/LoggedOutLayout.tsx
···1-import React from 'react'
2import {ScrollView, StyleSheet, View} from 'react-native'
034import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle'
5import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible'
···01import {ScrollView, StyleSheet, View} from 'react-native'
2+import type React from 'react'
34import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle'
5import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible'
+3-3
src/view/icons/Logo.tsx
···1import React from 'react'
2-import {StyleSheet, TextProps} from 'react-native'
3import Svg, {
4 Defs,
5 LinearGradient,
6 Path,
7- PathProps,
8 Stop,
9- SvgProps,
10} from 'react-native-svg'
11import {Image} from 'expo-image'
12
···1import React from 'react'
2+import {StyleSheet, type TextProps} from 'react-native'
3import Svg, {
4 Defs,
5 LinearGradient,
6 Path,
7+ type PathProps,
8 Stop,
9+ type SvgProps,
10} from 'react-native-svg'
11import {Image} from 'expo-image'
12
+1-1
src/view/icons/Logomark.tsx
···1-import Svg, {Path, PathProps, SvgProps} from 'react-native-svg'
23import {usePalette} from '#/lib/hooks/usePalette'
4
···1+import Svg, {Path, type PathProps, type SvgProps} from 'react-native-svg'
23import {usePalette} from '#/lib/hooks/usePalette'
4
+1-1
src/view/icons/Logotype.tsx
···1-import Svg, {Path, PathProps, SvgProps} from 'react-native-svg'
23import {usePalette} from '#/lib/hooks/usePalette'
4
···1+import Svg, {Path, type PathProps, type SvgProps} from 'react-native-svg'
23import {usePalette} from '#/lib/hooks/usePalette'
4
+4-1
src/view/screens/CommunityGuidelines.tsx
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0009import {s} from '#/lib/styles'
10import {useSetMinimalShellMode} from '#/state/shell'
11import {TextLink} from '#/view/com/util/Link'
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8+import {
9+ type CommonNavigatorParams,
10+ type NativeStackScreenProps,
11+} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {useSetMinimalShellMode} from '#/state/shell'
14import {TextLink} from '#/view/com/util/Link'
+4-1
src/view/screens/CopyrightPolicy.tsx
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0009import {s} from '#/lib/styles'
10import {useSetMinimalShellMode} from '#/state/shell'
11import {TextLink} from '#/view/com/util/Link'
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8+import {
9+ type CommonNavigatorParams,
10+ type NativeStackScreenProps,
11+} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {useSetMinimalShellMode} from '#/state/shell'
14import {TextLink} from '#/view/com/util/Link'
+1-1
src/view/screens/NotFound.tsx
···9} from '@react-navigation/native'
1011import {usePalette} from '#/lib/hooks/usePalette'
12-import {NavigationProp} from '#/lib/routes/types'
13import {s} from '#/lib/styles'
14import {useSetMinimalShellMode} from '#/state/shell'
15import {Button} from '#/view/com/util/forms/Button'
···9} from '@react-navigation/native'
1011import {usePalette} from '#/lib/hooks/usePalette'
12+import {type NavigationProp} from '#/lib/routes/types'
13import {s} from '#/lib/styles'
14import {useSetMinimalShellMode} from '#/state/shell'
15import {Button} from '#/view/com/util/forms/Button'
+4-1
src/view/screens/PrivacyPolicy.tsx
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0009import {s} from '#/lib/styles'
10import {useSetMinimalShellMode} from '#/state/shell'
11import {TextLink} from '#/view/com/util/Link'
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8+import {
9+ type CommonNavigatorParams,
10+ type NativeStackScreenProps,
11+} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {useSetMinimalShellMode} from '#/state/shell'
14import {TextLink} from '#/view/com/util/Link'
+4-1
src/view/screens/ProfileFeedLikedBy.tsx
···3import {useLingui} from '@lingui/react'
4import {useFocusEffect} from '@react-navigation/native'
56-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0007import {makeRecordUri} from '#/lib/strings/url-helpers'
8import {useSetMinimalShellMode} from '#/state/shell'
9import {PostLikedBy as PostLikedByComponent} from '#/view/com/post-thread/PostLikedBy'
···3import {useLingui} from '@lingui/react'
4import {useFocusEffect} from '@react-navigation/native'
56+import {
7+ type CommonNavigatorParams,
8+ type NativeStackScreenProps,
9+} from '#/lib/routes/types'
10import {makeRecordUri} from '#/lib/strings/url-helpers'
11import {useSetMinimalShellMode} from '#/state/shell'
12import {PostLikedBy as PostLikedByComponent} from '#/view/com/post-thread/PostLikedBy'
+1-1
src/view/screens/Storybook/ListContained.tsx
···2import {View} from 'react-native'
34import {ScrollProvider} from '#/lib/ScrollContext'
5-import {List, ListMethods} from '#/view/com/util/List'
6import {Button, ButtonText} from '#/components/Button'
7import * as Toggle from '#/components/forms/Toggle'
8import {Text} from '#/components/Typography'
···2import {View} from 'react-native'
34import {ScrollProvider} from '#/lib/ScrollContext'
5+import {List, type ListMethods} from '#/view/com/util/List'
6import {Button, ButtonText} from '#/components/Button'
7import * as Toggle from '#/components/forms/Toggle'
8import {Text} from '#/components/Typography'
+4-1
src/view/screens/Support.tsx
···56import {HELP_DESK_URL} from '#/lib/constants'
7import {usePalette} from '#/lib/hooks/usePalette'
8-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0009import {s} from '#/lib/styles'
10import {useSetMinimalShellMode} from '#/state/shell'
11import {TextLink} from '#/view/com/util/Link'
···56import {HELP_DESK_URL} from '#/lib/constants'
7import {usePalette} from '#/lib/hooks/usePalette'
8+import {
9+ type CommonNavigatorParams,
10+ type NativeStackScreenProps,
11+} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {useSetMinimalShellMode} from '#/state/shell'
14import {TextLink} from '#/view/com/util/Link'
+4-1
src/view/screens/TermsOfService.tsx
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
0009import {s} from '#/lib/styles'
10import {useSetMinimalShellMode} from '#/state/shell'
11import {TextLink} from '#/view/com/util/Link'
···5import {useFocusEffect} from '@react-navigation/native'
67import {usePalette} from '#/lib/hooks/usePalette'
8+import {
9+ type CommonNavigatorParams,
10+ type NativeStackScreenProps,
11+} from '#/lib/routes/types'
12import {s} from '#/lib/styles'
13import {useSetMinimalShellMode} from '#/state/shell'
14import {TextLink} from '#/view/com/util/Link'