@@ -10,8 +10,6 @@ import * as path from "path";
1010import { PNG } from "pngjs" ;
1111import { sprintf } from "sprintf-js" ;
1212import { Readable } from "stream" ;
13- import * as util from "util" ;
14- import winston from "winston" ;
1513import * as services from "../frontend/app/store/services" ;
1614import { initElectronWshrpc , shutdownWshrpc } from "../frontend/app/store/wshrpcutil" ;
1715import { getWebServerEndpoint } from "../frontend/util/endpoints" ;
@@ -25,7 +23,6 @@ import {
2523 getGlobalIsRelaunching ,
2624 setForceQuit ,
2725 setGlobalIsQuitting ,
28- setGlobalIsRelaunching ,
2926 setGlobalIsStarting ,
3027 setWasActive ,
3128 setWasInFg ,
@@ -35,16 +32,19 @@ import { handleCtrlShiftState } from "./emain-util";
3532import { getIsWaveSrvDead , getWaveSrvProc , getWaveSrvReady , getWaveVersion , runWaveSrv } from "./emain-wavesrv" ;
3633import {
3734 createBrowserWindow ,
35+ createNewWaveWindow ,
3836 focusedWaveWindow ,
3937 getAllWaveWindows ,
4038 getWaveWindowById ,
4139 getWaveWindowByWebContentsId ,
4240 getWaveWindowByWorkspaceId ,
41+ relaunchBrowserWindows ,
4342 WaveBrowserWindow ,
4443} from "./emain-window" ;
4544import { ElectronWshClient , initElectronWshClient } from "./emain-wsh" ;
4645import { getLaunchSettings } from "./launchsettings" ;
47- import { getAppMenu } from "./menu" ;
46+ import { log } from "./log" ;
47+ import { instantiateAppMenu , makeAppMenu } from "./menu" ;
4848import {
4949 getElectronAppBasePath ,
5050 getElectronAppUnpackedBasePath ,
@@ -65,30 +65,7 @@ electron.nativeTheme.themeSource = "dark";
6565
6666let webviewFocusId : number = null ; // set to the getWebContentsId of the webview that has focus (null if not focused)
6767let webviewKeys : string [ ] = [ ] ; // the keys to trap when webview has focus
68- const oldConsoleLog = console . log ;
6968
70- const loggerTransports : winston . transport [ ] = [
71- new winston . transports . File ( { filename : path . join ( waveDataDir , "waveapp.log" ) , level : "info" } ) ,
72- ] ;
73- if ( isDev ) {
74- loggerTransports . push ( new winston . transports . Console ( ) ) ;
75- }
76- const loggerConfig = {
77- level : "info" ,
78- format : winston . format . combine (
79- winston . format . timestamp ( { format : "YYYY-MM-DD HH:mm:ss.SSS" } ) ,
80- winston . format . printf ( ( info ) => `${ info . timestamp } ${ info . message } ` )
81- ) ,
82- transports : loggerTransports ,
83- } ;
84- const logger = winston . createLogger ( loggerConfig ) ;
85- function log ( ...msg : any [ ] ) {
86- try {
87- logger . info ( util . format ( ...msg ) ) ;
88- } catch ( e ) {
89- oldConsoleLog ( ...msg ) ;
90- }
91- }
9269console . log = log ;
9370console . log (
9471 sprintf (
@@ -375,34 +352,6 @@ electron.ipcMain.on("open-native-path", (event, filePath: string) => {
375352 ) ;
376353} ) ;
377354
378- async function createNewWaveWindow ( ) : Promise < void > {
379- log ( "createNewWaveWindow" ) ;
380- const clientData = await services . ClientService . GetClientData ( ) ;
381- const fullConfig = await services . FileService . GetFullConfig ( ) ;
382- let recreatedWindow = false ;
383- const allWindows = getAllWaveWindows ( ) ;
384- if ( allWindows . length === 0 && clientData ?. windowids ?. length >= 1 ) {
385- console . log ( "no windows, but clientData has windowids, recreating first window" ) ;
386- // reopen the first window
387- const existingWindowId = clientData . windowids [ 0 ] ;
388- const existingWindowData = ( await services . ObjectService . GetObject ( "window:" + existingWindowId ) ) as WaveWindow ;
389- if ( existingWindowData != null ) {
390- const win = await createBrowserWindow ( existingWindowData , fullConfig , { unamePlatform } ) ;
391- await win . waveReadyPromise ;
392- win . show ( ) ;
393- recreatedWindow = true ;
394- }
395- }
396- if ( recreatedWindow ) {
397- console . log ( "recreated window, returning" ) ;
398- return ;
399- }
400- console . log ( "creating new window" ) ;
401- const newBrowserWindow = await createBrowserWindow ( null , fullConfig , { unamePlatform } ) ;
402- await newBrowserWindow . waveReadyPromise ;
403- newBrowserWindow . show ( ) ;
404- }
405-
406355electron . ipcMain . on ( "set-window-init-status" , ( event , status : "ready" | "wave-ready" ) => {
407356 const tabView = getWaveTabViewByWebContentsId ( event . sender . id ) ;
408357 if ( tabView == null || tabView . initResolve == null ) {
@@ -481,10 +430,10 @@ electron.ipcMain.on("contextmenu-show", (event, menuDefArr?: ElectronContextMenu
481430 if ( menuDefArr ?. length === 0 ) {
482431 return ;
483432 }
484- const menu = menuDefArr ? convertMenuDefArrToMenu ( menuDefArr ) : instantiateAppMenu ( ) ;
485- // const { x, y } = electron.screen.getCursorScreenPoint ();
486- // const windowPos = window.getPosition ();
487- menu . popup ( ) ;
433+ fireAndForget ( async ( ) => {
434+ const menu = menuDefArr ? convertMenuDefArrToMenu ( menuDefArr ) : await instantiateAppMenu ( ) ;
435+ menu . popup ( ) ;
436+ } ) ;
488437 event . returnValue = true ;
489438} ) ;
490439
@@ -561,18 +510,6 @@ function convertMenuDefArrToMenu(menuDefArr: ElectronContextMenuItem[]): electro
561510 return electron . Menu . buildFromTemplate ( menuItems ) ;
562511}
563512
564- function instantiateAppMenu ( ) : electron . Menu {
565- return getAppMenu ( {
566- createNewWaveWindow,
567- relaunchBrowserWindows,
568- } ) ;
569- }
570-
571- function makeAppMenu ( ) {
572- const menu = instantiateAppMenu ( ) ;
573- electron . Menu . setApplicationMenu ( menu ) ;
574- }
575-
576513function hideWindowWithCatch ( window : WaveBrowserWindow ) {
577514 if ( window == null ) {
578515 return ;
@@ -649,37 +586,6 @@ process.on("uncaughtException", (error) => {
649586 electronApp . quit ( ) ;
650587} ) ;
651588
652- async function relaunchBrowserWindows ( ) : Promise < void > {
653- console . log ( "relaunchBrowserWindows" ) ;
654- setGlobalIsRelaunching ( true ) ;
655- const windows = getAllWaveWindows ( ) ;
656- for ( const window of windows ) {
657- console . log ( "relaunch -- closing window" , window . waveWindowId ) ;
658- window . close ( ) ;
659- }
660- setGlobalIsRelaunching ( false ) ;
661-
662- const clientData = await services . ClientService . GetClientData ( ) ;
663- const fullConfig = await services . FileService . GetFullConfig ( ) ;
664- const wins : WaveBrowserWindow [ ] = [ ] ;
665- for ( const windowId of clientData . windowids . slice ( ) . reverse ( ) ) {
666- const windowData : WaveWindow = await services . WindowService . GetWindow ( windowId ) ;
667- if ( windowData == null ) {
668- console . log ( "relaunch -- window data not found, closing window" , windowId ) ;
669- await services . WindowService . CloseWindow ( windowId , true ) ;
670- continue ;
671- }
672- console . log ( "relaunch -- creating window" , windowId , windowData ) ;
673- const win = await createBrowserWindow ( windowData , fullConfig , { unamePlatform } ) ;
674- wins . push ( win ) ;
675- }
676- for ( const win of wins ) {
677- await win . waveReadyPromise ;
678- console . log ( "show window" , win . waveWindowId ) ;
679- win . show ( ) ;
680- }
681- }
682-
683589async function appMain ( ) {
684590 // Set disableHardwareAcceleration as early as possible, if required.
685591 const launchSettings = getLaunchSettings ( ) ;
@@ -694,7 +600,6 @@ async function appMain() {
694600 electronApp . quit ( ) ;
695601 return ;
696602 }
697- makeAppMenu ( ) ;
698603 try {
699604 await runWaveSrv ( handleWSEvent ) ;
700605 } catch ( e ) {
@@ -715,6 +620,7 @@ async function appMain() {
715620 } catch ( e ) {
716621 console . log ( "error initializing wshrpc" , e ) ;
717622 }
623+ makeAppMenu ( ) ;
718624 await configureAutoUpdater ( ) ;
719625 setGlobalIsStarting ( false ) ;
720626 if ( fullConfig ?. settings ?. [ "window:maxtabcachesize" ] != null ) {
0 commit comments