From cc233a129c723dcda6d4bee03cd1803ce514c457 Mon Sep 17 00:00:00 2001 From: xan.lol Date: Fri, 24 Apr 2026 02:54:04 +0000 Subject: [PATCH] chore: fix linting errors --- src/components/ProfileHoverCard/index.web.tsx | 30 +++++++++++++++--------------- src/components/RichTextTag.tsx | 14 +++++--------- src/components/dialogs/PostInteractionSettingsDialog.tsx | 4 ++-- src/components/forms/TextField.tsx | 31 ++++++++++++++++++++----------- src/components/moderation/ContentHider.tsx | 15 +++------------ src/screens/Login/index.tsx | 1 - src/screens/PostThread/index.tsx | 4 ++-- src/state/gallery.ts | 11 ++++++++--- src/state/preferences/alt-text-required.tsx | 3 ++- src/state/preferences/auto-like-on-repost.tsx | 3 ++- src/state/preferences/autoplay.tsx | 3 ++- src/state/preferences/constellation-enabled.tsx | 27 ++++++++++++++++----------- src/state/preferences/constellation-instance.tsx | 29 ++++++++++++++++------------- src/state/preferences/custom-appview-did.tsx | 4 ++-- src/state/preferences/deer-verification.tsx | 30 +++++++++++++++++++----------- src/state/preferences/direct-fetch-records.tsx | 25 ++++++++++++++++--------- src/state/preferences/disable-composer-prompt.tsx | 27 ++++++++++++++++----------- src/state/preferences/disable-followed-by-metrics.tsx | 27 ++++++++++++++++----------- src/state/preferences/disable-followers-metrics.tsx | 27 ++++++++++++++++----------- src/state/preferences/disable-following-metrics.tsx | 27 ++++++++++++++++----------- src/state/preferences/disable-haptics.tsx | 3 ++- src/state/preferences/disable-likes-metrics.tsx | 25 ++++++++++++++++--------- src/state/preferences/disable-posts-metrics.tsx | 25 ++++++++++++++++--------- src/state/preferences/disable-quotes-metrics.tsx | 27 ++++++++++++++++----------- src/state/preferences/disable-reply-metrics.tsx | 25 ++++++++++++++++--------- src/state/preferences/disable-reposts-metrics.tsx | 27 ++++++++++++++++----------- src/state/preferences/disable-saves-metrics.tsx | 25 ++++++++++++++++--------- src/state/preferences/disable-verify-email-reminder.tsx | 25 ++++++++++++++++--------- src/state/preferences/disable-via-repost-notification.tsx | 25 ++++++++++++++++--------- src/state/preferences/discover-context-enabled.tsx | 27 ++++++++++++++++----------- src/state/preferences/enable-square-avatars.tsx | 25 ++++++++++++++++--------- src/state/preferences/enable-square-buttons.tsx | 25 ++++++++++++++++--------- src/state/preferences/external-embeds-prefs.tsx | 3 ++- src/state/preferences/external-share-buttons.tsx | 27 ++++++++++++++++----------- src/state/preferences/favicon-service.tsx | 25 ++++++++++++++++--------- src/state/preferences/go-links-enabled.tsx | 25 ++++++++++++++++--------- src/state/preferences/hidden-posts.tsx | 3 ++- src/state/preferences/hide-feeds-promo-tab.tsx | 25 ++++++++++++++++--------- src/state/preferences/hide-similar-accounts-recommendations.tsx | 27 ++++++++++++++++----------- src/state/preferences/hide-unreplyable-posts.tsx | 29 ++++++++++++++++------------- src/state/preferences/high-quality-images.tsx | 25 ++++++++++++++++--------- src/state/preferences/image-cdn-host.tsx | 25 ++++++++++++++++--------- src/state/preferences/in-app-browser.tsx | 3 ++- src/state/preferences/index.tsx | 4 +++- src/state/preferences/label-defs.tsx | 3 ++- src/state/preferences/languages.tsx | 3 ++- src/state/preferences/large-alt-badge.tsx | 3 ++- src/state/preferences/moderation-opts.tsx | 3 ++- src/state/preferences/no-app-labelers.tsx | 25 ++++++++++++++++--------- src/state/preferences/no-discover-fallback.tsx | 25 ++++++++++++++++--------- src/state/preferences/openrouter.tsx | 55 ++++++++++++++++++++++++++++++------------------------- src/state/preferences/pds-label.tsx | 33 +++++++++++++++++++-------------- src/state/preferences/plc-directory.tsx | 25 ++++++++++++++++--------- src/state/preferences/post-name-replacement.tsx | 25 ++++++++++++++++--------- src/state/preferences/repost-carousel-enabled.tsx | 25 ++++++++++++++++--------- src/state/preferences/show-follows-you-badge.tsx | 25 ++++++++++++++++--------- src/state/preferences/show-link-in-handle.tsx | 25 ++++++++++++++++--------- src/state/preferences/subtitles.tsx | 3 ++- src/state/preferences/translation-service-preference.tsx | 39 +++++++++++++++++++++++---------------- src/state/preferences/trending.tsx | 3 ++- src/state/preferences/use-handle-in-links.tsx | 27 +++++++++++++++++---------- src/state/preferences/used-starter-packs.tsx | 3 ++- src/state/session/index.tsx | 2 +- src/state/session/oauth-native-client.ts | 1 + src/view/com/composer/Composer.tsx | 4 ++-- src/view/com/pager/Pager.web.tsx | 64 +++++++++++++++++++++++++++------------------------------------- src/view/com/posts/PostFeedItemCarousel.tsx | 12 ++++++------ 67 file(s) changed, 761 insertion(s)(+), 519 deletion(s)(-) diff --git a/src/components/ProfileHoverCard/index.web.tsx b/src/components/ProfileHoverCard/index.web.tsx --- a/src/components/ProfileHoverCard/index.web.tsx +++ b/src/components/ProfileHoverCard/index.web.tsx @@ -1,4 +1,4 @@ -import {memo, useCallback, useEffect, useMemo, useReducer, useRef} from 'react' +import {memo, useEffect, useMemo, useReducer, useRef} from 'react' import {View} from 'react-native' import { type AppBskyActorDefs, @@ -275,15 +275,15 @@ }, [currentState]) const prefetchProfileQuery = usePrefetchProfileQuery() const prefetchedProfile = useRef(false) - const prefetchIfNeeded = useCallback(async () => { + const prefetchIfNeeded = async () => { if (!prefetchedProfile.current) { prefetchedProfile.current = true prefetchProfileQuery(props.did) } - }, [prefetchProfileQuery, props.did]) + } const didFireHover = useRef(false) - const onPointerMoveTarget = useCallback(() => { + const onPointerMoveTarget = () => { prefetchIfNeeded() // Conceptually we want something like onPointerEnter, // but we want to ignore entering only due to scrolling. @@ -292,24 +292,24 @@ if (!didFireHover.current) { didFireHover.current = true dispatch('hovered-target') } - }, [prefetchIfNeeded]) + } - const onPointerLeaveTarget = useCallback(() => { + const onPointerLeaveTarget = () => { didFireHover.current = false dispatch('unhovered-target') - }, []) + } - const onPointerEnterCard = useCallback(() => { + const onPointerEnterCard = () => { dispatch('hovered-card') - }, []) + } - const onPointerLeaveCard = useCallback(() => { + const onPointerLeaveCard = () => { dispatch('unhovered-card') - }, []) + } - const onPress = useCallback(() => { + const onPress = () => { dispatch('pressed') - }, []) + } const isVisible = currentState.stage === 'showing' || @@ -368,13 +368,13 @@ const data = profile.data const status = useActorStatus(data) - const onPressOpenProfile = useCallback(() => { + const onPressOpenProfile = () => { if (!status.isActive || !data) return hide() navigation.push('Profile', { name: data.handle, }) - }, [hide, navigation, status, data]) + } return ( m.value === tag && m.targets.includes('tag'), )) && - !optimisticRemove?.find(m => m?.value === tag), + !optimisticRemove?.find(m => m?.value === tag), ) /* * Mute word records that exactly match the tag in question. */ - const removeableMuteWords = useMemo(() => { - return ( - preferences?.moderationPrefs.mutedWords?.filter(word => { - return word.value === tag - }) || [] - ) - }, [tag, preferences?.moderationPrefs?.mutedWords]) + const removeableMuteWords = + preferences?.moderationPrefs.mutedWords?.filter(word => { + return word.value === tag + }) || [] return ( diff --git a/src/components/dialogs/PostInteractionSettingsDialog.tsx b/src/components/dialogs/PostInteractionSettingsDialog.tsx --- a/src/components/dialogs/PostInteractionSettingsDialog.tsx +++ b/src/components/dialogs/PostInteractionSettingsDialog.tsx @@ -352,7 +352,7 @@ const numberOfListsSelected = threadgateAllowUISettings.filter( v => v.type === 'list', ).length - const toggleGroupValues = useMemo(() => { + const toggleGroupValues = (() => { const values: string[] = [] for (const setting of threadgateAllowUISettings) { switch (setting.type) { @@ -377,7 +377,7 @@ break } } return values - }, [threadgateAllowUISettings]) + })() const toggleGroupOnChange = (values: string[]) => { const settings: ThreadgateAllowUISetting[] = [] diff --git a/src/components/forms/TextField.tsx b/src/components/forms/TextField.tsx --- a/src/components/forms/TextField.tsx +++ b/src/components/forms/TextField.tsx @@ -1,4 +1,15 @@ -import React, {createContext, useContext, useMemo, useRef} from 'react' +import { + Children, + type ComponentType, + createContext, + type ForwardedRef, + isValidElement, + type PropsWithChildren, + type RefObject, + useContext, + useMemo, + useRef, +} from 'react' import { type AccessibilityProps, StyleSheet, @@ -29,7 +40,7 @@ import {Text} from '#/components/Typography' import {IS_WEB} from '#/env' const Context = createContext<{ - inputRef: React.RefObject | null + inputRef: RefObject | null isInvalid: boolean hovered: boolean onHoverIn: () => void @@ -49,9 +60,7 @@ onBlur: () => {}, }) Context.displayName = 'TextFieldContext' -export type RootProps = React.PropsWithChildren< - {isInvalid?: boolean} & TextStyleProp -> +export type RootProps = PropsWithChildren<{isInvalid?: boolean} & TextStyleProp> export function Root({children, isInvalid = false, style}: RootProps) { const inputRef = useRef(null) @@ -88,9 +97,9 @@ // Check if any child has multiline prop const hasMultiline = useMemo(() => { let found = false - React.Children.forEach(children, child => { + Children.forEach(children, child => { if ( - React.isValidElement(child) && + isValidElement(child) && (child.props as {multiline?: boolean})?.multiline ) { found = true @@ -172,7 +181,7 @@ */ value?: string onChangeText?: (value: string) => void isInvalid?: boolean - inputRef?: React.RefObject | React.ForwardedRef + inputRef?: RefObject | ForwardedRef /** * Note: this currently falls back to the label if not specified. However, * most new designs have no placeholder. We should eventually remove this fallback @@ -324,7 +333,7 @@ export function LabelText({ nativeID, children, -}: React.PropsWithChildren<{nativeID?: string}>) { +}: PropsWithChildren<{nativeID?: string}>) { const t = useTheme() return ( ) } -export function Icon({icon: Comp}: {icon: React.ComponentType}) { +export function Icon({icon: Comp}: {icon: ComponentType}) { const t = useTheme() const ctx = useContext(Context) const {hover, focus, errorHover, errorFocus} = useMemo(() => { @@ -389,7 +398,7 @@ children, label, accessibilityHint, style, -}: React.PropsWithChildren< +}: PropsWithChildren< TextStyleProp & { label: string accessibilityHint?: AccessibilityProps['accessibilityHint'] diff --git a/src/components/moderation/ContentHider.tsx b/src/components/moderation/ContentHider.tsx --- a/src/components/moderation/ContentHider.tsx +++ b/src/components/moderation/ContentHider.tsx @@ -1,4 +1,4 @@ -import {useMemo, useState} from 'react' +import {useState} from 'react' import { LayoutAnimation, type StyleProp, @@ -88,7 +88,7 @@ const {i18n} = useLingui() const blur = modui?.blurs[0] const desc = useModerationCauseDescription(blur) - const labelName = useMemo(() => { + const labelName = (() => { if (!modui?.blurs || !blur) { return undefined } @@ -137,16 +137,7 @@ if (selfBlurNames.length === 0) { return desc.name } return [...new Set(selfBlurNames)].join(', ') - }, [ - _, - modui?.blurs, - blur, - desc.name, - desc.isSubjectAccount, - labelDefs, - i18n.locale, - globalLabelStrings, - ]) + })() return ( diff --git a/src/screens/Login/index.tsx b/src/screens/Login/index.tsx --- a/src/screens/Login/index.tsx +++ b/src/screens/Login/index.tsx @@ -23,7 +23,6 @@ import {SetNewPasswordForm} from '#/screens/Login/SetNewPasswordForm' import {atoms as a, native} from '#/alf' import {ScreenTransition} from '#/components/ScreenTransition' import {useAnalytics} from '#/analytics' -import {IS_WEB} from '#/env' import {ChooseAccountForm} from './ChooseAccountForm' import * as AuthLayout from './components/AuthLayout' import {AuthLayoutNavigationContext} from './components/AuthLayout/context' diff --git a/src/screens/PostThread/index.tsx b/src/screens/PostThread/index.tsx --- a/src/screens/PostThread/index.tsx +++ b/src/screens/PostThread/index.tsx @@ -73,7 +73,7 @@ /* * One query to rule them all */ const thread = usePostThread({anchor: uri}) - const {anchor, hasParents} = useMemo(() => { + const {anchor, hasParents} = (() => { let hasParents = false for (const item of thread.data.items) { if (item.type === 'threadPost' && item.depth === 0) { @@ -82,7 +82,7 @@ } hasParents = true } return {hasParents} - }, [thread.data.items]) + })() // Track post:view event when anchor post is viewed const seenPostUriRef = useRef(null) diff --git a/src/state/gallery.ts b/src/state/gallery.ts --- a/src/state/gallery.ts +++ b/src/state/gallery.ts @@ -13,7 +13,7 @@ SaveFormat, } from 'expo-image-manipulator' import {type BlobRef} from '@atproto/api' import {transformExif} from '@uwx/exif-be-gone-web' -import {toByteArray, fromByteArray} from 'base64-js' +import {fromByteArray, toByteArray} from 'base64-js' import {nanoid} from 'nanoid/non-secure' import {POST_IMG_MAX} from '#/lib/constants' @@ -437,8 +437,13 @@ reader.readAsDataURL(blob) }) } -function arrayBufferToDataUri(buffer: Uint8Array | ArrayBufferLike, mime: string): string { - const base64 = fromByteArray(buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer)) +function arrayBufferToDataUri( + buffer: Uint8Array | ArrayBufferLike, + mime: string, +): string { + const base64 = fromByteArray( + buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer), + ) return `data:${mime};base64,${base64}` } diff --git a/src/state/preferences/alt-text-required.tsx b/src/state/preferences/alt-text-required.tsx --- a/src/state/preferences/alt-text-required.tsx +++ b/src/state/preferences/alt-text-required.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -20,7 +21,7 @@ (_: persisted.Schema['requireAltTextEnabled']) => {}, ) setContext.displayName = 'AltTextRequiredSetContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(persisted.get('requireAltTextEnabled')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/auto-like-on-repost.tsx b/src/state/preferences/auto-like-on-repost.tsx --- a/src/state/preferences/auto-like-on-repost.tsx +++ b/src/state/preferences/auto-like-on-repost.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -20,7 +21,7 @@ (_: persisted.Schema['autoLikeOnRepost']) => {}, ) setContext.displayName = 'AutoLikeOnRepostStateContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(persisted.get('autoLikeOnRepost')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/autoplay.tsx b/src/state/preferences/autoplay.tsx --- a/src/state/preferences/autoplay.tsx +++ b/src/state/preferences/autoplay.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -18,7 +19,7 @@ stateContext.displayName = 'AutoplayStateContext' const setContext = createContext((_: boolean) => {}) setContext.displayName = 'AutoplaySetContext' -export function Provider({children}: {children: React.ReactNode}) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(Boolean(persisted.get('disableAutoplay'))) const setStateWrapped = useCallback( diff --git a/src/state/preferences/constellation-enabled.tsx b/src/state/preferences/constellation-enabled.tsx --- a/src/state/preferences/constellation-enabled.tsx +++ b/src/state/preferences/constellation-enabled.tsx @@ -1,23 +1,28 @@ -import React from 'react' +import { + createContext, + useCallback, + useContext, + useEffect, + useState, +} from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['constellationEnabled'] type SetContext = (v: persisted.Schema['constellationEnabled']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.constellationEnabled, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['constellationEnabled']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('constellationEnabled'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('constellationEnabled')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (constellationEnabled: persisted.Schema['constellationEnabled']) => { setState(constellationEnabled) persisted.write('constellationEnabled', constellationEnabled) @@ -25,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'constellationEnabled', nextConstellationEnabled => { @@ -44,9 +49,9 @@ ) } export function useConstellationEnabled() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetConstellationEnabled() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/constellation-instance.tsx b/src/state/preferences/constellation-instance.tsx --- a/src/state/preferences/constellation-instance.tsx +++ b/src/state/preferences/constellation-instance.tsx @@ -1,23 +1,28 @@ -import React from 'react' +import { + createContext, + useCallback, + useContext, + useEffect, + useState, +} from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['constellationInstance'] type SetContext = (v: persisted.Schema['constellationInstance']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.constellationInstance, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['constellationInstance']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('constellationInstance'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('constellationInstance')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (constellationInstance: persisted.Schema['constellationInstance']) => { setState(constellationInstance) persisted.write('constellationInstance', constellationInstance) @@ -25,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'constellationInstance', nextConstellationInstance => { @@ -44,11 +49,9 @@ ) } export function useConstellationInstance() { - return ( - React.useContext(stateContext) ?? persisted.defaults.constellationInstance! - ) + return useContext(stateContext) ?? persisted.defaults.constellationInstance! } export function useSetConstellationInstance() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/custom-appview-did.tsx b/src/state/preferences/custom-appview-did.tsx --- a/src/state/preferences/custom-appview-did.tsx +++ b/src/state/preferences/custom-appview-did.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import {useCallback} from 'react' import {reloadAppAsync} from 'expo' import {isDid} from '@atproto/api' @@ -17,7 +17,7 @@ export function useSetCustomAppViewDid() { const [, setCustomAppViewDid] = useCustomAppViewDid() - return React.useCallback( + return useCallback( (customAppViewDid: string | undefined) => { setCustomAppViewDid(customAppViewDid) diff --git a/src/state/preferences/deer-verification.tsx b/src/state/preferences/deer-verification.tsx --- a/src/state/preferences/deer-verification.tsx +++ b/src/state/preferences/deer-verification.tsx @@ -1,21 +1,29 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useMemo, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['deerVerification'] type SetContext = (v: persisted.Schema['deerVerification']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.deerVerification, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['deerVerification']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('deerVerification')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('deerVerification')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (deerVerification: persisted.Schema['deerVerification']) => { setState(deerVerification) persisted.write('deerVerification', deerVerification) @@ -23,7 +31,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('deerVerification', nextDeerVerification => { setState(nextDeerVerification) }) @@ -39,7 +47,7 @@ ) } export function useDeerVerification() { - return React.useContext(stateContext) ?? persisted.defaults.deerVerification! + return useContext(stateContext) ?? persisted.defaults.deerVerification! } export function useDeerVerificationEnabled() { @@ -57,14 +65,14 @@ return trusted } export function useSetDeerVerification() { - return React.useContext(setContext) + return useContext(setContext) } export function useSetDeerVerificationEnabled() { const deerVerification = useDeerVerification() const setDeerVerification = useSetDeerVerification() - return React.useMemo( + return useMemo( () => (enabled: boolean) => setDeerVerification({...deerVerification, enabled}), [deerVerification, setDeerVerification], @@ -75,7 +83,7 @@ export function useSetDeerVerificationTrust() { const deerVerification = useDeerVerification() const setDeerVerification = useSetDeerVerification() - return React.useMemo( + return useMemo( () => ({ add: (add: string) => { const trusted = new Set(deerVerification.trusted) diff --git a/src/state/preferences/direct-fetch-records.tsx b/src/state/preferences/direct-fetch-records.tsx --- a/src/state/preferences/direct-fetch-records.tsx +++ b/src/state/preferences/direct-fetch-records.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['directFetchRecords'] type SetContext = (v: persisted.Schema['directFetchRecords']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.directFetchRecords, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['directFetchRecords']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('directFetchRecords')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('directFetchRecords')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (directFetchRecords: persisted.Schema['directFetchRecords']) => { setState(directFetchRecords) persisted.write('directFetchRecords', directFetchRecords) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('directFetchRecords', nextDirectFetchRecords => { setState(nextDirectFetchRecords) }) @@ -39,9 +46,9 @@ ) } export function useDirectFetchRecords() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDirectFetchRecords() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-composer-prompt.tsx b/src/state/preferences/disable-composer-prompt.tsx --- a/src/state/preferences/disable-composer-prompt.tsx +++ b/src/state/preferences/disable-composer-prompt.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['disableComposerPrompt'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableComposerPrompt']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableComposerPrompt, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableComposerPrompt']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('disableComposerPrompt'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableComposerPrompt')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (disableComposerPrompt: persisted.Schema['disableComposerPrompt']) => { setState(disableComposerPrompt) persisted.write('disableComposerPrompt', disableComposerPrompt) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'disableComposerPrompt', nextDisableComposerPrompt => { @@ -47,9 +52,9 @@ ) } export function useDisableComposerPrompt() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableComposerPrompt() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-followed-by-metrics.tsx b/src/state/preferences/disable-followed-by-metrics.tsx --- a/src/state/preferences/disable-followed-by-metrics.tsx +++ b/src/state/preferences/disable-followed-by-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['disableFollowedByMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableFollowedByMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableFollowedByMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableFollowedByMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('disableFollowedByMetrics'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableFollowedByMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableFollowedByMetrics']) => { setState(value) persisted.write('disableFollowedByMetrics', value) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableFollowedByMetrics', next => { setState(next) }) @@ -44,9 +49,9 @@ ) } export function useDisableFollowedByMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableFollowedByMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-followers-metrics.tsx b/src/state/preferences/disable-followers-metrics.tsx --- a/src/state/preferences/disable-followers-metrics.tsx +++ b/src/state/preferences/disable-followers-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['disableFollowersMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableFollowersMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableFollowersMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableFollowersMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('disableFollowersMetrics'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableFollowersMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableFollowersMetrics']) => { setState(value) persisted.write('disableFollowersMetrics', value) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableFollowersMetrics', next => { setState(next) }) @@ -44,9 +49,9 @@ ) } export function useDisableFollowersMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableFollowersMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-following-metrics.tsx b/src/state/preferences/disable-following-metrics.tsx --- a/src/state/preferences/disable-following-metrics.tsx +++ b/src/state/preferences/disable-following-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['disableFollowingMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableFollowingMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableFollowingMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableFollowingMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('disableFollowingMetrics'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableFollowingMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableFollowingMetrics']) => { setState(value) persisted.write('disableFollowingMetrics', value) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableFollowingMetrics', next => { setState(next) }) @@ -44,9 +49,9 @@ ) } export function useDisableFollowingMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableFollowingMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-haptics.tsx b/src/state/preferences/disable-haptics.tsx --- a/src/state/preferences/disable-haptics.tsx +++ b/src/state/preferences/disable-haptics.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -18,7 +19,7 @@ stateContext.displayName = 'DisableHapticsStateContext' const setContext = createContext((_: boolean) => {}) setContext.displayName = 'DisableHapticsSetContext' -export function Provider({children}: {children: React.ReactNode}) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(Boolean(persisted.get('disableHaptics'))) const setStateWrapped = useCallback( diff --git a/src/state/preferences/disable-likes-metrics.tsx b/src/state/preferences/disable-likes-metrics.tsx --- a/src/state/preferences/disable-likes-metrics.tsx +++ b/src/state/preferences/disable-likes-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['disableLikesMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableLikesMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableLikesMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableLikesMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('disableLikesMetrics')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableLikesMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableLikesMetrics']) => { setState(value) persisted.write('disableLikesMetrics', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableLikesMetrics', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useDisableLikesMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableLikesMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-posts-metrics.tsx b/src/state/preferences/disable-posts-metrics.tsx --- a/src/state/preferences/disable-posts-metrics.tsx +++ b/src/state/preferences/disable-posts-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['disablePostsMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disablePostsMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disablePostsMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disablePostsMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('disablePostsMetrics')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disablePostsMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disablePostsMetrics']) => { setState(value) persisted.write('disablePostsMetrics', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disablePostsMetrics', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useDisablePostsMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisablePostsMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-quotes-metrics.tsx b/src/state/preferences/disable-quotes-metrics.tsx --- a/src/state/preferences/disable-quotes-metrics.tsx +++ b/src/state/preferences/disable-quotes-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['disableQuotesMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableQuotesMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableQuotesMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableQuotesMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('disableQuotesMetrics'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableQuotesMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableQuotesMetrics']) => { setState(value) persisted.write('disableQuotesMetrics', value) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableQuotesMetrics', next => { setState(next) }) @@ -44,9 +49,9 @@ ) } export function useDisableQuotesMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableQuotesMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-reply-metrics.tsx b/src/state/preferences/disable-reply-metrics.tsx --- a/src/state/preferences/disable-reply-metrics.tsx +++ b/src/state/preferences/disable-reply-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['disableReplyMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableReplyMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableReplyMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableReplyMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('disableReplyMetrics')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableReplyMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableReplyMetrics']) => { setState(value) persisted.write('disableReplyMetrics', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableReplyMetrics', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useDisableReplyMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableReplyMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-reposts-metrics.tsx b/src/state/preferences/disable-reposts-metrics.tsx --- a/src/state/preferences/disable-reposts-metrics.tsx +++ b/src/state/preferences/disable-reposts-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['disableRepostsMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableRepostsMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableRepostsMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableRepostsMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('disableRepostsMetrics'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableRepostsMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableRepostsMetrics']) => { setState(value) persisted.write('disableRepostsMetrics', value) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableRepostsMetrics', next => { setState(next) }) @@ -44,9 +49,9 @@ ) } export function useDisableRepostsMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableRepostsMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-saves-metrics.tsx b/src/state/preferences/disable-saves-metrics.tsx --- a/src/state/preferences/disable-saves-metrics.tsx +++ b/src/state/preferences/disable-saves-metrics.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['disableSavesMetrics'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableSavesMetrics']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableSavesMetrics, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableSavesMetrics']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('disableSavesMetrics')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('disableSavesMetrics')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableSavesMetrics']) => { setState(value) persisted.write('disableSavesMetrics', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableSavesMetrics', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useDisableSavesMetrics() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableSavesMetrics() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-verify-email-reminder.tsx b/src/state/preferences/disable-verify-email-reminder.tsx --- a/src/state/preferences/disable-verify-email-reminder.tsx +++ b/src/state/preferences/disable-verify-email-reminder.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,19 @@ type StateContext = persisted.Schema['disableVerifyEmailReminder'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableVerifyEmailReminder']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableVerifyEmailReminder, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableVerifyEmailReminder']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState( persisted.get('disableVerifyEmailReminder'), ) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableVerifyEmailReminder']) => { setState(value) persisted.write('disableVerifyEmailReminder', value) @@ -28,7 +35,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableVerifyEmailReminder', next => { setState(next) }) @@ -44,9 +51,9 @@ ) } export function useDisableVerifyEmailReminder() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableVerifyEmailReminder() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/disable-via-repost-notification.tsx b/src/state/preferences/disable-via-repost-notification.tsx --- a/src/state/preferences/disable-via-repost-notification.tsx +++ b/src/state/preferences/disable-via-repost-notification.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,19 @@ type StateContext = persisted.Schema['disableViaRepostNotification'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['disableViaRepostNotification']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.disableViaRepostNotification, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['disableViaRepostNotification']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState( persisted.get('disableViaRepostNotification'), ) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['disableViaRepostNotification']) => { setState(value) persisted.write('disableViaRepostNotification', value) @@ -28,7 +35,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('disableViaRepostNotification', next => { setState(next) }) @@ -44,9 +51,9 @@ ) } export function useDisableViaRepostNotification() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDisableViaRepostNotification() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/discover-context-enabled.tsx b/src/state/preferences/discover-context-enabled.tsx --- a/src/state/preferences/discover-context-enabled.tsx +++ b/src/state/preferences/discover-context-enabled.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['discoverContextEnabled'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['discoverContextEnabled']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.discoverContextEnabled, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['discoverContextEnabled']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('discoverContextEnabled'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('discoverContextEnabled')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (discoverContextEnabled: persisted.Schema['discoverContextEnabled']) => { setState(discoverContextEnabled) persisted.write('discoverContextEnabled', discoverContextEnabled) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'discoverContextEnabled', nextDiscoverContextEnabled => { @@ -47,9 +52,9 @@ ) } export function useDiscoverContextEnabled() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetDiscoverContextEnabled() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/enable-square-avatars.tsx b/src/state/preferences/enable-square-avatars.tsx --- a/src/state/preferences/enable-square-avatars.tsx +++ b/src/state/preferences/enable-square-avatars.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['enableSquareAvatars'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['enableSquareAvatars']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.enableSquareAvatars, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['enableSquareAvatars']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('enableSquareAvatars')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('enableSquareAvatars')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['enableSquareAvatars']) => { setState(value) persisted.write('enableSquareAvatars', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('enableSquareAvatars', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useEnableSquareAvatars() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetEnableSquareAvatars() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/enable-square-buttons.tsx b/src/state/preferences/enable-square-buttons.tsx --- a/src/state/preferences/enable-square-buttons.tsx +++ b/src/state/preferences/enable-square-buttons.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['enableSquareButtons'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['enableSquareButtons']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.enableSquareButtons, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['enableSquareButtons']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('enableSquareButtons')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('enableSquareButtons')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['enableSquareButtons']) => { setState(value) persisted.write('enableSquareButtons', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('enableSquareButtons', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useEnableSquareButtons() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetEnableSquareButtons() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/external-embeds-prefs.tsx b/src/state/preferences/external-embeds-prefs.tsx --- a/src/state/preferences/external-embeds-prefs.tsx +++ b/src/state/preferences/external-embeds-prefs.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import {type EmbedPlayerSource} from '#/lib/strings/embed-player' import * as persisted from '#/state/persisted' @@ -22,7 +23,7 @@ stateContext.displayName = 'ExternalEmbedsPrefsStateContext' const setContext = createContext({} as SetContext) setContext.displayName = 'ExternalEmbedsPrefsSetContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(persisted.get('externalEmbeds')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/external-share-buttons.tsx b/src/state/preferences/external-share-buttons.tsx --- a/src/state/preferences/external-share-buttons.tsx +++ b/src/state/preferences/external-share-buttons.tsx @@ -1,23 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['showExternalShareButtons'] type SetContext = (v: persisted.Schema['showExternalShareButtons']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.showExternalShareButtons, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['showExternalShareButtons']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('showExternalShareButtons'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('showExternalShareButtons')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( ( showExternalShareButtons: persisted.Schema['showExternalShareButtons'], ) => { @@ -27,7 +32,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'showExternalShareButtons', nextShowExternalShareButtons => { @@ -46,9 +51,9 @@ ) } export function useShowExternalShareButtons() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetShowExternalShareButtons() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/favicon-service.tsx b/src/state/preferences/favicon-service.tsx --- a/src/state/preferences/favicon-service.tsx +++ b/src/state/preferences/favicon-service.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['faviconService'] type SetContext = (v: persisted.Schema['faviconService']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.faviconService, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['faviconService']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('faviconService')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('faviconService')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (faviconService: persisted.Schema['faviconService']) => { setState(faviconService) persisted.write('faviconService', faviconService) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('faviconService', next => { setState(next) }) @@ -39,10 +46,10 @@ ) } export function useFaviconService() { - return React.useContext(stateContext) ?? persisted.defaults.faviconService + return useContext(stateContext) ?? persisted.defaults.faviconService } export function useSetFaviconService() { - const setFaviconService = React.useContext(setContext) + const setFaviconService = useContext(setContext) return setFaviconService } diff --git a/src/state/preferences/go-links-enabled.tsx b/src/state/preferences/go-links-enabled.tsx --- a/src/state/preferences/go-links-enabled.tsx +++ b/src/state/preferences/go-links-enabled.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['goLinksEnabled'] type SetContext = (v: persisted.Schema['goLinksEnabled']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.goLinksEnabled, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['goLinksEnabled']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('goLinksEnabled')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('goLinksEnabled')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (goLinksEnabled: persisted.Schema['goLinksEnabled']) => { setState(goLinksEnabled) persisted.write('goLinksEnabled', goLinksEnabled) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('goLinksEnabled', nextGoLinksEnabled => { setState(nextGoLinksEnabled) }) @@ -39,9 +46,9 @@ ) } export function useGoLinksEnabled() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetGoLinksEnabled() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/hidden-posts.tsx b/src/state/preferences/hidden-posts.tsx --- a/src/state/preferences/hidden-posts.tsx +++ b/src/state/preferences/hidden-posts.tsx @@ -6,6 +6,7 @@ useEffect, useMemo, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -26,7 +27,7 @@ unhidePost: () => {}, }) apiContext.displayName = 'HiddenPostsApiContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(persisted.get('hiddenPosts')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/hide-feeds-promo-tab.tsx b/src/state/preferences/hide-feeds-promo-tab.tsx --- a/src/state/preferences/hide-feeds-promo-tab.tsx +++ b/src/state/preferences/hide-feeds-promo-tab.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,17 +15,17 @@ type StateContext = persisted.Schema['hideFeedsPromoTab'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['hideFeedsPromoTab']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.hideFeedsPromoTab, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['hideFeedsPromoTab']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('hideFeedsPromoTab')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('hideFeedsPromoTab')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['hideFeedsPromoTab']) => { setState(value) persisted.write('hideFeedsPromoTab', value) @@ -26,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('hideFeedsPromoTab', next => { setState(next) }) @@ -42,9 +49,9 @@ ) } export function useHideFeedsPromoTab() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetHideFeedsPromoTab() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/hide-similar-accounts-recommendations.tsx b/src/state/preferences/hide-similar-accounts-recommendations.tsx --- a/src/state/preferences/hide-similar-accounts-recommendations.tsx +++ b/src/state/preferences/hide-similar-accounts-recommendations.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -8,19 +15,17 @@ type StateContext = persisted.Schema['hideSimilarAccountsRecomm'] // Same setter signature used across other preference modules type SetContext = (v: persisted.Schema['hideSimilarAccountsRecomm']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.hideSimilarAccountsRecomm, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['hideSimilarAccountsRecomm']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('hideSimilarAccountsRecomm'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('hideSimilarAccountsRecomm')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['hideSimilarAccountsRecomm']) => { setState(value) persisted.write('hideSimilarAccountsRecomm', value) @@ -28,7 +33,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('hideSimilarAccountsRecomm', next => { setState(next) }) @@ -44,9 +49,9 @@ ) } export function useHideSimilarAccountsRecomm() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetHideSimilarAccountsRecomm() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/hide-unreplyable-posts.tsx b/src/state/preferences/hide-unreplyable-posts.tsx --- a/src/state/preferences/hide-unreplyable-posts.tsx +++ b/src/state/preferences/hide-unreplyable-posts.tsx @@ -1,23 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['hideUnreplyablePosts'] type SetContext = (v: persisted.Schema['hideUnreplyablePosts']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.hideUnreplyablePosts, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['hideUnreplyablePosts']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( - persisted.get('hideUnreplyablePosts'), - ) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('hideUnreplyablePosts')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (hideUnreplyablePosts: persisted.Schema['hideUnreplyablePosts']) => { setState(hideUnreplyablePosts) persisted.write('hideUnreplyablePosts', hideUnreplyablePosts) @@ -25,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('hideUnreplyablePosts', nextValue => { setState(nextValue) }) @@ -41,11 +46,9 @@ ) } export function useHideUnreplyablePosts() { - return ( - React.useContext(stateContext) ?? persisted.defaults.hideUnreplyablePosts - ) + return useContext(stateContext) ?? persisted.defaults.hideUnreplyablePosts } export function useSetHideUnreplyablePosts() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/high-quality-images.tsx b/src/state/preferences/high-quality-images.tsx --- a/src/state/preferences/high-quality-images.tsx +++ b/src/state/preferences/high-quality-images.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['highQualityImages'] type SetContext = (v: persisted.Schema['highQualityImages']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.highQualityImages, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['highQualityImages']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('highQualityImages')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('highQualityImages')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (highQualityImages: persisted.Schema['highQualityImages']) => { setState(highQualityImages) persisted.write('highQualityImages', highQualityImages) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('highQualityImages', nextHighQualityImages => { setState(nextHighQualityImages) }) @@ -39,11 +46,11 @@ ) } export function useHighQualityImages() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetHighQualityImages() { - return React.useContext(setContext) + return useContext(setContext) } // This is a little weird to have here imo but it works I guess diff --git a/src/state/preferences/image-cdn-host.tsx b/src/state/preferences/image-cdn-host.tsx --- a/src/state/preferences/image-cdn-host.tsx +++ b/src/state/preferences/image-cdn-host.tsx @@ -1,14 +1,21 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['imageCdnHost'] type SetContext = (v: persisted.Schema['imageCdnHost']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.imageCdnHost, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['imageCdnHost']) => {}, ) @@ -16,10 +23,10 @@ const DEFAULT_IMAGE_CDN_ORIGIN = normalizeOrigin( persisted.defaults.imageCdnHost ?? '', ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('imageCdnHost')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('imageCdnHost')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (imageCdnHost: persisted.Schema['imageCdnHost']) => { setState(imageCdnHost) persisted.write('imageCdnHost', imageCdnHost) @@ -27,7 +34,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('imageCdnHost', nextImageCdnHost => { setState(nextImageCdnHost) }) @@ -43,11 +50,11 @@ ) } export function useImageCdnHost() { - return React.useContext(stateContext) ?? persisted.defaults.imageCdnHost! + return useContext(stateContext) ?? persisted.defaults.imageCdnHost! } export function useSetImageCdnHost() { - return React.useContext(setContext) + return useContext(setContext) } function normalizeOrigin(input: string) { diff --git a/src/state/preferences/in-app-browser.tsx b/src/state/preferences/in-app-browser.tsx --- a/src/state/preferences/in-app-browser.tsx +++ b/src/state/preferences/in-app-browser.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -20,7 +21,7 @@ (_: persisted.Schema['useInAppBrowser']) => {}, ) setContext.displayName = 'InAppBrowserSetContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(persisted.get('useInAppBrowser')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx --- a/src/state/preferences/index.tsx +++ b/src/state/preferences/index.tsx @@ -1,3 +1,5 @@ +import type {PropsWithChildren} from 'react' + import {Provider as AltTextRequiredProvider} from './alt-text-required' import {Provider as AutoLikeOnRepostProvider} from './auto-like-on-repost' import {Provider as AutoplayProvider} from './autoplay' @@ -97,7 +99,7 @@ useSetTranslationServicePreference, useTranslationServicePreference, } from './translation-service-preference' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { return ( diff --git a/src/state/preferences/label-defs.tsx b/src/state/preferences/label-defs.tsx --- a/src/state/preferences/label-defs.tsx +++ b/src/state/preferences/label-defs.tsx @@ -3,6 +3,7 @@ import { type AppBskyLabelerDefs, type InterpretedLabelValueDefinition, } from '@atproto/api' +import type {PropsWithChildren} from 'react' import {useLabelDefinitionsQuery} from '../queries/preferences' @@ -17,7 +18,7 @@ labelers: [], }) stateContext.displayName = 'LabelDefsStateContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const state = useLabelDefinitionsQuery() return {children} } diff --git a/src/state/preferences/languages.tsx b/src/state/preferences/languages.tsx --- a/src/state/preferences/languages.tsx +++ b/src/state/preferences/languages.tsx @@ -6,6 +6,7 @@ useEffect, useMemo, useState, } from 'react' +import type {PropsWithChildren} from 'react' import {type AppLanguage} from '#/locale/languages' import * as persisted from '#/state/persisted' @@ -36,7 +37,7 @@ setAppLanguage: (_: AppLanguage) => {}, }) apiContext.displayName = 'LanguagePrefsApiContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(() => persisted.get('languagePrefs')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/large-alt-badge.tsx b/src/state/preferences/large-alt-badge.tsx --- a/src/state/preferences/large-alt-badge.tsx +++ b/src/state/preferences/large-alt-badge.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -20,7 +21,7 @@ (_: persisted.Schema['largeAltBadgeEnabled']) => {}, ) setContext.displayName = 'LargeAltBadgeSetContext' -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(persisted.get('largeAltBadgeEnabled')) const setStateWrapped = useCallback( diff --git a/src/state/preferences/moderation-opts.tsx b/src/state/preferences/moderation-opts.tsx --- a/src/state/preferences/moderation-opts.tsx +++ b/src/state/preferences/moderation-opts.tsx @@ -1,4 +1,5 @@ import {createContext, useContext, useMemo} from 'react' +import {type PropsWithChildren} from 'react' import {BskyAgent, type ModerationOpts} from '@atproto/api' import {useHiddenPosts, useLabelDefinitions} from '#/state/preferences' @@ -21,7 +22,7 @@ export function useModerationOpts() { return useContext(moderationOptsContext) } -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const override = useContext(moderationOptsOverrideContext) const {currentAccount} = useSession() const prefs = usePreferencesQuery() diff --git a/src/state/preferences/no-app-labelers.tsx b/src/state/preferences/no-app-labelers.tsx --- a/src/state/preferences/no-app-labelers.tsx +++ b/src/state/preferences/no-app-labelers.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['noAppLabelers'] type SetContext = (v: persisted.Schema['noAppLabelers']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.noAppLabelers, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['noAppLabelers']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('noAppLabelers')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('noAppLabelers')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (noAppLabelers: persisted.Schema['noAppLabelers']) => { setState(noAppLabelers) persisted.write('noAppLabelers', noAppLabelers) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('noAppLabelers', nextNoAppLabelers => { setState(nextNoAppLabelers) }) @@ -39,11 +46,11 @@ ) } export function useNoAppLabelers() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetNoAppLabelers() { - return React.useContext(setContext) + return useContext(setContext) } export function getNoAppLabelers() { diff --git a/src/state/preferences/no-discover-fallback.tsx b/src/state/preferences/no-discover-fallback.tsx --- a/src/state/preferences/no-discover-fallback.tsx +++ b/src/state/preferences/no-discover-fallback.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['noDiscoverFallback'] type SetContext = (v: persisted.Schema['noDiscoverFallback']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.noDiscoverFallback, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['noDiscoverFallback']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('noDiscoverFallback')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('noDiscoverFallback')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (noDiscoverFallback: persisted.Schema['noDiscoverFallback']) => { setState(noDiscoverFallback) persisted.write('noDiscoverFallback', noDiscoverFallback) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('noDiscoverFallback', nextNoDiscoverFallback => { setState(nextNoDiscoverFallback) }) @@ -39,9 +46,9 @@ ) } export function useNoDiscoverFallback() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetNoDiscoverFallback() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/openrouter.tsx b/src/state/preferences/openrouter.tsx --- a/src/state/preferences/openrouter.tsx +++ b/src/state/preferences/openrouter.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -9,37 +16,35 @@ type SetModelContext = (v: persisted.Schema['openRouterModel']) => void type PromptStateContext = persisted.Schema['openRouterPrompt'] type SetPromptContext = (v: persisted.Schema['openRouterPrompt']) => void -const apiKeyStateContext = React.createContext( +const apiKeyStateContext = createContext( persisted.defaults.openRouterApiKey, ) -const setApiKeyContext = React.createContext( +const setApiKeyContext = createContext( (_: persisted.Schema['openRouterApiKey']) => {}, ) -const modelStateContext = React.createContext( +const modelStateContext = createContext( persisted.defaults.openRouterModel, ) -const setModelContext = React.createContext( +const setModelContext = createContext( (_: persisted.Schema['openRouterModel']) => {}, ) -const promptStateContext = React.createContext( +const promptStateContext = createContext( persisted.defaults.openRouterPrompt, ) -const setPromptContext = React.createContext( +const setPromptContext = createContext( (_: persisted.Schema['openRouterPrompt']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [apiKeyState, setApiKeyState] = React.useState( +export function Provider({children}: PropsWithChildren<{}>) { + const [apiKeyState, setApiKeyState] = useState( persisted.get('openRouterApiKey'), ) - const [modelState, setModelState] = React.useState( - persisted.get('openRouterModel'), - ) - const [promptState, setPromptState] = React.useState( + const [modelState, setModelState] = useState(persisted.get('openRouterModel')) + const [promptState, setPromptState] = useState( persisted.get('openRouterPrompt'), ) - const setApiKeyWrapped = React.useCallback( + const setApiKeyWrapped = useCallback( (openRouterApiKey: persisted.Schema['openRouterApiKey']) => { setApiKeyState(openRouterApiKey) persisted.write('openRouterApiKey', openRouterApiKey) @@ -47,7 +52,7 @@ }, [setApiKeyState], ) - const setModelWrapped = React.useCallback( + const setModelWrapped = useCallback( (openRouterModel: persisted.Schema['openRouterModel']) => { setModelState(openRouterModel) persisted.write('openRouterModel', openRouterModel) @@ -55,7 +60,7 @@ }, [setModelState], ) - const setPromptWrapped = React.useCallback( + const setPromptWrapped = useCallback( (openRouterPrompt: persisted.Schema['openRouterPrompt']) => { setPromptState(openRouterPrompt) persisted.write('openRouterPrompt', openRouterPrompt) @@ -63,19 +68,19 @@ }, [setPromptState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('openRouterApiKey', nextApiKey => { setApiKeyState(nextApiKey) }) }, [setApiKeyWrapped]) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('openRouterModel', nextModel => { setModelState(nextModel) }) }, [setModelWrapped]) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('openRouterPrompt', nextPrompt => { setPromptState(nextPrompt) }) @@ -99,27 +104,27 @@ ) } export function useOpenRouterApiKey() { - return React.useContext(apiKeyStateContext) + return useContext(apiKeyStateContext) } export function useSetOpenRouterApiKey() { - return React.useContext(setApiKeyContext) + return useContext(setApiKeyContext) } export function useOpenRouterModel() { - return React.useContext(modelStateContext) + return useContext(modelStateContext) } export function useSetOpenRouterModel() { - return React.useContext(setModelContext) + return useContext(setModelContext) } export function useOpenRouterPrompt() { - return React.useContext(promptStateContext) + return useContext(promptStateContext) } export function useSetOpenRouterPrompt() { - return React.useContext(setPromptContext) + return useContext(setPromptContext) } export function useOpenRouterConfigured() { diff --git a/src/state/preferences/pds-label.tsx b/src/state/preferences/pds-label.tsx --- a/src/state/preferences/pds-label.tsx +++ b/src/state/preferences/pds-label.tsx @@ -1,29 +1,34 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useContext, + useEffect, + useMemo, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['pdsLabel'] type SetContext = (v: persisted.Schema['pdsLabel']) => void -const stateContext = React.createContext( - persisted.defaults.pdsLabel, -) -const setContext = React.createContext( +const stateContext = createContext(persisted.defaults.pdsLabel) +const setContext = createContext( (_: persisted.Schema['pdsLabel']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('pdsLabel')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('pdsLabel')) - const setStateWrapped = React.useCallback( - (pdsLabel: persisted.Schema['pdsLabel']) => { + const setStateWrapped = useMemo( + () => (pdsLabel: persisted.Schema['pdsLabel']) => { setState(pdsLabel) persisted.write('pdsLabel', pdsLabel) }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('pdsLabel', next => { setState(next) }) @@ -39,7 +44,7 @@ ) } export function usePdsLabel() { - return React.useContext(stateContext) ?? persisted.defaults.pdsLabel! + return useContext(stateContext) ?? persisted.defaults.pdsLabel! } export function usePdsLabelEnabled() { @@ -51,14 +56,14 @@ return usePdsLabel().hideBskyPds } export function useSetPdsLabel() { - return React.useContext(setContext) + return useContext(setContext) } export function useSetPdsLabelEnabled() { const pdsLabel = usePdsLabel() const setPdsLabel = useSetPdsLabel() - return React.useMemo( + return useMemo( () => (enabled: boolean) => setPdsLabel({...pdsLabel, enabled}), [pdsLabel, setPdsLabel], ) @@ -68,7 +73,7 @@ export function useSetPdsLabelHideBskyPds() { const pdsLabel = usePdsLabel() const setPdsLabel = useSetPdsLabel() - return React.useMemo( + return useMemo( () => (hideBskyPds: boolean) => setPdsLabel({...pdsLabel, hideBskyPds}), [pdsLabel, setPdsLabel], ) diff --git a/src/state/preferences/plc-directory.tsx b/src/state/preferences/plc-directory.tsx --- a/src/state/preferences/plc-directory.tsx +++ b/src/state/preferences/plc-directory.tsx @@ -1,14 +1,21 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['plcDirectory'] type SetContext = (v: persisted.Schema['plcDirectory']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.plcDirectory, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['plcDirectory']) => {}, ) @@ -20,10 +27,10 @@ return null } } -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('plcDirectory')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('plcDirectory')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (plcDirectory: persisted.Schema['plcDirectory']) => { setState(plcDirectory) persisted.write('plcDirectory', plcDirectory) @@ -31,7 +38,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('plcDirectory', nextPlcDirectory => { setState(nextPlcDirectory) }) @@ -49,13 +56,13 @@ export function usePlcDirectory() { return ( normalizeOrigin( - React.useContext(stateContext) ?? persisted.defaults.plcDirectory!, + useContext(stateContext) ?? persisted.defaults.plcDirectory!, ) ?? persisted.defaults.plcDirectory! ) } export function useSetPlcDirectory() { - return React.useContext(setContext) + return useContext(setContext) } export function readPlcDirectory() { diff --git a/src/state/preferences/post-name-replacement.tsx b/src/state/preferences/post-name-replacement.tsx --- a/src/state/preferences/post-name-replacement.tsx +++ b/src/state/preferences/post-name-replacement.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -15,10 +22,10 @@ | PostReplacementState | ((curr: PostReplacementState) => PostReplacementState), ) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.postReplacement as PostReplacementState, ) -const setContext = React.createContext( +const setContext = createContext( ( _: | PostReplacementState @@ -26,8 +33,8 @@ | ((curr: PostReplacementState) => PostReplacementState), ) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, _setState] = React.useState(() => { +export function Provider({children}: PropsWithChildren<{}>) { + const [state, _setState] = useState(() => { const persistedState = persisted.get('postReplacement') return { enabled: @@ -41,7 +48,7 @@ persisted.defaults.postReplacement.postsName!, } }) - const setState = React.useCallback( + const setState = useCallback( ( val: | PostReplacementState @@ -56,7 +63,7 @@ }, [], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('postReplacement', next => { setState({ postName: next.postName ?? 'skeet', @@ -74,9 +81,9 @@ ) } export function usePostReplacement() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetPostReplacement() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/repost-carousel-enabled.tsx b/src/state/preferences/repost-carousel-enabled.tsx --- a/src/state/preferences/repost-carousel-enabled.tsx +++ b/src/state/preferences/repost-carousel-enabled.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type ReactNode, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = boolean type SetContext = (v: boolean) => void -const stateContext = React.createContext( +const stateContext = createContext( Boolean(persisted.defaults.repostCarouselEnabled), ) -const setContext = React.createContext((_: boolean) => {}) +const setContext = createContext((_: boolean) => {}) -export function Provider({children}: {children: React.ReactNode}) { - const [state, setState] = React.useState( +export function Provider({children}: {children: ReactNode}) { + const [state, setState] = useState( Boolean(persisted.get('repostCarouselEnabled')), ) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (value: persisted.Schema['repostCarouselEnabled']) => { setState(Boolean(value)) persisted.write('repostCarouselEnabled', value) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('repostCarouselEnabled', nextValue => { setState(Boolean(nextValue)) }) @@ -38,5 +45,5 @@ ) } -export const useRepostCarouselEnabled = () => React.useContext(stateContext) -export const useSetRepostCarouselEnabled = () => React.useContext(setContext) +export const useRepostCarouselEnabled = () => useContext(stateContext) +export const useSetRepostCarouselEnabled = () => useContext(setContext) diff --git a/src/state/preferences/show-follows-you-badge.tsx b/src/state/preferences/show-follows-you-badge.tsx --- a/src/state/preferences/show-follows-you-badge.tsx +++ b/src/state/preferences/show-follows-you-badge.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['showFollowsYouBadge'] type SetContext = (v: persisted.Schema['showFollowsYouBadge']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.showFollowsYouBadge, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['showFollowsYouBadge']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('showFollowsYouBadge')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('showFollowsYouBadge')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (showFollowsYouBadge: persisted.Schema['showFollowsYouBadge']) => { setState(showFollowsYouBadge) persisted.write('showFollowsYouBadge', showFollowsYouBadge) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'showFollowsYouBadge', nextShowFollowsYouBadge => { @@ -42,9 +49,9 @@ ) } export function useShowFollowsYouBadge() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetShowFollowsYouBadge() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/show-link-in-handle.tsx b/src/state/preferences/show-link-in-handle.tsx --- a/src/state/preferences/show-link-in-handle.tsx +++ b/src/state/preferences/show-link-in-handle.tsx @@ -1,21 +1,28 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' type StateContext = persisted.Schema['showLinkInHandle'] type SetContext = (v: persisted.Schema['showLinkInHandle']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.showLinkInHandle, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['showLinkInHandle']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('showLinkInHandle')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('showLinkInHandle')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (showLinkInHandle: persisted.Schema['showLinkInHandle']) => { setState(showLinkInHandle) persisted.write('showLinkInHandle', showLinkInHandle) @@ -23,7 +30,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('showLinkInHandle', nextShowLinkInHandle => { setState(nextShowLinkInHandle) }) @@ -39,9 +46,9 @@ ) } export function useShowLinkInHandle() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetShowLinkInHandle() { - return React.useContext(setContext) + return useContext(setContext) } diff --git a/src/state/preferences/subtitles.tsx b/src/state/preferences/subtitles.tsx --- a/src/state/preferences/subtitles.tsx +++ b/src/state/preferences/subtitles.tsx @@ -5,6 +5,7 @@ useContext, useEffect, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -18,7 +19,7 @@ stateContext.displayName = 'SubtitlesStateContext' const setContext = createContext((_: boolean) => {}) setContext.displayName = 'SubtitlesSetContext' -export function Provider({children}: {children: React.ReactNode}) { +export function Provider({children}: PropsWithChildren<{}>) { const [state, setState] = useState(Boolean(persisted.get('subtitlesEnabled'))) const setStateWrapped = useCallback( diff --git a/src/state/preferences/translation-service-preference.tsx b/src/state/preferences/translation-service-preference.tsx --- a/src/state/preferences/translation-service-preference.tsx +++ b/src/state/preferences/translation-service-preference.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import * as persisted from '#/state/persisted' @@ -9,28 +16,28 @@ type SetInstanceContext = ( v: persisted.Schema['libreTranslateInstance'], ) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.translationServicePreference, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['translationServicePreference']) => {}, ) -const instanceStateContext = React.createContext( +const instanceStateContext = createContext( persisted.defaults.libreTranslateInstance, ) -const setInstanceContext = React.createContext( +const setInstanceContext = createContext( (_: persisted.Schema['libreTranslateInstance']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState( +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState( persisted.get('translationServicePreference'), ) - const [instanceState, setInstanceState] = React.useState( + const [instanceState, setInstanceState] = useState( persisted.get('libreTranslateInstance'), ) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( ( translationServicePreference: persisted.Schema['translationServicePreference'], ) => { @@ -43,7 +50,7 @@ }, [setState], ) - const setInstanceStateWrapped = React.useCallback( + const setInstanceStateWrapped = useCallback( (libreTranslateInstance: persisted.Schema['libreTranslateInstance']) => { setInstanceState(libreTranslateInstance) persisted.write('libreTranslateInstance', libreTranslateInstance) @@ -51,7 +58,7 @@ }, [setInstanceState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate( 'translationServicePreference', nextTranslationServicePreference => { @@ -60,7 +67,7 @@ }, ) }, [setStateWrapped]) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('libreTranslateInstance', nextInstance => { setInstanceState(nextInstance) }) @@ -80,20 +87,20 @@ ) } export function useTranslationServicePreference() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetTranslationServicePreference() { - return React.useContext(setContext) + return useContext(setContext) } export function useLibreTranslateInstance() { return ( - React.useContext(instanceStateContext) ?? + useContext(instanceStateContext) ?? persisted.defaults.libreTranslateInstance! ) } export function useSetLibreTranslateInstance() { - return React.useContext(setInstanceContext) + return useContext(setInstanceContext) } diff --git a/src/state/preferences/trending.tsx b/src/state/preferences/trending.tsx --- a/src/state/preferences/trending.tsx +++ b/src/state/preferences/trending.tsx @@ -6,6 +6,7 @@ useEffect, useMemo, useState, } from 'react' +import type {PropsWithChildren} from 'react' import * as persisted from '#/state/persisted' @@ -58,7 +59,7 @@ return [value, set] as const } -export function Provider({children}: React.PropsWithChildren<{}>) { +export function Provider({children}: PropsWithChildren<{}>) { const [trendingDisabled, setTrendingDisabled] = usePersistedBooleanValue('trendingDisabled') const [trendingVideoDisabled, setTrendingVideoDisabled] = diff --git a/src/state/preferences/use-handle-in-links.tsx b/src/state/preferences/use-handle-in-links.tsx --- a/src/state/preferences/use-handle-in-links.tsx +++ b/src/state/preferences/use-handle-in-links.tsx @@ -1,4 +1,11 @@ -import React from 'react' +import { + createContext, + type PropsWithChildren, + useCallback, + useContext, + useEffect, + useState, +} from 'react' import {reloadAppAsync} from 'expo' import * as persisted from '#/state/persisted' @@ -7,17 +14,17 @@ type StateContext = persisted.Schema['useHandleInLinks'] type SetContext = (v: persisted.Schema['useHandleInLinks']) => void -const stateContext = React.createContext( +const stateContext = createContext( persisted.defaults.useHandleInLinks, ) -const setContext = React.createContext( +const setContext = createContext( (_: persisted.Schema['useHandleInLinks']) => {}, ) -export function Provider({children}: React.PropsWithChildren<{}>) { - const [state, setState] = React.useState(persisted.get('useHandleInLinks')) +export function Provider({children}: PropsWithChildren<{}>) { + const [state, setState] = useState(persisted.get('useHandleInLinks')) - const setStateWrapped = React.useCallback( + const setStateWrapped = useCallback( (useHandleInLinks: persisted.Schema['useHandleInLinks']) => { setState(useHandleInLinks) persisted.write('useHandleInLinks', useHandleInLinks) @@ -25,7 +32,7 @@ }, [setState], ) - React.useEffect(() => { + useEffect(() => { return persisted.onUpdate('useHandleInLinks', nextUseHandleInLinks => { setState(nextUseHandleInLinks) }) @@ -41,13 +48,13 @@ ) } export function useHandleInLinks() { - return React.useContext(stateContext) + return useContext(stateContext) } export function useSetHandleInLinks() { - const set = React.useContext(setContext) + const set = useContext(setContext) - return React.useCallback( + return useCallback( (useHandleInLinks: persisted.Schema['useHandleInLinks']) => { set(useHandleInLinks) diff --git a/src/state/preferences/used-starter-packs.tsx b/src/state/preferences/used-starter-packs.tsx --- a/src/state/preferences/used-starter-packs.tsx +++ b/src/state/preferences/used-starter-packs.tsx @@ -1,4 +1,5 @@ import {createContext, useContext, useEffect, useState} from 'react' +import type {ReactNode} from 'react' import * as persisted from '#/state/persisted' @@ -10,7 +11,7 @@ stateContext.displayName = 'UsedStarterPacksStateContext' const setContext = createContext((_: boolean) => {}) setContext.displayName = 'UsedStarterPacksSetContext' -export function Provider({children}: {children: React.ReactNode}) { +export function Provider({children}: {children: ReactNode}) { const [state, setState] = useState(() => persisted.get('hasCheckedForStarterPack'), ) diff --git a/src/state/session/index.tsx b/src/state/session/index.tsx --- a/src/state/session/index.tsx +++ b/src/state/session/index.tsx @@ -8,7 +8,7 @@ useRef, useState, useSyncExternalStore, } from 'react' -import {type Agent, type AtpAgent, type AtpSessionEvent} from '@atproto/api' +import {type AtpAgent, type AtpSessionEvent} from '@atproto/api' import * as persisted from '#/state/persisted' import {useCloseAllActiveElements} from '#/state/util' diff --git a/src/state/session/oauth-native-client.ts b/src/state/session/oauth-native-client.ts --- a/src/state/session/oauth-native-client.ts +++ b/src/state/session/oauth-native-client.ts @@ -1,4 +1,5 @@ import {ExpoOAuthClient} from '@atproto/oauth-client-expo' + import {createIdentityResolver} from './identity-resolver' const OAUTH_BASE_URL: string = diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -785,7 +785,7 @@ backHandler.remove() } }, [onPressCancel, closeAllDialogs, closeAllModals]) - const missingAltError = useMemo(() => { + const missingAltError = (() => { if (!requireAltTextEnabled) { return } @@ -807,7 +807,7 @@ return l`One or more videos is missing alt text.` } } } - }, [thread, requireAltTextEnabled, l]) + })() const canPost = !missingAltError && diff --git a/src/view/com/pager/Pager.web.tsx b/src/view/com/pager/Pager.web.tsx --- a/src/view/com/pager/Pager.web.tsx +++ b/src/view/com/pager/Pager.web.tsx @@ -1,11 +1,4 @@ -import { - Children, - type JSX, - useCallback, - useImperativeHandle, - useRef, - useState, -} from 'react' +import {Children, type JSX, useImperativeHandle, useRef, useState} from 'react' import {View} from 'react-native' import {flushSync} from 'react-dom' @@ -47,38 +40,35 @@ onTabBarSelect(index) }, })) - const onTabBarSelect = useCallback( - (index: number) => { - const scrollY = window.scrollY - // We want to determine if the tabbar is already "sticking" at the top (in which - // case we should preserve and restore scroll), or if it is somewhere below in the - // viewport (in which case a scroll jump would be jarring). We determine this by - // measuring where the "anchor" element is (which we place just above the tabbar). - let anchorTop = anchorRef.current - ? (anchorRef.current as Element).getBoundingClientRect().top - : -scrollY // If there's no anchor, treat the top of the page as one. - const isSticking = anchorTop <= 5 // This would be 0 if browser scrollTo() was reliable. + const onTabBarSelect = (index: number) => { + const scrollY = window.scrollY + // We want to determine if the tabbar is already "sticking" at the top (in which + // case we should preserve and restore scroll), or if it is somewhere below in the + // viewport (in which case a scroll jump would be jarring). We determine this by + // measuring where the "anchor" element is (which we place just above the tabbar). + let anchorTop = anchorRef.current + ? (anchorRef.current as Element).getBoundingClientRect().top + : -scrollY // If there's no anchor, treat the top of the page as one. + const isSticking = anchorTop <= 5 // This would be 0 if browser scrollTo() was reliable. - if (isSticking) { - scrollYs.current[selectedPage] = window.scrollY + if (isSticking) { + scrollYs.current[selectedPage] = window.scrollY + } else { + scrollYs.current[selectedPage] = null + } + flushSync(() => { + setSelectedPage(index) + onPageSelected?.(index) + }) + if (isSticking) { + const restoredScrollY = scrollYs.current[index] + if (restoredScrollY != null) { + window.scrollTo(0, restoredScrollY) } else { - scrollYs.current[selectedPage] = null + window.scrollTo(0, scrollY + anchorTop) } - flushSync(() => { - setSelectedPage(index) - onPageSelected?.(index) - }) - if (isSticking) { - const restoredScrollY = scrollYs.current[index] - if (restoredScrollY != null) { - window.scrollTo(0, restoredScrollY) - } else { - window.scrollTo(0, scrollY + anchorTop) - } - } - }, - [selectedPage, setSelectedPage, onPageSelected], - ) + } + } return ( diff --git a/src/view/com/posts/PostFeedItemCarousel.tsx b/src/view/com/posts/PostFeedItemCarousel.tsx --- a/src/view/com/posts/PostFeedItemCarousel.tsx +++ b/src/view/com/posts/PostFeedItemCarousel.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import {useCallback, useRef, useState} from 'react' import {Dimensions, ScrollView, View} from 'react-native' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' @@ -22,12 +22,12 @@ export function PostFeedItemCarousel({items}: {items: FeedPostSlice[]}) { const t = useTheme() const {_} = useLingui() - const ref = React.useRef(null) - const [scrollX, setScrollX] = React.useState(0) + const ref = useRef(null) + const [scrollX, setScrollX] = useState(0) const enableSquareButtons = useEnableSquareButtons() - const scrollTo = React.useCallback( + const scrollTo = useCallback( (item: number) => { setScrollX(item) @@ -40,12 +40,12 @@ }, [ref], ) - const scrollLeft = React.useCallback(() => { + const scrollLeft = useCallback(() => { const newPos = scrollX > 0 ? scrollX - 1 : items.length - 1 scrollTo(newPos) }, [scrollTo, scrollX, items.length]) - const scrollRight = React.useCallback(() => { + const scrollRight = useCallback(() => { const newPos = scrollX < items.length - 1 ? scrollX + 1 : 0 scrollTo(newPos) }, [scrollTo, scrollX, items.length]) -- tangled.sh