Browse Source

Add the promised blacklist for timer granularity and passive listeners.

Also add our first happy blacklister, 'whatapp' looks to have some
sort of race condition when the timers aren't exactly as fast as it
expects.
pull/3202/head
TheGoddessInari 7 years ago
parent
commit
952d9f36cf
  1. 8
      app/model/ServiceList.js
  2. 1
      app/store/ServicesList.js
  3. 22
      app/ux/WebView.js
  4. 2
      app/view/add/Add.js

8
app/model/ServiceList.js

@ -44,6 +44,14 @@ Ext.define('Rambox.model.ServiceList', {
name: 'manual_notifications'
,type: 'boolean'
,defaultValue: false
},{
name: 'passive_event_listeners'
,type: 'boolean'
,defaultValue: true
},{
name: 'slowed_timers'
,type: 'boolean'
,defaultValue: true
},{
name: 'userAgent'
,type: 'string'

1
app/store/ServicesList.js

@ -29,6 +29,7 @@ Ext.define('Rambox.store.ServicesList', {
,url: 'https://web.whatsapp.com/'
,type: 'messaging'
,js_unread: `let checkUnread=()=>{const elements=document.querySelectorAll(".CxUIE, .unread");let count=0;for(let i of elements)0===i.querySelectorAll('*[data-icon="muted"]').length&&count++;rambox.updateBadge(count)};setInterval(checkUnread,1e3);`
,slowed_timers: false
},
{
id: 'slack'

22
app/ux/WebView.js

@ -450,16 +450,9 @@ Ext.define('Rambox.ux.WebView',{
css_inject += custom_css;
}
}
}
// Prevent Title blinking (some services have) and only allow when the title have an unread regex match: "(3) Title"
if ( Ext.getStore('ServicesList').getById(me.record.get('type')).get('titleBlink') ) {
var js_preventBlink = 'var originalTitle=document.title;Object.defineProperty(document,"title",{configurable:!0,set:function(a){null===a.match(new RegExp("[(]([0-9•]+)[)][ ](.*)","g"))&&a!==originalTitle||(document.getElementsByTagName("title")[0].innerHTML=a)},get:function(){return document.getElementsByTagName("title")[0].innerHTML}});';
js_inject += js_preventBlink;
}
// Use passive listeners by default
if (me.record.get('passive_event_listeners'))
let passive_event_listeners = Ext.getStore('ServicesList').getById(me.record.get('type')).get('passive_event_listeners');
if (passive_event_listeners && me.record.get('passive_event_listeners'))
{
// 3rdparty: This uses npm 'default-passive-events' 1.0.10 inline. Link to license:
// https://github.com/zzarcon/default-passive-events/blob/master/LICENSE
@ -468,11 +461,20 @@ Ext.define('Rambox.ux.WebView',{
}
// Use slowed timers by default
if (me.record.get('slowed_timers'))
let slowed_timers = Ext.getStore('ServicesList').getById(me.record.get('type')).get('slowed_timers');
if (slowed_timers && me.record.get('slowed_timers'))
{
const slowed_timers = `window.setTimeout=window.setTimeout;const __setTimeout=window.setTimeout;window.setTimeout=function(func,time){let a=time;return a<100&&(a=100),__setTimeout(func,a)};`;
js_inject += '{' + slowed_timers + '}';
}
}
// Prevent Title blinking (some services have) and only allow when the title have an unread regex match: "(3) Title"
if ( Ext.getStore('ServicesList').getById(me.record.get('type')).get('titleBlink') ) {
var js_preventBlink = 'var originalTitle=document.title;Object.defineProperty(document,"title",{configurable:!0,set:function(a){null===a.match(new RegExp("[(]([0-9•]+)[)][ ](.*)","g"))&&a!==originalTitle||(document.getElementsByTagName("title")[0].innerHTML=a)},get:function(){return document.getElementsByTagName("title")[0].innerHTML}});';
js_inject += js_preventBlink;
}
// Scroll always to top (bug)
js_inject += 'document.body.scrollTop=0;';

2
app/view/add/Add.js

@ -198,6 +198,7 @@ Ext.define('Rambox.view.add.Add',{
,checked: me.edit ? me.record.get('passive_event_listeners') : true
,uncheckedValue: false
,inputValue: true
,hidden: Ext.getStore('ServicesList').getById(me.record.get('type')).get('passive_event_listeners') === false
}
,{
xtype: 'checkbox'
@ -206,6 +207,7 @@ Ext.define('Rambox.view.add.Add',{
,checked: me.edit ? me.record.get('slowed_timers') : true
,uncheckedValue: false
,inputValue: true
,hidden: Ext.getStore('ServicesList').getById(me.record.get('type')).get('slowed_timers') === false
}
,{
xtype: 'checkbox'

Loading…
Cancel
Save