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:
parent
a10adf8908
commit
a8aed2c38e
3 changed files with 34 additions and 39 deletions
|
@ -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 (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue