1- import React , {
2- createContext ,
3- useState ,
4- useMemo ,
5- useCallback ,
6- useContext }
7- from 'react' ;
8- import type { Context } from 'react' ;
1+ /* @flow strict-local */
2+ import React , { createContext , useState , useMemo , useCallback , useContext } from 'react' ;
3+ import type { Context , Node } from 'react' ;
94import { useSelector } from '../react-redux' ;
105import TopicEditModal from '../topics/TopicEditModal' ;
116import type { Stream , GetText } from '../types' ;
@@ -16,21 +11,21 @@ type Props = $ReadOnly<{|
1611 children : Node ,
1712| } > ;
1813
19- type TopicModalContext = $ReadOnly < { |
14+ type TopicModalContext = { |
2015 startEditTopic : (
2116 streamId : number ,
2217 topic : string ,
2318 streamsById : Map < number , Stream> ,
2419 _ : GetText ,
25- ) => void ,
20+ ) => Promise < void > ,
2621 closeEditTopicModal : ( ) => void ,
27- | } > ;
22+ | } ;
2823
29- const TopicModal : Context < TopicModalContext > = createContext ( ) ;
24+ const TopicModal : Context < TopicModalContext > = createContext(undefined );
3025
3126export const useTopicModalHandler = () => useContext ( TopicModal ) ;
3227
33- export default function TopicModalProvider ( props : Props ) {
28+ export default function TopicModalProvider ( props : Props ) : Node {
3429 const { children } = props ;
3530 const auth = useSelector ( getAuth ) ;
3631 const zulipFeatureLevel = useSelector ( getZulipFeatureLevel ) ;
@@ -40,16 +35,12 @@ export default function TopicModalProvider(props: Props) {
4035 fetchArgs : {
4136 auth : null ,
4237 messageId : null ,
43- zulipFeatureLevel : null
44- }
38+ zulipFeatureLevel : null ,
39+ } ,
4540 } ) ;
4641
47- const startEditTopic = useCallback ( async (
48- streamId ,
49- topic ,
50- streamsById ,
51- _ ,
52- ) => {
42+ const startEditTopic = useCallback (
43+ async ( streamId , topic , streamsById , _ ) => {
5344 const messageId = await fetchSomeMessageIdForConversation (
5445 auth ,
5546 streamId ,
@@ -67,30 +58,32 @@ export default function TopicModalProvider(props: Props) {
6758 setTopicModalState ( {
6859 visible : true ,
6960 topic,
70- fetchArgs : { auth, messageId, zulipFeatureLevel }
61+ fetchArgs : { auth, messageId, zulipFeatureLevel } ,
7162 } ) ;
72- } , [ auth , zulipFeatureLevel ] ) ;
63+ } ,
64+ [ auth , zulipFeatureLevel ] ,
65+ ) ;
7366
7467 const closeEditTopicModal = useCallback ( ( ) => {
7568 setTopicModalState ( {
7669 visible : false ,
7770 topic : null ,
78- fetchArgs : { auth : null , messageId : null , zulipFeatureLevel : null }
71+ fetchArgs : { auth : null , messageId : null , zulipFeatureLevel : null } ,
7972 } ) ;
8073 } , [ ] ) ;
8174
82- const topicModalHandler = useMemo ( ( ) => ( {
83- startEditTopic,
84- closeEditTopicModal,
85- } ) , [ startEditTopic , closeEditTopicModal ] ) ;
75+ const topicModalHandler = useMemo (
76+ ( ) => ( {
77+ startEditTopic,
78+ closeEditTopicModal,
79+ } ) ,
80+ [ startEditTopic , closeEditTopicModal ] ,
81+ ) ;
8682
8783 return (
8884 < TopicModal . Provider value = { topicModalHandler } >
8985 { topicModalState . visible && (
90- < TopicEditModal
91- topicModalState = { topicModalState }
92- topicModalHandler = { topicModalHandler }
93- />
86+ < TopicEditModal topicModalState = { topicModalState } topicModalHandler = { topicModalHandler } />
9487 ) }
9588 { children }
9689 </ TopicModal . Provider >
0 commit comments