diff options
author | dan <dan.abramov@gmail.com> | 2023-11-17 06:18:37 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-16 22:18:37 -0800 |
commit | a8aed2c38e1b45d3f816b79fdd42bedfc7918319 (patch) | |
tree | de90e5ac77b0e2bb7c2f8d39f22e239a94ceeb7b /src/state/shell/composer.tsx | |
parent | a10adf89084a179892530ce6af4dffa12ae02795 (diff) | |
download | voidsky-a8aed2c38e1b45d3f816b79fdd42bedfc7918319.tar.zst |
Use non-reactive callbacks for some methods (#1948)
* Use non-reactive callbacks for some methods * Remove unnecessary state * Use non-reactive callbacks for modals
Diffstat (limited to 'src/state/shell/composer.tsx')
-rw-r--r-- | src/state/shell/composer.tsx | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/state/shell/composer.tsx b/src/state/shell/composer.tsx index 70d77a7e0..bdf5e4a7a 100644 --- a/src/state/shell/composer.tsx +++ b/src/state/shell/composer.tsx @@ -1,5 +1,6 @@ import React from 'react' import {AppBskyEmbedRecord} from '@atproto/api' +import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' export interface ComposerOptsPostRef { uri: string @@ -47,18 +48,23 @@ const controlsContext = React.createContext<ControlsContext>({ export function Provider({children}: React.PropsWithChildren<{}>) { const [state, setState] = React.useState<StateContext>() + + const openComposer = useNonReactiveCallback((opts: ComposerOpts) => { + setState(opts) + }) + + const closeComposer = useNonReactiveCallback(() => { + let wasOpen = !!state + setState(undefined) + return wasOpen + }) + const api = React.useMemo( () => ({ - openComposer(opts: ComposerOpts) { - setState(opts) - }, - closeComposer() { - let wasOpen = !!state - setState(undefined) - return wasOpen - }, + openComposer, + closeComposer, }), - [setState, state], + [openComposer, closeComposer], ) return ( |