Use non-reactive callbacks for some methods (#1948)

* Use non-reactive callbacks for some methods

* Remove unnecessary state

* Use non-reactive callbacks for modals
This commit is contained in:
dan 2023-11-17 06:18:37 +00:00 committed by GitHub
parent a10adf8908
commit a8aed2c38e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 39 deletions

View file

@ -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 (