@@ -127,18 +127,13 @@ export function ContentTabSync( { selectedSite }: { selectedSite: SiteDetails }
127127 const { __ } = useI18n ( ) ;
128128 const dispatch = useAppDispatch ( ) ;
129129 const isModalOpen = useRootSelector ( connectedSitesSelectors . selectIsModalOpen ) ;
130+ const reduxModalMode = useRootSelector ( connectedSitesSelectors . selectModalMode ) ;
130131 const { connectedSites } = useConnectedSitesData ( ) ;
131132 const { syncSites, isFetching, refetchSites } = useSyncSitesData ( ) ;
132133 const { connectSite, disconnectSite } = useConnectedSitesOperations ( ) ;
133134 const { pushSite, pullSite } = useSyncSites ( ) ;
134135
135- const [ modalState , setModalState ] = useState < {
136- mode : SyncModalMode | null ;
137- selectedRemoteSite : SyncSite | null ;
138- } > ( {
139- mode : null ,
140- selectedRemoteSite : null ,
141- } ) ;
136+ const [ selectedRemoteSite , setSelectedRemoteSite ] = useState < SyncSite | null > ( null ) ;
142137
143138 const { isAuthenticated } = useAuth ( ) ;
144139
@@ -164,13 +159,11 @@ export function ContentTabSync( { selectedSite }: { selectedSite: SiteDetails }
164159 } ;
165160
166161 const handleLaunchSite = ( ) => {
167- setModalState ( ( prev ) => ( { ...prev , mode : 'push' } ) ) ;
168- dispatch ( connectedSitesActions . openModal ( ) ) ;
162+ dispatch ( connectedSitesActions . openModal ( 'push' ) ) ;
169163 } ;
170164
171165 const handleImportSite = ( ) => {
172- setModalState ( ( prev ) => ( { ...prev , mode : 'pull' } ) ) ;
173- dispatch ( connectedSitesActions . openModal ( ) ) ;
166+ dispatch ( connectedSitesActions . openModal ( 'pull' ) ) ;
174167 } ;
175168
176169 const handleSiteSelection = async ( siteId : number , mode : SyncModalMode | null ) => {
@@ -193,19 +186,13 @@ export function ContentTabSync( { selectedSite }: { selectedSite: SiteDetails }
193186 await handleConnect ( selectedSiteFromList ) ;
194187
195188 if ( mode === 'push' || mode === 'pull' ) {
196- setModalState ( ( prev ) => ( {
197- ...prev ,
198- mode : mode ,
199- selectedRemoteSite : selectedSiteFromList ,
200- } ) ) ;
189+ dispatch ( connectedSitesActions . setModalMode ( mode ) ) ;
190+ setSelectedRemoteSite ( selectedSiteFromList ) ;
201191 } else {
202- setModalState ( ( prev ) => ( { ... prev , mode : null } ) ) ;
192+ dispatch ( connectedSitesActions . setModalMode ( null ) ) ;
203193 }
204194 } ;
205195
206- // Using a local variable to avoid non-null assertion operator in pushSite and pullSite
207- const selectedRemoteSite = modalState . selectedRemoteSite ;
208-
209196 return (
210197 < div className = "flex flex-col h-full overflow-y-auto" >
211198 { connectedSites . length > 0 ? (
@@ -218,7 +205,7 @@ export function ContentTabSync( { selectedSite }: { selectedSite: SiteDetails }
218205 < div className = "sticky bottom-0 bg-white/[0.8] backdrop-blur-sm w-full px-8 py-6 mt-auto" >
219206 < ConnectButton
220207 variant = "primary"
221- connectSite = { ( ) => dispatch ( connectedSitesActions . openModal ( ) ) }
208+ connectSite = { ( ) => dispatch ( connectedSitesActions . openModal ( 'connect' ) ) }
222209 disableConnectButtonStyle = { true }
223210 >
224211 { __ ( 'Connect another site' ) }
@@ -250,47 +237,37 @@ export function ContentTabSync( { selectedSite }: { selectedSite: SiteDetails }
250237
251238 { isModalOpen && (
252239 < SyncSitesModalSelector
253- mode = { modalState . mode || 'connect' }
240+ mode = { reduxModalMode || 'connect' }
254241 isLoading = { isFetching }
255242 onRequestClose = { ( ) => {
256243 dispatch ( connectedSitesActions . closeModal ( ) ) ;
257- setModalState ( ( prev ) => ( { ...prev , mode : null } ) ) ;
258244 } }
259245 syncSites = { syncSites }
260246 onInitialRender = { refetchSites }
261247 onConnect = { async ( siteId : number ) => {
262- await handleSiteSelection ( siteId , modalState . mode ) ;
248+ await handleSiteSelection ( siteId , reduxModalMode ) ;
263249 } }
264250 selectedSite = { selectedSite }
265251 />
266252 ) }
267253
268- { modalState . mode && modalState . mode !== 'connect' && selectedRemoteSite && (
254+ { reduxModalMode && reduxModalMode !== 'connect' && selectedRemoteSite && (
269255 < SyncDialog
270- type = { modalState . mode }
256+ type = { reduxModalMode }
271257 localSite = { selectedSite }
272258 remoteSite = { selectedRemoteSite }
273259 onPush = { ( tree ) => {
274260 const pushOptions = convertTreeToPushOptions ( tree ) ;
275261 void pushSite ( selectedRemoteSite , selectedSite , pushOptions ) ;
276- setModalState ( {
277- mode : null ,
278- selectedRemoteSite : null ,
279- } ) ;
262+ setSelectedRemoteSite ( null ) ;
280263 } }
281264 onPull = { ( tree ) => {
282265 const pullOptions = convertTreeToPullOptions ( tree ) ;
283266 void pullSite ( selectedRemoteSite , selectedSite , pullOptions ) ;
284- setModalState ( {
285- mode : null ,
286- selectedRemoteSite : null ,
287- } ) ;
267+ setSelectedRemoteSite ( null ) ;
288268 } }
289269 onRequestClose = { ( ) => {
290- setModalState ( {
291- mode : null ,
292- selectedRemoteSite : null ,
293- } ) ;
270+ setSelectedRemoteSite ( null ) ;
294271 } }
295272 />
296273 ) }
0 commit comments