Index: lib/notification.js |
diff --git a/lib/notification.js b/lib/notification.js |
index 51ed5091da72b4ceb6a87d21cd60a6e7fd1af124..90c89c07ba89c1912160aa94b714f238ebd86fcc 100644 |
--- a/lib/notification.js |
+++ b/lib/notification.js |
@@ -33,7 +33,8 @@ var EXPIRATION_INTERVAL = 1 * MILLIS_IN_DAY; |
var TYPE = { |
information: 0, |
question: 1, |
- critical: 2 |
+ relentless: 2, |
+ critical: 3 |
}; |
var showListeners = []; |
@@ -208,9 +209,21 @@ var Notification = exports.Notification = |
{ |
if (typeof notification.type === "undefined" || notification.type !== "critical") |
{ |
- let shown = Prefs.notificationdata.shown; |
- if (shown instanceof Array && shown.indexOf(notification.id) != -1) |
- continue; |
+ let shown; |
+ if (typeof Prefs.notificationdata.shown == "object") |
+ shown = Prefs.notificationdata.shown[notification.id]; |
+ |
+ if (typeof shown != "undefined") |
+ { |
+ if (typeof notification.interval == "number") |
+ { |
+ if (shown + notification.interval > Date.now()) |
+ continue; |
+ } |
+ else if (shown) |
+ continue; |
+ } |
+ |
if (Prefs.notifications_ignoredcategories.indexOf("*") != -1) |
continue; |
} |
@@ -287,14 +300,22 @@ var Notification = exports.Notification = |
*/ |
markAsShown: function(id) |
{ |
- var data = Prefs.notificationdata; |
+ let now = Date.now(); |
+ let data = Prefs.notificationdata; |
- if (!(data.shown instanceof Array)) |
- data.shown = []; |
- if (data.shown.indexOf(id) != -1) |
- return; |
+ if (data.shown instanceof Array) |
+ { |
+ let newShown = {}; |
+ for (let old_id of data.shown) |
Felix Dahlke
2017/01/12 16:39:49
Nit: Camel case rather than underscore please :)
wspee
2017/01/16 13:51:12
Done.
|
+ newShown[old_id] = now; |
+ data.shown = newShown; |
+ } |
+ |
+ if (typeof data.shown != "object") |
+ data.shown = {}; |
+ |
+ data.shown[id] = now; |
- data.shown.push(id); |
saveNotificationData(); |
}, |