Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/delete-site.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { MenuItem } from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { useI18n } from '@wordpress/react-i18n';
import { useSyncSites } from 'src/hooks/sync-sites/sync-sites-context';
import { useDeleteSite } from 'src/hooks/use-delete-site';
import { useSiteDetails } from 'src/hooks/use-site-details';

Expand All @@ -12,8 +13,11 @@ const DeleteSite = ( { onClose }: DeleteSiteProps ) => {
const { __ } = useI18n();
const { selectedSite, isDeleting } = useSiteDetails();
const { handleDeleteSite } = useDeleteSite();
const { isSiteIdPulling, isSiteIdPushing } = useSyncSites();
const isThisSiteSyncing =
isSiteIdPulling( selectedSite?.id ?? '' ) || isSiteIdPushing( selectedSite?.id ?? '' );

const isSiteDeletionDisabled = ! selectedSite || isDeleting;
const isSiteDeletionDisabled = ! selectedSite || isDeleting || isThisSiteSyncing;

return (
<MenuItem
Expand Down
9 changes: 6 additions & 3 deletions src/components/site-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,20 +118,22 @@ function SiteItem( { site }: { site: SiteDetails } ) {
const { selectedSite, setSelectedSiteId, loadingServer } = useSiteDetails();
const isSelected = site === selectedSite;
const { isSiteImporting, isSiteExporting } = useImportExport();
const { isSiteIdPulling } = useSyncSites();
const { isSiteIdPulling, isSiteIdPushing } = useSyncSites();
const { data: editor } = useGetUserEditorQuery();
const { data: terminal } = useGetUserTerminalQuery();
const isImporting = isSiteImporting( site.id );
const isExporting = isSiteExporting( site.id );
const isPulling = isSiteIdPulling( site.id );
const showSpinner = site.isAddingSite || isImporting || isPulling || isExporting;
const isPushing = isSiteIdPushing( site.id );
const isSyncing = isPulling || isPushing;
const showSpinner = site.isAddingSite || isImporting || isPulling || isPushing || isExporting;

let tooltipText;
if ( site.isAddingSite ) {
tooltipText = __( 'Adding' );
} else if ( isImporting ) {
tooltipText = __( 'Importing' );
} else if ( isPulling ) {
} else if ( isSyncing ) {
tooltipText = __( 'Syncing' );
} else {
tooltipText = __( 'Loading' );
Expand All @@ -152,6 +154,7 @@ function SiteItem( { site }: { site: SiteDetails } ) {
isRunning: site.running,
isLoading,
isAddingSite,
isSyncing,
finderLabel,
editorLabel,
terminalLabel,
Expand Down
15 changes: 12 additions & 3 deletions src/ipc-handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1035,13 +1035,22 @@ export function showSiteContextMenu(
isRunning: boolean;
isLoading: boolean;
isAddingSite: boolean;
isSyncing: boolean;
finderLabel: string;
editorLabel: string | null;
terminalLabel: string;
}
) {
const { siteId, isRunning, isLoading, isAddingSite, finderLabel, editorLabel, terminalLabel } =
context;
const {
siteId,
isRunning,
isLoading,
isAddingSite,
isSyncing,
finderLabel,
editorLabel,
terminalLabel,
} = context;
const menu = new Menu();

if ( isRunning ) {
Expand Down Expand Up @@ -1205,7 +1214,7 @@ export function showSiteContextMenu(
menu.append(
new MenuItem( {
label: __( 'Delete site…' ),
enabled: ! isLoading && ! isAddingSite,
enabled: ! isLoading && ! isAddingSite && ! isSyncing,
click: () => {
sendIpcEventToRendererWithWindow(
BrowserWindow.fromWebContents( event.sender ),
Expand Down
11 changes: 11 additions & 0 deletions src/tests/show-site-context-menu.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: true,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

const stopItem = menuItems.find( ( item ) => item.label === 'Stop' );
Expand All @@ -62,6 +63,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: true,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

const stopItem = menuItems.find( ( item ) => item.label === 'Stop' );
Expand All @@ -85,6 +87,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: true,
isLoading: false,
isAddingSite: true,
isSyncing: false,
} );

const stopItem = menuItems.find( ( item ) => item.label === 'Stop' );
Expand All @@ -110,6 +113,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: false,
isAddingSite: true,
isSyncing: false,
} );

const startItem = menuItems.find( ( item ) => item.label === 'Start' );
Expand All @@ -124,6 +128,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

const startItem = menuItems.find( ( item ) => item.label === 'Start' );
Expand All @@ -137,6 +142,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: true,
isAddingSite: false,
isSyncing: false,
} );

const startItem = menuItems.find( ( item ) => item.label === 'Start' );
Expand All @@ -150,6 +156,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

const startItem = menuItems.find( ( item ) => item.label === 'Start' );
Expand All @@ -173,6 +180,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: true,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );
} );

Expand Down Expand Up @@ -283,6 +291,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

const editorItem = menuItems.find(
Expand All @@ -299,6 +308,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

const separators = menuItems.filter( ( item ) => item.type === 'separator' );
Expand All @@ -311,6 +321,7 @@ describe( 'showSiteContextMenu', () => {
isRunning: false,
isLoading: false,
isAddingSite: false,
isSyncing: false,
} );

expect( mockMenu.popup ).toHaveBeenCalledWith( { window: mockWindow } );
Expand Down
Loading