From a4668e63bf94e402f6ec9f71e566d9736353d2e5 Mon Sep 17 00:00:00 2001 From: Tony Date: Wed, 5 May 2021 08:14:19 -0700 Subject: [PATCH 1/2] Added cleanup logic to app on quit --- Composer/packages/client/src/App.tsx | 5 ++++- .../client/src/recoilModel/dispatchers/application.ts | 7 +++++++ Composer/packages/client/src/utils/electronUtil.ts | 5 ++--- Composer/packages/electron-server/src/main.ts | 1 + 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Composer/packages/client/src/App.tsx b/Composer/packages/client/src/App.tsx index 10dca85a7e..02ca34c047 100644 --- a/Composer/packages/client/src/App.tsx +++ b/Composer/packages/client/src/App.tsx @@ -22,7 +22,9 @@ const Logger = () => { export const App: React.FC = () => { const { appLocale } = useRecoilValue(userSettingsState); - const { fetchExtensions, fetchFeatureFlags, checkNodeVersion } = useRecoilValue(dispatcherState); + const { fetchExtensions, fetchFeatureFlags, checkNodeVersion, performAppCleanupOnQuit } = useRecoilValue( + dispatcherState + ); useEffect(() => { loadLocale(appLocale); @@ -32,6 +34,7 @@ export const App: React.FC = () => { checkNodeVersion(); fetchExtensions(); fetchFeatureFlags(); + performAppCleanupOnQuit(); }, []); return ( diff --git a/Composer/packages/client/src/recoilModel/dispatchers/application.ts b/Composer/packages/client/src/recoilModel/dispatchers/application.ts index 259d31253e..7decb8f7b8 100644 --- a/Composer/packages/client/src/recoilModel/dispatchers/application.ts +++ b/Composer/packages/client/src/recoilModel/dispatchers/application.ts @@ -26,6 +26,7 @@ import { DebugDrawerKeys } from '../../pages/design/DebugPanel/TabExtensions/typ import httpClient from '../../utils/httpUtil'; import { setError } from './shared'; +import { flushExistingTasks } from './utils/project'; export const applicationDispatcher = () => { const setAppUpdateStatus = useRecoilCallback( @@ -147,6 +148,11 @@ export const applicationDispatcher = () => { } }); + const performAppCleanupOnQuit = useRecoilCallback((callbackHelpers: CallbackInterface) => async () => { + // shutdown any running bots to avoid orphaned processes + await flushExistingTasks(callbackHelpers); + }); + return { checkNodeVersion, setAppUpdateStatus, @@ -156,6 +162,7 @@ export const applicationDispatcher = () => { setMessage: debounce(setMessage, 500), onboardingSetComplete, onboardingAddCoachMarkRef, + performAppCleanupOnQuit, setCreationFlowStatus, setApplicationLevelError, setCreationFlowType, diff --git a/Composer/packages/client/src/utils/electronUtil.ts b/Composer/packages/client/src/utils/electronUtil.ts index 1484254931..8202004574 100644 --- a/Composer/packages/client/src/utils/electronUtil.ts +++ b/Composer/packages/client/src/utils/electronUtil.ts @@ -2,10 +2,8 @@ // Licensed under the MIT License. import { PublishTarget } from '@bfc/shared'; -// import { armScopes } from '../constants'; - import httpClient from './httpUtil'; -// import { AuthClient } from './authClient'; + /** * Returns true if the client is embedded in the Composer Electron environment. */ @@ -23,6 +21,7 @@ type ABSProfile = { armEndpoint?: string; }; export type Profile = ABSProfile; // can include PVAProfile or other type of profile by | + /** * * @param profile payload from bf's create protocol diff --git a/Composer/packages/electron-server/src/main.ts b/Composer/packages/electron-server/src/main.ts index 0699300fb7..dc39551c3d 100644 --- a/Composer/packages/electron-server/src/main.ts +++ b/Composer/packages/electron-server/src/main.ts @@ -311,6 +311,7 @@ async function run() { app.on('before-quit', () => { const mainWindow = ElectronWindow.getInstance().browserWindow; mainWindow?.webContents.send('session-update', 'session-ended'); + mainWindow?.webContents.send('cleanup'); }); app.on('activate', () => { From bb97a554f5b662bb091565552d6d6a4de48e0ad0 Mon Sep 17 00:00:00 2001 From: Tony Date: Wed, 5 May 2021 10:29:18 -0700 Subject: [PATCH 2/2] Added missing electron ipc event listener --- Composer/packages/client/src/App.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Composer/packages/client/src/App.tsx b/Composer/packages/client/src/App.tsx index 02ca34c047..ecc68da714 100644 --- a/Composer/packages/client/src/App.tsx +++ b/Composer/packages/client/src/App.tsx @@ -19,6 +19,7 @@ const Logger = () => { return null; }; +const { ipcRenderer } = window; export const App: React.FC = () => { const { appLocale } = useRecoilValue(userSettingsState); @@ -34,7 +35,9 @@ export const App: React.FC = () => { checkNodeVersion(); fetchExtensions(); fetchFeatureFlags(); - performAppCleanupOnQuit(); + ipcRenderer?.on('cleanup', (_event) => { + performAppCleanupOnQuit(); + }); }, []); return (