diff --git a/src/inject-preload.js b/src/inject-preload.js index 4b631826fb00be2aecf96044967b9041004a51ab..760df3739886db26499f2e281f1ed696a0770d94 100644 --- a/src/inject-preload.js +++ b/src/inject-preload.js @@ -46,7 +46,16 @@ Object.defineProperty(angular, 'bootstrap', { return value; }); } - ]); + ]) + .run(['$rootScope', ($rootScope) => { + MMCgi.isLogin ? + ipcRenderer.send("wx-rendered", true) : + ipcRenderer.send("wx-rendered", false); + + $rootScope.$on("newLoginPage", () => { + ipcRenderer.send("user-logined", ""); + }); + }]); } return angularBootstrapReal.apply(angular, arguments); } : angularBootstrapReal, diff --git a/src/main.js b/src/main.js index f1ad4cf4bdc52a291af5ef23942ac46ec6598fe9..53b7398018862834f5242cb5accefdda74a07877 100644 --- a/src/main.js +++ b/src/main.js @@ -12,6 +12,9 @@ const Menu = electron.Menu; const injectBundle = require('./inject-onload.js'); const messageHandler = require('./message.js'); +const WINDOW_SIZE = { width: 800, height: 600 }; +const WINDOW_SIZE_LOGIN = { width: 380, height: 540 }; + const WINDOW_TITLE = 'Electronic WeChat'; let browserWindow = null; @@ -20,8 +23,6 @@ let appIcon = null; let createWindow = () => { browserWindow = new BrowserWindow({ title: WINDOW_TITLE, - width: 800, - height: 600, resizable: true, center: true, show: true, @@ -39,7 +40,7 @@ let createWindow = () => { }); browserWindow.webContents.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36"); - //browserWindow.webContents.openDevTools(); + // browserWindow.webContents.openDevTools(); browserWindow.loadURL("https://wx.qq.com/"); @@ -78,6 +79,8 @@ let createWindow = () => { shell.openExternal(messageHandler.handleRedirectMessage(url)); }); + browserWindow.hide(); + createTray(); }; @@ -99,6 +102,10 @@ ipcMain.on('badge-changed', (event, num) => { } }); +ipcMain.on('user-logined', () => renderWindow(true)); + +ipcMain.on('wx-rendered', (event, isLogined) => renderWindow(isLogined)); + ipcMain.on('log', (event, message) => { console.log(message); }); @@ -107,6 +114,22 @@ ipcMain.on('reload', (event, message) => { browserWindow.loadURL("https://wx.qq.com/"); }); +let setResizable = (isLogined) => { + browserWindow.setResizable(isLogined); +}; + +let setSize = (isLogined) => { + const size = isLogined ? WINDOW_SIZE : WINDOW_SIZE_LOGIN; + browserWindow.setSize(size.width, size.height); + browserWindow.center(); + browserWindow.show(); +}; + +let renderWindow = (isLogined) => { + setResizable(isLogined); + setSize(isLogined); +} + let createTray = () => { const nativeImage = require('electron').nativeImage; let image = nativeImage.createFromPath(path.join(__dirname, '../assets/status_bar.png'));