Skip to content

Commit 445ab73

Browse files
committed
Publish on Overview tab for non-connected sites
1 parent c5bca9b commit 445ab73

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/components/content-tab-overview.tsx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import * as Sentry from '@sentry/electron/renderer';
2+
import { Icon } from '@wordpress/components';
23
import { __ } from '@wordpress/i18n';
34
import {
45
archive,
56
code,
67
desktop,
78
pencil,
9+
info,
810
layout,
911
navigation,
1012
page,
@@ -16,15 +18,19 @@ import {
1618
import { useI18n } from '@wordpress/react-i18n';
1719
import { useState } from 'react';
1820
import { ArrowIcon } from 'src/components/arrow-icon';
21+
import Button from 'src/components/button';
1922
import { ButtonsSection, ButtonsSectionProps } from 'src/components/buttons-section';
23+
import { useContentTabs } from 'src/hooks/use-content-tabs';
2024
import { useSiteDetails } from 'src/hooks/use-site-details';
2125
import { useThemeDetails } from 'src/hooks/use-theme-details';
2226
import { isWindows } from 'src/lib/app-globals';
2327
import { cx } from 'src/lib/cx';
2428
import { getIpcApi } from 'src/lib/get-ipc-api';
2529
import { supportedEditorConfig } from 'src/modules/user-settings/lib/editor';
2630
import { getTerminalName } from 'src/modules/user-settings/lib/terminal';
31+
import { useAppDispatch } from 'src/stores';
2732
import { useGetUserEditorQuery, useGetUserTerminalQuery } from 'src/stores/installed-apps-api';
33+
import { connectedSitesActions, useConnectedSitesData } from 'src/stores/sync';
2834

2935
interface ContentTabOverviewProps {
3036
selectedSite: SiteDetails;
@@ -181,6 +187,36 @@ function ShortcutsSection( { selectedSite }: Pick< ContentTabOverviewProps, 'sel
181187
return <ButtonsSection buttonsArray={ buttonsArray } title={ __( 'Open in…' ) } />;
182188
}
183189

190+
function PublishBanner( {
191+
selectedSite: _selectedSite,
192+
}: Pick< ContentTabOverviewProps, 'selectedSite' > ) {
193+
const { __ } = useI18n();
194+
const dispatch = useAppDispatch();
195+
const { setSelectedTab } = useContentTabs();
196+
const { connectedSites } = useConnectedSitesData();
197+
198+
const handlePublishClick = () => {
199+
// Navigate to Sync tab and open modal with 'push' mode
200+
setSelectedTab( 'sync' );
201+
dispatch( connectedSitesActions.openModal( 'push' ) );
202+
};
203+
204+
// Only show banner if site has no connected sites
205+
if ( connectedSites.length > 0 ) {
206+
return null;
207+
}
208+
209+
return (
210+
<div className="w-full flex items-center gap-3 px-4 py-3 rounded-sm bg-a8c-gray-0 border border-a8c-gray-5">
211+
<Icon icon={ info } size={ 20 } className="text-a8c-blue-50 flex-shrink-0" />
212+
<p className="flex-1 text-black">{ __( 'Your site is ready for publishing' ) }</p>
213+
<Button variant="primary" onClick={ handlePublishClick } disabled={ false }>
214+
{ __( 'Publish site' ) }
215+
</Button>
216+
</div>
217+
);
218+
}
219+
184220
export function ContentTabOverview( { selectedSite }: ContentTabOverviewProps ) {
185221
const [ isThumbnailError, setIsThumbnailError ] = useState( false );
186222
const { __ } = useI18n();
@@ -260,6 +296,7 @@ export function ContentTabOverview( { selectedSite }: ContentTabOverviewProps )
260296
</div>
261297
</div>
262298
<div className="flex flex-1 flex-col justify-start items-start gap-8">
299+
<PublishBanner selectedSite={ selectedSite } />
263300
<CustomizeSection
264301
selectedSite={ selectedSite }
265302
themeDetails={ themeDetails }

src/components/tests/content-tab-overview.test.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { render, screen } from '@testing-library/react';
33
import { Provider } from 'react-redux';
44
import { ContentTabOverview } from 'src/components/content-tab-overview';
5+
import { ContentTabsProvider } from 'src/hooks/use-content-tabs';
56
import { useSiteDetails } from 'src/hooks/use-site-details';
67
import { useThemeDetails } from 'src/hooks/use-theme-details';
78
import { store } from 'src/stores';
@@ -77,7 +78,9 @@ describe( 'ContentTabOverview', () => {
7778
} );
7879
render(
7980
<Provider store={ store }>
80-
<ContentTabOverview selectedSite={ selectedSite } />
81+
<ContentTabsProvider>
82+
<ContentTabOverview selectedSite={ selectedSite } />
83+
</ContentTabsProvider>
8184
</Provider>
8285
);
8386
};

0 commit comments

Comments
 (0)