diff options
author | Samuel Newman <mozzius@protonmail.com> | 2025-09-09 18:09:10 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-09 08:09:10 -0700 |
commit | 3e2c181c404e2070873bc9c473b428a610bd193e (patch) | |
tree | 3a579b8e99852ffa339756e2069850dce4151d09 /src/view/com | |
parent | d496a223522b4cdefef0a8725ce31d05e398e68f (diff) | |
download | voidsky-3e2c181c404e2070873bc9c473b428a610bd193e.tar.zst |
Upgrade `@types/react` to 19 and run codemod (attempt 2) (#8918)
* update dependencies * rm `import type React from 'react'` * run codemods * patch discord types * update types/react-dom * Update yarn.lock
Diffstat (limited to 'src/view/com')
26 files changed, 69 insertions, 39 deletions
diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index 61715a988..2a9635402 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -174,7 +174,7 @@ export const ComposePost = ({ videoUri: initVideoUri, cancelRef, }: Props & { - cancelRef?: React.RefObject<CancelRef> + cancelRef?: React.RefObject<CancelRef | null> }) => { const {currentAccount} = useSession() const agent = useAgent() diff --git a/src/view/com/composer/photos/EditImageDialog.tsx b/src/view/com/composer/photos/EditImageDialog.tsx index 9799f7b82..9a0eb9084 100644 --- a/src/view/com/composer/photos/EditImageDialog.tsx +++ b/src/view/com/composer/photos/EditImageDialog.tsx @@ -1,5 +1,3 @@ -import type React from 'react' - import {type ComposerImage} from '#/state/gallery' import type * as Dialog from '#/components/Dialog' diff --git a/src/view/com/composer/photos/EditImageDialog.web.tsx b/src/view/com/composer/photos/EditImageDialog.web.tsx index 9a170736a..cda4e9ecf 100644 --- a/src/view/com/composer/photos/EditImageDialog.web.tsx +++ b/src/view/com/composer/photos/EditImageDialog.web.tsx @@ -112,7 +112,7 @@ function EditImageInner({ aspectRatio, }: Required<Pick<EditImageDialogProps, 'image'>> & Omit<EditImageDialogProps, 'control' | 'image'> & { - saveRef: React.RefObject<{save: () => Promise<void>}> + saveRef: React.RefObject<{save: () => Promise<void>} | null> }) { const t = useTheme() const [isDragging, setIsDragging] = useState(false) diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index 0f93e66e3..219212232 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -1,4 +1,11 @@ -import {useCallback, useEffect, useMemo, useRef, useState} from 'react' +import { + type JSX, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from 'react' import {View} from 'react-native' import {type AppBskyActorDefs, AppBskyFeedDefs} from '@atproto/api' import {msg} from '@lingui/macro' diff --git a/src/view/com/home/HomeHeaderLayout.web.tsx b/src/view/com/home/HomeHeaderLayout.web.tsx index d8bbe19e6..b12ab69b7 100644 --- a/src/view/com/home/HomeHeaderLayout.web.tsx +++ b/src/view/com/home/HomeHeaderLayout.web.tsx @@ -1,7 +1,8 @@ -import React from 'react' +import {type JSX} from 'react' import {View} from 'react-native' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' +import type React from 'react' import {useKawaiiMode} from '#/state/preferences/kawaii' import {useSession} from '#/state/session' diff --git a/src/view/com/home/HomeHeaderLayoutMobile.tsx b/src/view/com/home/HomeHeaderLayoutMobile.tsx index 7a40604f4..a0d7b3e78 100644 --- a/src/view/com/home/HomeHeaderLayoutMobile.tsx +++ b/src/view/com/home/HomeHeaderLayoutMobile.tsx @@ -1,3 +1,4 @@ +import {type JSX} from 'react' import {View} from 'react-native' import Animated from 'react-native-reanimated' import {msg} from '@lingui/macro' diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx index 541c8abf9..0771dcd4b 100644 --- a/src/view/com/lists/ListMembers.tsx +++ b/src/view/com/lists/ListMembers.tsx @@ -1,4 +1,4 @@ -import React, {useCallback} from 'react' +import React, {type JSX, useCallback} from 'react' import { Dimensions, type GestureResponderEvent, diff --git a/src/view/com/lists/MyLists.tsx b/src/view/com/lists/MyLists.tsx index 5f94946e8..18110b8ba 100644 --- a/src/view/com/lists/MyLists.tsx +++ b/src/view/com/lists/MyLists.tsx @@ -1,13 +1,13 @@ -import React from 'react' +import React, {type JSX} from 'react' import { ActivityIndicator, FlatList as RNFlatList, RefreshControl, - StyleProp, + type StyleProp, View, - ViewStyle, + type ViewStyle, } from 'react-native' -import {AppBskyGraphDefs as GraphDefs} from '@atproto/api' +import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' @@ -16,7 +16,7 @@ import {cleanError} from '#/lib/strings/errors' import {s} from '#/lib/styles' import {logger} from '#/logger' import {useModerationOpts} from '#/state/preferences/moderation-opts' -import {MyListsFilter, useMyListsQuery} from '#/state/queries/my-lists' +import {type MyListsFilter, useMyListsQuery} from '#/state/queries/my-lists' import {atoms as a, useTheme} from '#/alf' import {BulletList_Stroke2_Corner0_Rounded as ListIcon} from '#/components/icons/BulletList' import * as ListCard from '#/components/ListCard' diff --git a/src/view/com/notifications/NotificationFeedItem.tsx b/src/view/com/notifications/NotificationFeedItem.tsx index ce774e888..32e7a04df 100644 --- a/src/view/com/notifications/NotificationFeedItem.tsx +++ b/src/view/com/notifications/NotificationFeedItem.tsx @@ -248,7 +248,7 @@ let NotificationFeedItem = ({ : '' let a11yLabel = '' - let notificationContent: ReactElement + let notificationContent: ReactElement<any> let icon = ( <HeartIconFilled size="xl" diff --git a/src/view/com/pager/Pager.tsx b/src/view/com/pager/Pager.tsx index 5eb7d7608..6d0982ad8 100644 --- a/src/view/com/pager/Pager.tsx +++ b/src/view/com/pager/Pager.tsx @@ -1,4 +1,5 @@ import { + type JSX, memo, useCallback, useContext, diff --git a/src/view/com/pager/Pager.web.tsx b/src/view/com/pager/Pager.web.tsx index 06aac169c..ebe5432a3 100644 --- a/src/view/com/pager/Pager.web.tsx +++ b/src/view/com/pager/Pager.web.tsx @@ -1,5 +1,6 @@ import { Children, + type JSX, useCallback, useImperativeHandle, useRef, diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx index 57aaac074..c0c52779e 100644 --- a/src/view/com/pager/PagerWithHeader.tsx +++ b/src/view/com/pager/PagerWithHeader.tsx @@ -1,4 +1,4 @@ -import {memo, useCallback, useEffect, useRef, useState} from 'react' +import {type JSX, memo, useCallback, useEffect, useRef, useState} from 'react' import { type LayoutChangeEvent, type NativeScrollEvent, diff --git a/src/view/com/pager/PagerWithHeader.web.tsx b/src/view/com/pager/PagerWithHeader.web.tsx index 3e530358a..7fed2c3c7 100644 --- a/src/view/com/pager/PagerWithHeader.web.tsx +++ b/src/view/com/pager/PagerWithHeader.web.tsx @@ -1,11 +1,16 @@ import * as React from 'react' -import {ScrollView, View} from 'react-native' +import {type JSX} from 'react' +import {type ScrollView, View} from 'react-native' import {useAnimatedRef} from 'react-native-reanimated' -import {Pager, PagerRef, RenderTabBarFnProps} from '#/view/com/pager/Pager' +import { + Pager, + type PagerRef, + type RenderTabBarFnProps, +} from '#/view/com/pager/Pager' import {atoms as a, web} from '#/alf' import * as Layout from '#/components/Layout' -import {ListMethods} from '../util/List' +import {type ListMethods} from '../util/List' import {TabBar} from './TabBar' export interface PagerWithHeaderChildParams { diff --git a/src/view/com/pager/TabBar.web.tsx b/src/view/com/pager/TabBar.web.tsx index 8afea0019..d22650535 100644 --- a/src/view/com/pager/TabBar.web.tsx +++ b/src/view/com/pager/TabBar.web.tsx @@ -106,7 +106,9 @@ export function TabBar({ <PressableWithHover testID={`${testID}-selector-${i}`} key={`${item}-${i}`} - ref={node => (itemRefs.current[i] = node as any)} + ref={node => { + itemRefs.current[i] = node as any + }} style={styles.item} hoverStyle={t.atoms.bg_contrast_25} onPress={() => onPressItem(i)} diff --git a/src/view/com/posts/PostFeed.tsx b/src/view/com/posts/PostFeed.tsx index 34ebc06fa..fe6351cd4 100644 --- a/src/view/com/posts/PostFeed.tsx +++ b/src/view/com/posts/PostFeed.tsx @@ -1,4 +1,12 @@ -import {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react' +import { + type JSX, + memo, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from 'react' import { ActivityIndicator, AppState, diff --git a/src/view/com/util/EventStopper.tsx b/src/view/com/util/EventStopper.tsx index 24bc47afd..fe81ac4c8 100644 --- a/src/view/com/util/EventStopper.tsx +++ b/src/view/com/util/EventStopper.tsx @@ -1,5 +1,4 @@ import {View, type ViewStyle} from 'react-native' -import type React from 'react' /** * This utility function captures events and stops diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx index 33f9b41d8..3f345c74c 100644 --- a/src/view/com/util/Link.tsx +++ b/src/view/com/util/Link.tsx @@ -1,4 +1,4 @@ -import {memo, useCallback, useMemo} from 'react' +import {type JSX, memo, useCallback, useMemo} from 'react' import { type GestureResponderEvent, Platform, diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 7dd04bab3..b4b05a00b 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -57,7 +57,7 @@ let List = React.forwardRef<ListMethods, ListProps>( ...props }, ref, - ): React.ReactElement => { + ): React.ReactElement<any> => { const isScrolledDown = useSharedValue(false) const t = useTheme() const dedupe = useDedupe(400) diff --git a/src/view/com/util/List.web.tsx b/src/view/com/util/List.web.tsx index 55dafb3dd..584738eea 100644 --- a/src/view/com/util/List.web.tsx +++ b/src/view/com/util/List.web.tsx @@ -1,4 +1,10 @@ -import React, {isValidElement, memo, startTransition, useRef} from 'react' +import React, { + isValidElement, + type JSX, + memo, + startTransition, + useRef, +} from 'react' import { type FlatListProps, StyleSheet, @@ -202,6 +208,7 @@ function ListImpl<ItemT>( behavior: animated ? 'smooth' : 'instant', }) }, + scrollToEnd({animated = true}: {animated?: boolean}) { const element = getScrollableNode() element?.scrollTo({ @@ -382,10 +389,10 @@ function EdgeVisibility({ containerRef, onVisibleChange, }: { - root?: React.RefObject<HTMLDivElement> | null + root?: React.RefObject<HTMLDivElement | null> | null topMargin?: string bottomMargin?: string - containerRef: React.RefObject<Element> + containerRef: React.RefObject<Element | null> onVisibleChange: (isVisible: boolean) => void }) { const [containerHeight, setContainerHeight] = React.useState(0) @@ -404,7 +411,7 @@ function EdgeVisibility({ } function useResizeObserver( - ref: React.RefObject<Element>, + ref: React.RefObject<Element | null>, onResize: undefined | ((w: number, h: number) => void), ) { const handleResize = useNonReactiveCallback(onResize ?? (() => {})) @@ -509,7 +516,7 @@ let Visibility = ({ onVisibleChange, style, }: { - root?: React.RefObject<HTMLDivElement> | null + root?: React.RefObject<HTMLDivElement | null> | null topMargin?: string bottomMargin?: string onVisibleChange: (isVisible: boolean) => void @@ -551,7 +558,7 @@ Visibility = React.memo(Visibility) export const List = memo(React.forwardRef(ListImpl)) as <ItemT>( props: ListProps<ItemT> & {ref?: React.Ref<ListMethods>}, -) => React.ReactElement +) => React.ReactElement<any> // https://stackoverflow.com/questions/7944460/detect-safari-browser diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx index c0feea5d4..80113f421 100644 --- a/src/view/com/util/PostMeta.tsx +++ b/src/view/com/util/PostMeta.tsx @@ -4,7 +4,6 @@ import {type AppBskyActorDefs, type ModerationDecision} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useQueryClient} from '@tanstack/react-query' -import type React from 'react' import {useActorStatus} from '#/lib/actor-status' import {makeProfileLink} from '#/lib/routes/links' diff --git a/src/view/com/util/TimeElapsed.tsx b/src/view/com/util/TimeElapsed.tsx index 70fed222f..146b0d523 100644 --- a/src/view/com/util/TimeElapsed.tsx +++ b/src/view/com/util/TimeElapsed.tsx @@ -1,5 +1,5 @@ -import React from 'react' -import {I18n} from '@lingui/core' +import React, {type JSX} from 'react' +import {type I18n} from '@lingui/core' import {useLingui} from '@lingui/react' import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' diff --git a/src/view/com/util/ViewHeader.tsx b/src/view/com/util/ViewHeader.tsx index 999ce52bd..4fb5c8b8f 100644 --- a/src/view/com/util/ViewHeader.tsx +++ b/src/view/com/util/ViewHeader.tsx @@ -1,3 +1,5 @@ +import {type JSX} from 'react' + import {Header} from '#/components/Layout' /** diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx index b5075707a..fb0e4b155 100644 --- a/src/view/com/util/ViewSelector.tsx +++ b/src/view/com/util/ViewSelector.tsx @@ -1,7 +1,7 @@ -import React, {useEffect, useState} from 'react' +import React, {type JSX, useEffect, useState} from 'react' import { - NativeScrollEvent, - NativeSyntheticEvent, + type NativeScrollEvent, + type NativeSyntheticEvent, Pressable, RefreshControl, ScrollView, @@ -36,7 +36,7 @@ export const ViewSelector = React.forwardRef< renderItem: (item: any) => JSX.Element ListFooterComponent?: | React.ComponentType<any> - | React.ReactElement + | React.ReactElement<any> | null | undefined onSelectView?: (viewIndex: number) => void diff --git a/src/view/com/util/fab/FABInner.tsx b/src/view/com/util/fab/FABInner.tsx index 77e283625..c2d64411a 100644 --- a/src/view/com/util/fab/FABInner.tsx +++ b/src/view/com/util/fab/FABInner.tsx @@ -1,5 +1,5 @@ -import {ComponentProps} from 'react' -import {StyleSheet, TouchableWithoutFeedback} from 'react-native' +import {type ComponentProps, type JSX} from 'react' +import {StyleSheet, type TouchableWithoutFeedback} from 'react-native' import Animated from 'react-native-reanimated' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {LinearGradient} from 'expo-linear-gradient' diff --git a/src/view/com/util/forms/NativeDropdown.web.tsx b/src/view/com/util/forms/NativeDropdown.web.tsx index 37df48da3..fb490b9ac 100644 --- a/src/view/com/util/forms/NativeDropdown.web.tsx +++ b/src/view/com/util/forms/NativeDropdown.web.tsx @@ -161,7 +161,7 @@ function DropdownContent({ menuRef, }: { items: DropdownItem[] - menuRef: React.RefObject<HTMLDivElement> + menuRef: React.RefObject<HTMLDivElement | null> }) { const pal = usePalette('default') const theme = useTheme() diff --git a/src/view/com/util/images/Gallery.tsx b/src/view/com/util/images/Gallery.tsx index 323264ea4..b4bf905ca 100644 --- a/src/view/com/util/images/Gallery.tsx +++ b/src/view/com/util/images/Gallery.tsx @@ -4,7 +4,6 @@ import {Image, type ImageStyle} from 'expo-image' import {type AppBskyEmbedImages} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' -import type React from 'react' import {type Dimensions} from '#/lib/media/types' import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge' |