aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/whatsapp/webview.js
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/whatsapp/webview.js')
-rw-r--r--recipes/whatsapp/webview.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/recipes/whatsapp/webview.js b/recipes/whatsapp/webview.js
new file mode 100644
index 0000000..263c543
--- /dev/null
+++ b/recipes/whatsapp/webview.js
@@ -0,0 +1,51 @@
1"use strict";
2
3const {
4 remote
5} = require('electron');
6
7const path = require('path');
8
9const webContents = remote.getCurrentWebContents();
10const {
11 session
12} = webContents;
13window.addEventListener('beforeunload', async () => {
14 try {
15 session.flushStorageData();
16 session.clearStorageData({
17 storages: ['appcache', 'serviceworkers', 'cachestorage', 'websql', 'indexdb']
18 });
19 const registrations = await window.navigator.serviceWorker.getRegistrations();
20 registrations.forEach(r => {
21 r.unregister();
22 console.log('ServiceWorker unregistered');
23 });
24 } catch (err) {
25 console.err(err);
26 }
27});
28
29module.exports = Franz => {
30 const getMessages = function getMessages() {
31 const elements = document.querySelectorAll("[class=_31gEB]");
32 var count = 0;
33 var indirectCount = 0;
34
35 for (var i = 0; i < elements.length; i += 1) {
36 var countValue = parseInt(elements[i].textContent || '0', 10);
37
38 if (elements[i].parentNode.previousElementSibling === null || elements[i].parentNode.previousElementSibling.querySelectorAll("[data-icon=muted]").length === 0) {
39 count += countValue;
40 }
41 else {
42 indirectCount += countValue;
43 }
44 }
45
46 Franz.setBadge(count, indirectCount);
47 };
48
49 Franz.injectCSS(path.join(__dirname, 'service.css'));
50 Franz.loop(getMessages);
51};