@@ -24,26 +24,21 @@ import { useMessageComposer } from '../../contexts/messageInputContext/hooks/use
2424import { useStateStore } from '../../hooks/useStateStore' ;
2525
2626const pollComposerStateSelector = ( state : PollComposerState ) => ( {
27- allow_answers : state . data . allow_answers ,
28- allow_user_suggested_options : state . data . allow_user_suggested_options ,
29- enforce_unique_vote : state . data . enforce_unique_vote ,
30- max_votes_allowed : state . data . max_votes_allowed ,
31- name : state . data . name ,
3227 options : state . data . options ,
33- voting_visibility : state . data . voting_visibility ,
3428} ) ;
3529
3630export const POLL_OPTION_HEIGHT = 71 ;
3731
3832export const CreatePollContent = ( ) => {
33+ const [ isAnonymousPoll , setIsAnonymousPoll ] = React . useState < boolean > ( false ) ;
34+ const [ allowUserSuggestedOptions , setAllowUserSuggestedOptions ] = React . useState < boolean > ( false ) ;
35+ const [ allowAnswers , setAllowAnswers ] = React . useState < boolean > ( false ) ;
36+
3937 const { t } = useTranslationContext ( ) ;
4038
4139 const messageComposer = useMessageComposer ( ) ;
4240 const { pollComposer } = messageComposer ;
43- const { allow_answers, allow_user_suggested_options, options, voting_visibility } = useStateStore (
44- pollComposer . state ,
45- pollComposerStateSelector ,
46- ) ;
41+ const { options } = useStateStore ( pollComposer . state , pollComposerStateSelector ) ;
4742
4843 const { createPollOptionHeight, closePollCreationDialog, createAndSendPoll } =
4944 useCreatePollContentContext ( ) ;
@@ -89,6 +84,32 @@ export const CreatePollContent = () => {
8984 await createAndSendPoll ( ) ;
9085 } , [ createAndSendPoll ] ) ;
9186
87+ const onAnonymousPollChangeHandler = useCallback (
88+ async ( value : boolean ) => {
89+ setIsAnonymousPoll ( value ) ;
90+ await pollComposer . updateFields ( {
91+ voting_visibility : value ? VotingVisibility . anonymous : VotingVisibility . public ,
92+ } ) ;
93+ } ,
94+ [ pollComposer ] ,
95+ ) ;
96+
97+ const onAllowUserSuggestedOptionsChangeHandler = useCallback (
98+ async ( value : boolean ) => {
99+ setAllowUserSuggestedOptions ( value ) ;
100+ await pollComposer . updateFields ( { allow_user_suggested_options : value } ) ;
101+ } ,
102+ [ pollComposer ] ,
103+ ) ;
104+
105+ const onAllowAnswersChangeHandler = useCallback (
106+ async ( value : boolean ) => {
107+ setAllowAnswers ( value ) ;
108+ await pollComposer . updateFields ( { allow_answers : value } ) ;
109+ } ,
110+ [ pollComposer ] ,
111+ ) ;
112+
92113 return (
93114 < >
94115 < CreatePollHeader
@@ -108,14 +129,7 @@ export const CreatePollContent = () => {
108129 < Text style = { [ styles . text , { color : black } , anonymousPoll . title ] } >
109130 { t < string > ( 'Anonymous poll' ) }
110131 </ Text >
111- < Switch
112- onValueChange = { ( value ) =>
113- pollComposer . updateFields ( {
114- voting_visibility : value ? VotingVisibility . anonymous : VotingVisibility . public ,
115- } )
116- }
117- value = { voting_visibility === VotingVisibility . anonymous }
118- />
132+ < Switch onValueChange = { onAnonymousPollChangeHandler } value = { isAnonymousPoll } />
119133 </ View >
120134 < View
121135 style = { [ styles . textInputWrapper , { backgroundColor : bg_user } , suggestOption . wrapper ] }
@@ -124,20 +138,15 @@ export const CreatePollContent = () => {
124138 { t < string > ( 'Suggest an option' ) }
125139 </ Text >
126140 < Switch
127- onValueChange = { ( value ) =>
128- pollComposer . updateFields ( { allow_user_suggested_options : value } )
129- }
130- value = { allow_user_suggested_options }
141+ onValueChange = { onAllowUserSuggestedOptionsChangeHandler }
142+ value = { allowUserSuggestedOptions }
131143 />
132144 </ View >
133145 < View style = { [ styles . textInputWrapper , { backgroundColor : bg_user } , addComment . wrapper ] } >
134146 < Text style = { [ styles . text , { color : black } , addComment . title ] } >
135147 { t < string > ( 'Add a comment' ) }
136148 </ Text >
137- < Switch
138- onValueChange = { ( value ) => pollComposer . updateFields ( { allow_answers : value } ) }
139- value = { allow_answers }
140- />
149+ < Switch onValueChange = { onAllowAnswersChangeHandler } value = { allowAnswers } />
141150 </ View >
142151 </ ScrollView >
143152 </ >
0 commit comments