Skip to content

Commit f912726

Browse files
author
Dmitry Yadrikhinsky
committed
Badge
1 parent 62203dd commit f912726

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

src/main.dev.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import path from 'path';
1414
import { app, BrowserWindow, shell } from 'electron';
1515
import { autoUpdater } from 'electron-updater';
1616
import log from 'electron-log';
17+
import Badge from 'electron-windows-badge';
1718
import MenuBuilder from './menu';
1819

1920
console.log('Working path:', app.getAppPath());
@@ -87,6 +88,10 @@ const createWindow = async () => {
8788
contextIsolation: false,
8889
},
8990
});
91+
new Badge(mainWindow, {
92+
fontColor: '#F14236',
93+
color: '#F14236',
94+
});
9095

9196
mainWindow.loadURL(`file://${__dirname}/index.html`);
9297

src/services/BadgeService.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { ipcRenderer } from 'electron';
2+
3+
export default class BadgeService {
4+
static setBadge(showBadge: boolean) {
5+
ipcRenderer.sendSync('update-badge', showBadge ? 1 : null);
6+
}
7+
}

src/services/tasks/TaskStore.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { makeAutoObservable } from 'mobx';
2+
import { ipcRenderer } from 'electron';
23

34
import TaskService from './TaskService';
45
import TaskModel, { ITimeRangeModel } from '../../models/TaskModel';
56
import TasksByProject from '../../models/TasksByProject';
67
import TreeModelStoreHelper from '../../base/TreeModelStoreHelper';
8+
import BadgeService from '../BadgeService';
79

810
export default class TaskStore {
911
tasks: TasksByProject = {};
@@ -118,7 +120,7 @@ export default class TaskStore {
118120

119121
restore() {
120122
this.tasks = this.tasksService.getAll();
121-
this.findActiveTask();
123+
this.findAndSetActiveTask();
122124
this.setupReminder(this.activeTask);
123125
}
124126

@@ -146,15 +148,14 @@ export default class TaskStore {
146148
this.tasksService.save(this.tasks);
147149
}
148150

149-
private findActiveTask() {
150-
Object.keys(this.tasks).find((projectId) => {
151-
const found = this.findActiveTaskRecursive(this.tasks[projectId]);
151+
private findAndSetActiveTask() {
152+
for (const tasks of Object.values(this.tasks)) {
153+
const found = this.findActiveTaskRecursive(tasks);
152154
if (found) {
153155
this.activeTask = found;
154-
return true;
156+
break;
155157
}
156-
return false;
157-
});
158+
}
158159
}
159160

160161
private findActiveTaskRecursive(tasks: TaskModel[]): TaskModel | undefined {
@@ -179,6 +180,7 @@ export default class TaskStore {
179180
clearInterval(this.interval);
180181
}
181182
if (task) {
183+
BadgeService.setBadge(true);
182184
console.log('Setup: Task in progress');
183185
this.interval = setInterval(() => {
184186
console.log('Task in progress');
@@ -187,6 +189,7 @@ export default class TaskStore {
187189
});
188190
}, 40 * 60 * 1000);
189191
} else {
192+
BadgeService.setBadge(false);
190193
console.log('Setup: No tasks in progress');
191194
this.interval = setInterval(() => {
192195
console.log('No tasks in progress');

0 commit comments

Comments
 (0)