From abcabbfb969385b8ca9f1bef5f9ba6187eec4810 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Fri, 26 Jun 2026 11:37:58 +0300 Subject: [PATCH] run jscodeshift react import codemod --- eslint-suppressions.json | 26 -------------- .../bottom-sheet/src/BottomSheetPortal.tsx | 8 ++--- modules/bottom-sheet/src/lib/Portal.tsx | 34 ++++++++++++------- .../BackgroundNotificationHandlerProvider.tsx | 13 ++++--- .../src/VisibilityView/index.native.tsx | 4 +-- .../src/VisibilityView/types.ts | 1 - .../expo-emoji-picker/src/EmojiPickerView.tsx | 1 - 7 files changed, 34 insertions(+), 53 deletions(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 8eb15e4aec..1692a6b1a2 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -10,22 +10,9 @@ "count": 2 } }, - "modules/bottom-sheet/src/BottomSheetPortal.tsx": { - "no-restricted-imports": { - "count": 1 - } - }, - "modules/bottom-sheet/src/lib/Portal.tsx": { - "no-restricted-imports": { - "count": 1 - } - }, "modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx": { "@typescript-eslint/no-floating-promises": { "count": 1 - }, - "no-restricted-imports": { - "count": 1 } }, "modules/expo-background-notification-handler/src/ExpoBackgroundNotificationHandlerModule.web.ts": { @@ -66,9 +53,6 @@ }, "@typescript-eslint/no-unsafe-member-access": { "count": 1 - }, - "no-restricted-imports": { - "count": 1 } }, "modules/expo-bluesky-swiss-army/src/VisibilityView/index.tsx": { @@ -76,16 +60,6 @@ "count": 1 } }, - "modules/expo-bluesky-swiss-army/src/VisibilityView/types.ts": { - "no-restricted-imports": { - "count": 1 - } - }, - "modules/expo-emoji-picker/src/EmojiPickerView.tsx": { - "no-restricted-imports": { - "count": 1 - } - }, "src/Navigation.tsx": { "@typescript-eslint/no-floating-promises": { "count": 1 diff --git a/modules/bottom-sheet/src/BottomSheetPortal.tsx b/modules/bottom-sheet/src/BottomSheetPortal.tsx index e259a28626..c02504575f 100644 --- a/modules/bottom-sheet/src/BottomSheetPortal.tsx +++ b/modules/bottom-sheet/src/BottomSheetPortal.tsx @@ -1,20 +1,20 @@ -import React from 'react' +import {createContext, useContext, useMemo} from 'react' import {createPortalGroup_INTERNAL} from './lib/Portal' type PortalContext = React.ElementType<{children: React.ReactNode}> -export const Context = React.createContext({} as PortalContext) +export const Context = createContext({} as PortalContext) Context.displayName = 'BottomSheetPortalContext' -export const useBottomSheetPortal_INTERNAL = () => React.useContext(Context) +export const useBottomSheetPortal_INTERNAL = () => useContext(Context) export function BottomSheetPortalProvider({ children, }: { children: React.ReactNode }) { - const portal = React.useMemo(() => { + const portal = useMemo(() => { return createPortalGroup_INTERNAL() }, []) diff --git a/modules/bottom-sheet/src/lib/Portal.tsx b/modules/bottom-sheet/src/lib/Portal.tsx index 4dad2d8d2b..5c4d953fc2 100644 --- a/modules/bottom-sheet/src/lib/Portal.tsx +++ b/modules/bottom-sheet/src/lib/Portal.tsx @@ -1,4 +1,14 @@ -import React from 'react' +import { + createContext, + Fragment, + useCallback, + useContext, + useEffect, + useId, + useMemo, + useRef, + useState, +} from 'react' type Component = React.ReactElement @@ -13,7 +23,7 @@ type ComponentMap = { } export function createPortalGroup_INTERNAL() { - const Context = React.createContext({ + const Context = createContext({ outlet: null, append: () => {}, remove: () => {}, @@ -21,21 +31,21 @@ export function createPortalGroup_INTERNAL() { Context.displayName = 'BottomSheetPortalContext' function Provider(props: React.PropsWithChildren<{}>) { - const map = React.useRef({}) - const [outlet, setOutlet] = React.useState(null) + const map = useRef({}) + const [outlet, setOutlet] = useState(null) - const append = React.useCallback((id, component) => { + const append = useCallback((id, component) => { if (map.current[id]) return - map.current[id] = {component} + map.current[id] = {component} setOutlet(<>{Object.values(map.current)}) }, []) - const remove = React.useCallback(id => { + const remove = useCallback(id => { delete map.current[id] setOutlet(<>{Object.values(map.current)}) }, []) - const contextValue = React.useMemo( + const contextValue = useMemo( () => ({ outlet, append, @@ -50,14 +60,14 @@ export function createPortalGroup_INTERNAL() { } function Outlet() { - const ctx = React.useContext(Context) + const ctx = useContext(Context) return ctx.outlet } function Portal({children}: React.PropsWithChildren<{}>) { - const {append, remove} = React.useContext(Context) - const id = React.useId() - React.useEffect(() => { + const {append, remove} = useContext(Context) + const id = useId() + useEffect(() => { append(id, children as Component) return () => remove(id) }, [id, children, append, remove]) diff --git a/modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx b/modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx index fed40c38bf..51e4d61863 100644 --- a/modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx +++ b/modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import {createContext, useContext, useEffect, useMemo, useState} from 'react' import {type BackgroundNotificationHandlerPreferences} from './ExpoBackgroundNotificationHandler.types' import {BackgroundNotificationHandler} from './ExpoBackgroundNotificationHandlerModule' @@ -11,11 +11,10 @@ interface BackgroundNotificationPreferencesContext { ) => void } -const Context = React.createContext( +const Context = createContext( {} as BackgroundNotificationPreferencesContext, ) -export const useBackgroundNotificationPreferences = () => - React.useContext(Context) +export const useBackgroundNotificationPreferences = () => useContext(Context) export function BackgroundNotificationPreferencesProvider({ children, @@ -23,18 +22,18 @@ export function BackgroundNotificationPreferencesProvider({ children: React.ReactNode }) { const [preferences, setPreferences] = - React.useState({ + useState({ playSoundChat: true, }) - React.useEffect(() => { + useEffect(() => { ;(async () => { const prefs = await BackgroundNotificationHandler.getAllPrefsAsync() setPreferences(prefs) })() }, []) - const value = React.useMemo( + const value = useMemo( () => ({ preferences, setPref: async < diff --git a/modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx b/modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx index aba96c6d4b..71e0515040 100644 --- a/modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx +++ b/modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import {useCallback} from 'react' import {type StyleProp, type ViewStyle} from 'react-native' import {requireNativeModule, requireNativeViewManager} from 'expo-modules-core' @@ -21,7 +21,7 @@ export default function VisibilityView({ onChangeStatus: onChangeStatusOuter, enabled, }: VisibilityViewProps) { - const onChangeStatus = React.useCallback( + const onChangeStatus = useCallback( (e: {nativeEvent: {isActive: boolean}}) => { onChangeStatusOuter(e.nativeEvent.isActive) }, diff --git a/modules/expo-bluesky-swiss-army/src/VisibilityView/types.ts b/modules/expo-bluesky-swiss-army/src/VisibilityView/types.ts index f0852cf120..1c10bf3c57 100644 --- a/modules/expo-bluesky-swiss-army/src/VisibilityView/types.ts +++ b/modules/expo-bluesky-swiss-army/src/VisibilityView/types.ts @@ -1,4 +1,3 @@ -import type React from 'react' export interface VisibilityViewProps { children: React.ReactNode onChangeStatus: (isActive: boolean) => void diff --git a/modules/expo-emoji-picker/src/EmojiPickerView.tsx b/modules/expo-emoji-picker/src/EmojiPickerView.tsx index 0dff25fb55..05f2e75086 100644 --- a/modules/expo-emoji-picker/src/EmojiPickerView.tsx +++ b/modules/expo-emoji-picker/src/EmojiPickerView.tsx @@ -1,5 +1,4 @@ import {requireNativeView} from 'expo' -import type * as React from 'react' import { type EmojiPickerNativeViewProps,