From 95e73f7c28bca44e345f28ae3c82da8d695ee8f9 Mon Sep 17 00:00:00 2001 From: "Enrique H. Oliva" Date: Thu, 29 Jul 2021 09:04:35 -0500 Subject: [PATCH 1/2] WIP: tray icon image --- package.json | 2 +- src/images/icon.png | Bin 0 -> 3341 bytes src/images/icon@2x.png | Bin 0 -> 4083 bytes src/images/icon_32x32.png | Bin 0 -> 4083 bytes src/images/icon_32x32@2x.png | Bin 0 -> 5703 bytes src/main.ts | 29 +++++++++++++++++++++++++++++ yarn.lock | 8 ++++---- 7 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 src/images/icon.png create mode 100644 src/images/icon@2x.png create mode 100644 src/images/icon_32x32.png create mode 100644 src/images/icon_32x32@2x.png diff --git a/package.json b/package.json index b11c9db..3cc50ff 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@vue/eslint-config-typescript": "^5.0.2", "@vue/test-utils": "^2.0.0-0", "@wasm-tool/wasm-pack-plugin": "^1.3.1", - "electron": "^9.0.0", + "electron": "^8.3.3", "electron-devtools-installer": "^3.1.0", "electron-log": "^4.3.4", "eslint": "^6.7.2", diff --git a/src/images/icon.png b/src/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b925c06182530d62a8b4f797b4058100bd089dd2 GIT binary patch literal 3341 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 XtjbNVe3~rK00000NkvXXu0mjfaynPv literal 0 HcmV?d00001 diff --git a/src/images/icon@2x.png b/src/images/icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf880ce701d69e66b0c610863f536fce0abbaa7 GIT binary patch literal 4083 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 literal 0 HcmV?d00001 diff --git a/src/main.ts b/src/main.ts index 334a6fe..2cb205c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,8 +13,37 @@ import initIpcMain from "@/ipc/index"; import { accountAuth } from "./account"; import createWindow from "./window"; +import { Menu, Tray } from 'electron'; +const nativeImage = require('electron').nativeImage +import path, {resolve} from 'path'; + +let tray = null export default async function main() { + // TODO: fix image paths + // currently looking in dist-electron directory + // should be looking in source + console.log(resolve(__dirname, './images', 'icon.png')) + console.log(path.join(__dirname, './images/icon.png')) + try { + const image = nativeImage.createFromPath(resolve(__dirname, 'images', 'icon_16x16.png')); + const urlImage = nativeImage.createFromDataURL('https://github.com/vladimiry-playground/electron-quick-start-tray-issue/blob/master/icon.png'); + console.log(image) + console.log(urlImage) + tray = new Tray(resolve(__dirname, 'images', 'icon_16x16.png')) + } catch(e) { + console.log(e) + } + // const contextMenu = Menu.buildFromTemplate([ + // { label: 'Item1', type: 'radio' }, + // { label: 'Item2', type: 'radio' }, + // { label: 'Item3', type: 'radio', checked: true }, + // { label: 'Item4', type: 'radio' } + // ]) + // tray.setToolTip('This is my application.') + // tray.setContextMenu(contextMenu) + + /* initiate controls for frontend to use when needed */ initIpcMain(); diff --git a/yarn.lock b/yarn.lock index e79f19f..55fa251 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5077,10 +5077,10 @@ electron-updater@^4.3.8: lodash.isequal "^4.5.0" semver "^7.3.4" -electron@^9.0.0: - version "9.3.3" - resolved "https://registry.yarnpkg.com/electron/-/electron-9.3.3.tgz#99a6619d5df68f97697a5d1d82ef3a8a63fcdf36" - integrity sha512-xghKeUY1qgnEcJ5w2rXo/toH+8NT2Dktx2aAxBNPV7CIJr3mejJJAPwLbycwtddzr37tgKxHeHlc8ivfKtMkJQ== +electron@^8.3.3: + version "8.5.5" + resolved "https://registry.yarnpkg.com/electron/-/electron-8.5.5.tgz#17b12bd70139c0099f750fc5de0d480bf03acb96" + integrity sha512-e355H+tRDial0m+X2v+l+0SnaATAPw4sNjv9qmdk/6MJz/glteVJwVJEnxTjPfEELIJSChrBWDBVpjdDvoBF4Q== dependencies: "@electron/get" "^1.0.1" "@types/node" "^12.0.12" From 515f67a120cafe184f410f560799e207d2b88a1d Mon Sep 17 00:00:00 2001 From: "Enrique H. Oliva" Date: Fri, 30 Jul 2021 08:52:43 -0500 Subject: [PATCH 2/2] feature: notify newMessage if window is blurred or closed --- src/init.ts | 6 +++--- src/ipc/listeners.ts | 8 +++++++- src/render/components/messenger.vue | 4 +++- src/render/ipc.ts | 2 +- src/session.ts | 8 +++++--- src/store.ts | 20 +++++++++++--------- src/types.ts | 4 ++++ 7 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/init.ts b/src/init.ts index 637db63..25de81d 100644 --- a/src/init.ts +++ b/src/init.ts @@ -9,7 +9,7 @@ import { app, protocol } from "electron"; import createWindow from "./window"; import main from "./main"; import { backgroundMitt } from '@/composables/useEmitter'; -import {setWindow, getWindow } from './store'; +import {setWindowOpen, getWindowOpen } from './store'; console.log('Starting Crimata electron app.'); @@ -22,7 +22,7 @@ const isDev = require('electron-is-dev'); // Listen for window creation. backgroundMitt.on('window-active', (state: boolean) => { - setWindow(state) + setWindowOpen(state) }); /* Start main process on ready */ @@ -40,7 +40,7 @@ app.on("window-all-closed", () => { // When user clicks app icon (re-open) app.on("activate", () => { - if (!getWindow()) createWindow(); + if (!getWindowOpen()) createWindow(); }); // Exit cleanly on request from parent process in development mode. diff --git a/src/ipc/listeners.ts b/src/ipc/listeners.ts index f92bead..ef0f965 100644 --- a/src/ipc/listeners.ts +++ b/src/ipc/listeners.ts @@ -1,12 +1,13 @@ - import { IpcListener } from "@/composables/useIpcMain" import { sendMessage } from '@/session'; import { updateAppState } from "@/account"; import { onNavBar } from "@/window"; +import { setWindowFocus } from '@/store'; const CLIENT_MESSAGE_CHANNEL = "post-session-send" const APP_MOUNT_CHANNEL = "post-app-mount"; const NAV_BAR_CHANNEL = "post-nav-bar"; +const POST_WINDOW_FOCUS = 'post-window-focus'; export const messageListener = new IpcListener({ channel: CLIENT_MESSAGE_CHANNEL, @@ -22,3 +23,8 @@ export const navBarListener = new IpcListener({ channel: NAV_BAR_CHANNEL, listenerCallback: onNavBar }); + +export const windowFocusListener = new IpcListener({ + channel: POST_WINDOW_FOCUS, + listenerCallback: ({ isFocused }) => setWindowFocus(isFocused) +}); diff --git a/src/render/components/messenger.vue b/src/render/components/messenger.vue index df7dc15..ad41e2e 100644 --- a/src/render/components/messenger.vue +++ b/src/render/components/messenger.vue @@ -31,7 +31,7 @@ import ConnectionStatus from "./connectionStatus.vue"; import { profile } from "@/render/shared/profile"; import { messages } from "@/render/shared/messages"; import useScroll from "@/render/composables/useScroll"; -import { postMessage } from "@/render/ipc"; +import { postMessage, postWindowFocus } from "@/render/ipc"; export default defineComponent({ name: "Messenger", @@ -46,6 +46,7 @@ export default defineComponent({ setup() { const onFocus = () => { + postWindowFocus({ isFocused: true }); postMessage({ intent: "focus", params: { "focus": true }, @@ -55,6 +56,7 @@ export default defineComponent({ } const onBlur = () => { + postWindowFocus({ isFocused: false }); postMessage({ intent: "focus", params: { "focus": false }, diff --git a/src/render/ipc.ts b/src/render/ipc.ts index b787831..e6e994c 100644 --- a/src/render/ipc.ts +++ b/src/render/ipc.ts @@ -65,7 +65,7 @@ export const postNavBar = (payload: string): void => ( * */ -export const postWindowBlur = (payload: { isFocused: boolean }): void => ( +export const postWindowFocus = (payload: { isFocused: boolean }): void => ( post('post-window-focus', payload) ); diff --git a/src/session.ts b/src/session.ts index be6fdd3..f379f88 100644 --- a/src/session.ts +++ b/src/session.ts @@ -5,7 +5,7 @@ import { config } from "@/config"; import useWebsockets from "./composables/useWebsockets"; import { backgroundMitt, ipcEmit } from "@/composables/useEmitter"; import { Notification } from 'electron'; -import { getWindow } from './store'; +import { getWindowFocus, getWindowOpen } from './store'; function showNotification (options: { title: string; @@ -40,8 +40,10 @@ const onMessageCallback = (payload: string) => { const body = message.body as Update; uiState.update(body); + const isFocused = getWindowFocus(); + const isOpen = getWindowOpen(); // show notification if window is not active - if (!getWindow()) { + if (!isFocused || !isOpen) { if (body.name === "add") { const data = body.data as Message; showNotification({ @@ -77,7 +79,7 @@ export const updateAppUI = (): void => { uiState.emit(); } -export function sendMessage(message: Raw | Request): void { +export function sendMessage(message: Raw | Request): void { send(message); } diff --git a/src/store.ts b/src/store.ts index 8ac280e..eab4cc7 100644 --- a/src/store.ts +++ b/src/store.ts @@ -4,9 +4,6 @@ const schema = { token: { type: 'string', }, - window: { - type: 'boolean' - } }; const store = new Store({ @@ -32,14 +29,19 @@ export const clearToken = (): void => { /* * Window state management * */ -export const setWindow = (state: boolean): void => { - store.set("window", state); +export const setWindowOpen = (state: boolean): void => { + store.set("window.isOpen", state); } -export const getWindow = (): boolean | undefined => { - return store.get("window"); +export const getWindowOpen = (): boolean | undefined => { + return store.get("window.isOpen"); } -export const clearWindow = (): void => { - store.delete("window"); +export const setWindowFocus = (state: boolean): void => { + store.set("window.isFocused", state); } + +export const getWindowFocus = (): boolean | undefined => { + return store.get("window.isFocused"); +} + diff --git a/src/types.ts b/src/types.ts index ba36056..51d1c68 100644 --- a/src/types.ts +++ b/src/types.ts @@ -125,3 +125,7 @@ interface IpcRendererEvent { payload: T | null; } +interface FocusPayload { + isFocused: boolean; +} +