Added minimize to tray.

This commit is contained in:
Patrick Fic
2020-10-14 22:57:20 -07:00
parent 0456543574
commit 6df242c34f
4 changed files with 73 additions and 7 deletions

View File

@@ -1,9 +1,8 @@
const path = require("path");
const { app, BrowserWindow, ipcMain } = require("electron");
const { app, BrowserWindow, Tray, Menu, ipcMain } = require("electron");
const isDev = require("electron-is-dev");
const settings = require("electron-settings");
const ipcTypes = require("../src/ipc.types");
const { StartWatcher } = require("./file-watcher/file-watcher");
const { default: ipcTypes } = require("../src/ipc.types");
require("./ipc-main-handler");
@@ -23,13 +22,16 @@ if (require("electron-squirrel-startup")) {
console.log(`${__dirname}/preload.js`);
let mainWindow;
let tray = null;
function createWindow() {
makeSingleInstance();
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
title: "ImEX RPS",
icon: path.join(__dirname, "../src/assets/logo192.png"),
webPreferences: {
nodeIntegration: false,
enableRemoteModule: false,
@@ -46,6 +48,23 @@ function createWindow() {
: `file://${path.join(__dirname, "../build/index.html")}`
);
// mainWindow.on("close", function (event) {
// event.preventDefault();
// mainWindow.hide();
// tray = createTray();
// });
mainWindow.on("minimize", function (event) {
event.preventDefault();
mainWindow.hide();
tray = createTray();
});
ipcMain.on(ipcTypes.quit, (event, arg) => {
app.isQuiting = true;
app.quit();
});
// Open the DevTools.
if (isDev) {
mainWindow.webContents.openDevTools({
@@ -67,7 +86,7 @@ app.whenReady().then(() => {
.then((name) => console.log(`Added Extension: ${name}`))
.catch((error) => console.log(`An error occurred: , ${error}`));
}
StartWatcher();
// ipcMain.on(ipcTypes.default.webcontent, (event, ...obj) => {
// console.log("event", event);
// mainWindow.webContents.send(event, obj);
@@ -106,3 +125,29 @@ function makeSingleInstance() {
}
});
}
function createTray() {
let appIcon = new Tray(path.join(__dirname, "../src/assets/logo192.png"));
const contextMenu = Menu.buildFromTemplate([
{
label: "Show",
click: function () {
mainWindow.show();
},
},
{
label: "Exit",
click: function () {
app.isQuiting = true;
app.quit();
},
},
]);
appIcon.on("double-click", function (event) {
mainWindow.show();
});
appIcon.setToolTip("ImEX RPS");
appIcon.setContextMenu(contextMenu);
return appIcon;
}

View File

@@ -1,8 +1,14 @@
import { PieChartOutlined, SettingFilled } from "@ant-design/icons";
import {
PieChartOutlined,
SettingFilled,
CloseOutlined,
} from "@ant-design/icons";
import { Menu } from "antd";
import React from "react";
import { Link } from "react-router-dom";
import ipcTypes from "../../../ipc.types";
import SiderSignOut from "../../molecules/sider-sign-out/sider-sign-out.molecule";
const { ipcRenderer } = window;
export default function SiderMenuOrganism() {
return (
@@ -14,6 +20,16 @@ export default function SiderMenuOrganism() {
<Link to="/settings">Settings</Link>
</Menu.Item>
<SiderSignOut />
<Menu.Divider />
<Menu.Item
key="3"
icon={<CloseOutlined />}
onClick={() => {
ipcRenderer.send(ipcTypes.default.quit);
}}
>
Quit
</Menu.Item>
</Menu>
);
}

View File

@@ -1,5 +1,6 @@
exports.default = {
webcontent: "webcontent-send",
quit: "quit-app",
test: {
start: "test-start",
},

View File

@@ -7,9 +7,11 @@ import {
import { QUERY_BODYSHOP } from "../../graphql/bodyshop.queries";
import client from "../../graphql/GraphQLClient";
import { UPSERT_USER } from "../../graphql/user.queries";
import ipcTypes from "../../ipc.types";
import {
sendPasswordResetFailure,
sendPasswordResetSuccess,
setBodyshop,
signInFailure,
signInSuccess,
signOutFailure,
@@ -18,11 +20,11 @@ import {
updateUserDetailsSuccess,
validatePasswordResetFailure,
validatePasswordResetSuccess,
setBodyshop
} from "./user.actions";
import UserActionTypes from "./user.types";
const { ipcRenderer } = window;
export function* onEmailSignInStart() {
yield takeLatest(UserActionTypes.EMAIL_SIGN_IN_START, signInWithEmail);
}
@@ -110,6 +112,8 @@ export function* signInSuccessSaga({ payload }) {
const shop = yield client.query({ query: QUERY_BODYSHOP });
yield put(setBodyshop(shop.data.bodyshops[0]));
ipcRenderer.send(ipcTypes.default.fileWatcher.toMain.start);
// LogRocket.identify(payload.email);
// if (!payload.email.includes("@imex.")) yield put(setInstanceId(payload.uid));
// yield logImEXEvent("redux_sign_in_success");