FIX application hangs after socket reconnect

Tray, Globalshortcut and other stop sending events with socket.emit after socket reconnect
This commit is contained in:
GLINTT\ppinto
2019-04-18 18:03:17 +01:00
parent 597df77508
commit 4db0ac0ebb
39 changed files with 376 additions and 333 deletions

View File

@@ -1,187 +1,187 @@
import { BrowserWindow, Menu, nativeImage } from 'electron';
const path = require('path');
const windows: Electron.BrowserWindow[] = [];
let window, lastOptions;
let window, lastOptions, electronSocket;
export = (socket: SocketIO.Socket, app: Electron.App) => {
electronSocket = socket;
socket.on('register-browserWindow-ready-to-show', (id) => {
getWindowById(id).on('ready-to-show', () => {
socket.emit('browserWindow-ready-to-show' + id);
electronSocket.emit('browserWindow-ready-to-show' + id);
});
});
socket.on('register-browserWindow-page-title-updated', (id) => {
getWindowById(id).on('page-title-updated', (event, title) => {
socket.emit('browserWindow-page-title-updated' + id, title);
electronSocket.emit('browserWindow-page-title-updated' + id, title);
});
});
socket.on('register-browserWindow-close', (id) => {
getWindowById(id).on('close', () => {
socket.emit('browserWindow-close' + id);
electronSocket.emit('browserWindow-close' + id);
});
});
socket.on('register-browserWindow-closed', (id) => {
getWindowById(id).on('closed', () => {
socket.emit('browserWindow-closed' + id);
electronSocket.emit('browserWindow-closed' + id);
});
});
socket.on('register-browserWindow-session-end', (id) => {
getWindowById(id).on('session-end', () => {
socket.emit('browserWindow-session-end' + id);
electronSocket.emit('browserWindow-session-end' + id);
});
});
socket.on('register-browserWindow-unresponsive', (id) => {
getWindowById(id).on('unresponsive', () => {
socket.emit('browserWindow-unresponsive' + id);
electronSocket.emit('browserWindow-unresponsive' + id);
});
});
socket.on('register-browserWindow-responsive', (id) => {
getWindowById(id).on('responsive', () => {
socket.emit('browserWindow-responsive' + id);
electronSocket.emit('browserWindow-responsive' + id);
});
});
socket.on('register-browserWindow-blur', (id) => {
getWindowById(id).on('blur', () => {
socket.emit('browserWindow-blur' + id);
electronSocket.emit('browserWindow-blur' + id);
});
});
socket.on('register-browserWindow-focus', (id) => {
getWindowById(id).on('focus', () => {
socket.emit('browserWindow-focus' + id);
electronSocket.emit('browserWindow-focus' + id);
});
});
socket.on('register-browserWindow-show', (id) => {
getWindowById(id).on('show', () => {
socket.emit('browserWindow-show' + id);
electronSocket.emit('browserWindow-show' + id);
});
});
socket.on('register-browserWindow-hide', (id) => {
getWindowById(id).on('hide', () => {
socket.emit('browserWindow-hide' + id);
electronSocket.emit('browserWindow-hide' + id);
});
});
socket.on('register-browserWindow-maximize', (id) => {
getWindowById(id).on('maximize', () => {
socket.emit('browserWindow-maximize' + id);
electronSocket.emit('browserWindow-maximize' + id);
});
});
socket.on('register-browserWindow-unmaximize', (id) => {
getWindowById(id).on('unmaximize', () => {
socket.emit('browserWindow-unmaximize' + id);
electronSocket.emit('browserWindow-unmaximize' + id);
});
});
socket.on('register-browserWindow-minimize', (id) => {
getWindowById(id).on('minimize', () => {
socket.emit('browserWindow-minimize' + id);
electronSocket.emit('browserWindow-minimize' + id);
});
});
socket.on('register-browserWindow-restore', (id) => {
getWindowById(id).on('restore', () => {
socket.emit('browserWindow-restore' + id);
electronSocket.emit('browserWindow-restore' + id);
});
});
socket.on('register-browserWindow-resize', (id) => {
getWindowById(id).on('resize', () => {
socket.emit('browserWindow-resize' + id);
electronSocket.emit('browserWindow-resize' + id);
});
});
socket.on('register-browserWindow-move', (id) => {
getWindowById(id).on('move', () => {
socket.emit('browserWindow-move' + id);
electronSocket.emit('browserWindow-move' + id);
});
});
socket.on('register-browserWindow-moved', (id) => {
getWindowById(id).on('moved', () => {
socket.emit('browserWindow-moved' + id);
electronSocket.emit('browserWindow-moved' + id);
});
});
socket.on('register-browserWindow-enter-full-screen', (id) => {
getWindowById(id).on('enter-full-screen', () => {
socket.emit('browserWindow-enter-full-screen' + id);
electronSocket.emit('browserWindow-enter-full-screen' + id);
});
});
socket.on('register-browserWindow-leave-full-screen', (id) => {
getWindowById(id).on('leave-full-screen', () => {
socket.emit('browserWindow-leave-full-screen' + id);
electronSocket.emit('browserWindow-leave-full-screen' + id);
});
});
socket.on('register-browserWindow-enter-html-full-screen', (id) => {
getWindowById(id).on('enter-html-full-screen', () => {
socket.emit('browserWindow-enter-html-full-screen' + id);
electronSocket.emit('browserWindow-enter-html-full-screen' + id);
});
});
socket.on('register-browserWindow-leave-html-full-screen', (id) => {
getWindowById(id).on('leave-html-full-screen', () => {
socket.emit('browserWindow-leave-html-full-screen' + id);
electronSocket.emit('browserWindow-leave-html-full-screen' + id);
});
});
socket.on('register-browserWindow-app-command', (id) => {
getWindowById(id).on('app-command', (event, command) => {
socket.emit('browserWindow-app-command' + id, command);
electronSocket.emit('browserWindow-app-command' + id, command);
});
});
socket.on('register-browserWindow-scroll-touch-begin', (id) => {
getWindowById(id).on('scroll-touch-begin', () => {
socket.emit('browserWindow-scroll-touch-begin' + id);
electronSocket.emit('browserWindow-scroll-touch-begin' + id);
});
});
socket.on('register-browserWindow-scroll-touch-end', (id) => {
getWindowById(id).on('scroll-touch-end', () => {
socket.emit('browserWindow-scroll-touch-end' + id);
electronSocket.emit('browserWindow-scroll-touch-end' + id);
});
});
socket.on('register-browserWindow-scroll-touch-edge', (id) => {
getWindowById(id).on('scroll-touch-edge', () => {
socket.emit('browserWindow-scroll-touch-edge' + id);
electronSocket.emit('browserWindow-scroll-touch-edge' + id);
});
});
socket.on('register-browserWindow-swipe', (id) => {
getWindowById(id).on('swipe', (event, direction) => {
socket.emit('browserWindow-swipe' + id, direction);
electronSocket.emit('browserWindow-swipe' + id, direction);
});
});
socket.on('register-browserWindow-sheet-begin', (id) => {
getWindowById(id).on('sheet-begin', () => {
socket.emit('browserWindow-sheet-begin' + id);
electronSocket.emit('browserWindow-sheet-begin' + id);
});
});
socket.on('register-browserWindow-sheet-end', (id) => {
getWindowById(id).on('sheet-end', () => {
socket.emit('browserWindow-sheet-end' + id);
electronSocket.emit('browserWindow-sheet-end' + id);
});
});
socket.on('register-browserWindow-new-window-for-tab', (id) => {
getWindowById(id).on('new-window-for-tab', () => {
socket.emit('browserWindow-new-window-for-tab' + id);
electronSocket.emit('browserWindow-new-window-for-tab' + id);
});
});
@@ -200,7 +200,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
const ids = [];
windows.forEach(x => ids.push(x.id));
socket.emit('BrowserWindowClosed', ids);
electronSocket.emit('BrowserWindowClosed', ids);
}
}
}
@@ -219,7 +219,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
}
windows.push(window);
socket.emit('BrowserWindowCreated', window.id);
electronSocket.emit('BrowserWindowCreated', window.id);
});
socket.on('browserWindowDestroy', (id) => {
@@ -241,13 +241,13 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsFocused', (id) => {
const isFocused = getWindowById(id).isFocused();
socket.emit('browserWindow-isFocused-completed', isFocused);
electronSocket.emit('browserWindow-isFocused-completed', isFocused);
});
socket.on('browserWindowIsDestroyed', (id) => {
const isDestroyed = getWindowById(id).isDestroyed();
socket.emit('browserWindow-isDestroyed-completed', isDestroyed);
electronSocket.emit('browserWindow-isDestroyed-completed', isDestroyed);
});
socket.on('browserWindowShow', (id) => {
@@ -265,13 +265,13 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsVisible', (id) => {
const isVisible = getWindowById(id).isVisible();
socket.emit('browserWindow-isVisible-completed', isVisible);
electronSocket.emit('browserWindow-isVisible-completed', isVisible);
});
socket.on('browserWindowIsModal', (id) => {
const isModal = getWindowById(id).isModal();
socket.emit('browserWindow-isModal-completed', isModal);
electronSocket.emit('browserWindow-isModal-completed', isModal);
});
socket.on('browserWindowMaximize', (id) => {
@@ -285,7 +285,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMaximized', (id) => {
const isMaximized = getWindowById(id).isMaximized();
socket.emit('browserWindow-isMaximized-completed', isMaximized);
electronSocket.emit('browserWindow-isMaximized-completed', isMaximized);
});
socket.on('browserWindowMinimize', (id) => {
@@ -299,7 +299,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMinimized', (id) => {
const isMinimized = getWindowById(id).isMinimized();
socket.emit('browserWindow-isMinimized-completed', isMinimized);
electronSocket.emit('browserWindow-isMinimized-completed', isMinimized);
});
socket.on('browserWindowSetFullScreen', (id, fullscreen) => {
@@ -309,7 +309,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsFullScreen', (id) => {
const isFullScreen = getWindowById(id).isFullScreen();
socket.emit('browserWindow-isFullScreen-completed', isFullScreen);
electronSocket.emit('browserWindow-isFullScreen-completed', isFullScreen);
});
socket.on('browserWindowSetAspectRatio', (id, aspectRatio, extraSize) => {
@@ -331,7 +331,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetBounds', (id) => {
const rectangle = getWindowById(id).getBounds();
socket.emit('browserWindow-getBounds-completed', rectangle);
electronSocket.emit('browserWindow-getBounds-completed', rectangle);
});
socket.on('browserWindowSetContentBounds', (id, bounds, animate) => {
@@ -341,7 +341,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetContentBounds', (id) => {
const rectangle = getWindowById(id).getContentBounds();
socket.emit('browserWindow-getContentBounds-completed', rectangle);
electronSocket.emit('browserWindow-getContentBounds-completed', rectangle);
});
socket.on('browserWindowSetSize', (id, width, height, animate) => {
@@ -351,7 +351,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetSize', (id) => {
const size = getWindowById(id).getSize();
socket.emit('browserWindow-getSize-completed', size);
electronSocket.emit('browserWindow-getSize-completed', size);
});
socket.on('browserWindowSetContentSize', (id, width, height, animate) => {
@@ -361,7 +361,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetContentSize', (id) => {
const size = getWindowById(id).getContentSize();
socket.emit('browserWindow-getContentSize-completed', size);
electronSocket.emit('browserWindow-getContentSize-completed', size);
});
socket.on('browserWindowSetMinimumSize', (id, width, height) => {
@@ -371,7 +371,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetMinimumSize', (id) => {
const size = getWindowById(id).getMinimumSize();
socket.emit('browserWindow-getMinimumSize-completed', size);
electronSocket.emit('browserWindow-getMinimumSize-completed', size);
});
socket.on('browserWindowSetMaximumSize', (id, width, height) => {
@@ -381,7 +381,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetMaximumSize', (id) => {
const size = getWindowById(id).getMaximumSize();
socket.emit('browserWindow-getMaximumSize-completed', size);
electronSocket.emit('browserWindow-getMaximumSize-completed', size);
});
socket.on('browserWindowSetResizable', (id, resizable) => {
@@ -391,7 +391,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsResizable', (id) => {
const resizable = getWindowById(id).isResizable();
socket.emit('browserWindow-isResizable-completed', resizable);
electronSocket.emit('browserWindow-isResizable-completed', resizable);
});
socket.on('browserWindowSetMovable', (id, movable) => {
@@ -401,7 +401,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMovable', (id) => {
const movable = getWindowById(id).isMovable();
socket.emit('browserWindow-isMovable-completed', movable);
electronSocket.emit('browserWindow-isMovable-completed', movable);
});
socket.on('browserWindowSetMinimizable', (id, minimizable) => {
@@ -411,7 +411,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMinimizable', (id) => {
const minimizable = getWindowById(id).isMinimizable();
socket.emit('browserWindow-isMinimizable-completed', minimizable);
electronSocket.emit('browserWindow-isMinimizable-completed', minimizable);
});
socket.on('browserWindowSetMaximizable', (id, maximizable) => {
@@ -421,7 +421,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMaximizable', (id) => {
const maximizable = getWindowById(id).isMaximizable();
socket.emit('browserWindow-isMaximizable-completed', maximizable);
electronSocket.emit('browserWindow-isMaximizable-completed', maximizable);
});
socket.on('browserWindowSetFullScreenable', (id, fullscreenable) => {
@@ -431,7 +431,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsFullScreenable', (id) => {
const fullscreenable = getWindowById(id).isFullScreenable();
socket.emit('browserWindow-isFullScreenable-completed', fullscreenable);
electronSocket.emit('browserWindow-isFullScreenable-completed', fullscreenable);
});
socket.on('browserWindowSetClosable', (id, closable) => {
@@ -441,7 +441,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsClosable', (id) => {
const closable = getWindowById(id).isClosable();
socket.emit('browserWindow-isClosable-completed', closable);
electronSocket.emit('browserWindow-isClosable-completed', closable);
});
socket.on('browserWindowSetAlwaysOnTop', (id, flag, level, relativeLevel) => {
@@ -451,7 +451,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsAlwaysOnTop', (id) => {
const isAlwaysOnTop = getWindowById(id).isAlwaysOnTop();
socket.emit('browserWindow-isAlwaysOnTop-completed', isAlwaysOnTop);
electronSocket.emit('browserWindow-isAlwaysOnTop-completed', isAlwaysOnTop);
});
socket.on('browserWindowCenter', (id) => {
@@ -465,7 +465,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetPosition', (id) => {
const position = getWindowById(id).getPosition();
socket.emit('browserWindow-getPosition-completed', position);
electronSocket.emit('browserWindow-getPosition-completed', position);
});
socket.on('browserWindowSetTitle', (id, title) => {
@@ -475,7 +475,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetTitle', (id) => {
const title = getWindowById(id).getTitle();
socket.emit('browserWindow-getTitle-completed', title);
electronSocket.emit('browserWindow-getTitle-completed', title);
});
socket.on('browserWindowSetTitle', (id, title) => {
@@ -505,7 +505,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsKiosk', (id) => {
const isKiosk = getWindowById(id).isKiosk();
socket.emit('browserWindow-isKiosk-completed', isKiosk);
electronSocket.emit('browserWindow-isKiosk-completed', isKiosk);
});
socket.on('browserWindowSetRepresentedFilename', (id, filename) => {
@@ -515,7 +515,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetRepresentedFilename', (id) => {
const pathname = getWindowById(id).getRepresentedFilename();
socket.emit('browserWindow-getRepresentedFilename-completed', pathname);
electronSocket.emit('browserWindow-getRepresentedFilename-completed', pathname);
});
socket.on('browserWindowSetDocumentEdited', (id, edited) => {
@@ -525,7 +525,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsDocumentEdited', (id) => {
const edited = getWindowById(id).isDocumentEdited();
socket.emit('browserWindow-isDocumentEdited-completed', edited);
electronSocket.emit('browserWindow-isDocumentEdited-completed', edited);
});
socket.on('browserWindowFocusOnWebView', (id) => {
@@ -551,7 +551,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
menu = Menu.buildFromTemplate(menuItems);
addMenuItemClickConnector(menu.items, (id) => {
socket.emit('windowMenuItemClicked', id);
electronSocket.emit('windowMenuItemClicked', id);
});
}
@@ -581,7 +581,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowHasShadow', (id) => {
const hasShadow = getWindowById(id).hasShadow();
socket.emit('browserWindow-hasShadow-completed', hasShadow);
electronSocket.emit('browserWindow-hasShadow-completed', hasShadow);
});
socket.on('browserWindowSetThumbarButtons', (id, thumbarButtons: Electron.ThumbarButton[]) => {
@@ -589,12 +589,12 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
const imagePath = path.join(__dirname.replace('api', ''), 'bin', thumbarButton.icon.toString());
thumbarButton.icon = nativeImage.createFromPath(imagePath);
thumbarButton.click = () => {
socket.emit('thumbarButtonClicked', thumbarButton['id']);
electronSocket.emit('thumbarButtonClicked', thumbarButton['id']);
};
});
const success = getWindowById(id).setThumbarButtons(thumbarButtons);
socket.emit('browserWindowSetThumbarButtons-completed', success);
electronSocket.emit('browserWindowSetThumbarButtons-completed', success);
});
socket.on('browserWindowSetThumbnailClip', (id, rectangle) => {
@@ -620,7 +620,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMenuBarAutoHide', (id) => {
const isMenuBarAutoHide = getWindowById(id).isMenuBarAutoHide();
socket.emit('browserWindow-isMenuBarAutoHide-completed', isMenuBarAutoHide);
electronSocket.emit('browserWindow-isMenuBarAutoHide-completed', isMenuBarAutoHide);
});
socket.on('browserWindowSetMenuBarVisibility', (id, visible) => {
@@ -630,7 +630,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsMenuBarVisible', (id) => {
const isMenuBarVisible = getWindowById(id).isMenuBarVisible();
socket.emit('browserWindow-isMenuBarVisible-completed', isMenuBarVisible);
electronSocket.emit('browserWindow-isMenuBarVisible-completed', isMenuBarVisible);
});
socket.on('browserWindowSetVisibleOnAllWorkspaces', (id, visible) => {
@@ -640,7 +640,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowIsVisibleOnAllWorkspaces', (id) => {
const isVisibleOnAllWorkspaces = getWindowById(id).isVisibleOnAllWorkspaces();
socket.emit('browserWindow-isVisibleOnAllWorkspaces-completed', isVisibleOnAllWorkspaces);
electronSocket.emit('browserWindow-isVisibleOnAllWorkspaces-completed', isVisibleOnAllWorkspaces);
});
socket.on('browserWindowSetIgnoreMouseEvents', (id, ignore) => {
@@ -664,7 +664,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
socket.on('browserWindowGetParentWindow', (id) => {
const browserWindow = getWindowById(id).getParentWindow();
socket.emit('browserWindow-getParentWindow-completed', browserWindow.id);
electronSocket.emit('browserWindow-getParentWindow-completed', browserWindow.id);
});
socket.on('browserWindowGetChildWindows', (id) => {
@@ -676,7 +676,7 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
ids.push(x.id);
});
socket.emit('browserWindow-getChildWindows-completed', ids);
electronSocket.emit('browserWindow-getChildWindows-completed', ids);
});
socket.on('browserWindowSetAutoHideCursor', (id, autoHide) => {