34 lines
843 B
TypeScript
34 lines
843 B
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { BrowserWindow } from 'electron';
|
|
import { app, ipcMain } from 'electron';
|
|
|
|
let bounceId = -1;
|
|
|
|
export function init(win: BrowserWindow): void {
|
|
ipcMain.on('bounce-app-icon-start', (_, isCritical = false) => {
|
|
if (app.dock) {
|
|
const type = isCritical ? 'critical' : 'informational';
|
|
bounceId = app.dock.bounce(type);
|
|
} else if (win && win.flashFrame) {
|
|
win.once('focus', () => {
|
|
win.flashFrame(false);
|
|
});
|
|
win.flashFrame(true);
|
|
}
|
|
});
|
|
|
|
ipcMain.on('bounce-app-icon-stop', () => {
|
|
if (app.dock) {
|
|
if (bounceId < 0) {
|
|
return;
|
|
}
|
|
|
|
app.dock.cancelBounce(bounceId);
|
|
bounceId = -1;
|
|
} else if (win && win.flashFrame) {
|
|
win.flashFrame(false);
|
|
}
|
|
});
|
|
}
|