Browse Source

Update custom CSS injection with a checkbox for injecting via JS.

The JS version will handle iframes in a heavy-handed manner
for services that might need it such as gitter.
pull/3202/head
TheGoddessInari 7 years ago
parent
commit
afe5445c10
  1. 4
      app/model/Service.js
  2. 1
      app/store/Services.js
  3. 45
      app/ux/WebView.js
  4. 8
      app/view/add/Add.js
  5. 2
      app/view/add/AddController.js
  6. 1
      app/view/main/MainController.js

4
app/model/Service.js

@ -69,6 +69,10 @@ Ext.define('Rambox.model.Service', {
name: 'custom_css' name: 'custom_css'
,type: 'string' ,type: 'string'
,defaultValue: '' ,defaultValue: ''
},{
name: 'custom_css_complex'
,type: 'boolean'
,defaultValue: false
},{ },{
name: 'zoomLevel' name: 'zoomLevel'
,type: 'number' ,type: 'number'

1
app/store/Services.js

@ -39,6 +39,7 @@ Ext.define('Rambox.store.Services', {
,muted: service.get('muted') ,muted: service.get('muted')
,includeInGlobalUnreadCounter: service.get('includeInGlobalUnreadCounter') ,includeInGlobalUnreadCounter: service.get('includeInGlobalUnreadCounter')
,displayTabUnreadCounter: service.get('displayTabUnreadCounter') ,displayTabUnreadCounter: service.get('displayTabUnreadCounter')
,custom_css_complex: service.get('custom_css_complex')
,enabled: service.get('enabled') ,enabled: service.get('enabled')
,record: service ,record: service
,tabConfig: { ,tabConfig: {

45
app/ux/WebView.js

@ -399,6 +399,25 @@ Ext.define('Rambox.ux.WebView',{
e.preventDefault(); e.preventDefault();
}); });
function JSapplyCSS()
{
if ( me.record ) {
let custom_css_complex = me.record.get('custom_css_complex');
if (custom_css_complex == true) {
let custom_css = Ext.getStore('ServicesList').getById(me.record.get('type')).get('custom_css');
custom_css = custom_css + me.record.get('custom_css');
if ( custom_css !== '' ) {
console.groupCollapsed(me.record.get('type').toUpperCase() + ' - Injected Custom CSS via JS');
console.info(me.type);
console.log(custom_css);
let js_before = '{let mystyle=`';
let js_after = '`,mycss=document.createElement("style");mycss.type="text/css",mycss.styleSheet?mycss.styleSheet.cssText=mystyle:mycss.appendChild(document.createTextNode(mystyle));let myDocHead=document.head;myDocHead.boxStyled||(myDocHead.appendChild(mycss),myDocHead.boxStyled=!0);let myframes=document.getElementsByTagName("iframe");for(let myframe of myframes){let mydocument,mydochead=(myframe.contentDocument||myframe.contentWindow.document).head;if(!mydochead.boxStyled){let myclonedcss=mycss.cloneNode(deep=!0);mydochead.appendChild(myclonedcss),mydochead.boxStyled=!0}}}';
webview.executeJavaScript(js_before + custom_css + js_after);
}
}
}
}
webview.addEventListener("dom-ready", function(e) { webview.addEventListener("dom-ready", function(e) {
// Mute Webview // Mute Webview
if ( me.record.get('muted') || localStorage.getItem('locked') || JSON.parse(localStorage.getItem('dontDisturb')) ) me.setAudioMuted(true, true); if ( me.record.get('muted') || localStorage.getItem('locked') || JSON.parse(localStorage.getItem('dontDisturb')) ) me.setAudioMuted(true, true);
@ -415,14 +434,16 @@ Ext.define('Rambox.ux.WebView',{
console.log(js_unread); console.log(js_unread);
js_inject += js_unread; js_inject += js_unread;
} }
let custom_css_complex = me.record.get('custom_css_complex');
var custom_css = Ext.getStore('ServicesList').getById(me.record.get('type')).get('custom_css'); if (custom_css_complex === false) {
custom_css = custom_css + me.record.get('custom_css'); let custom_css = Ext.getStore('ServicesList').getById(me.record.get('type')).get('custom_css');
if ( custom_css !== '' ) { custom_css = custom_css + me.record.get('custom_css');
console.groupCollapsed(me.record.get('type').toUpperCase() + ' - Injected Custom CSS'); if ( custom_css !== '' ) {
console.info(me.type); console.groupCollapsed(me.record.get('type').toUpperCase() + ' - Injected Custom CSS');
console.log(custom_css); console.info(me.type);
css_inject += custom_css; console.log(custom_css);
css_inject += custom_css;
}
} }
} }
@ -459,6 +480,14 @@ Ext.define('Rambox.ux.WebView',{
webview.insertCSS(css_inject); webview.insertCSS(css_inject);
}); });
webview.addEventListener('load-commit', function(url, isMainFrame) {
JSapplyCSS();
});
webview.addEventListener('did-frame-finish-load', function(event, isMainFrame, frameProcessId, frameRoutingId) {
JSapplyCSS();
});
webview.addEventListener('ipc-message', function(event) { webview.addEventListener('ipc-message', function(event) {
var channel = event.channel; var channel = event.channel;
switch (channel) { switch (channel) {

8
app/view/add/Add.js

@ -245,6 +245,14 @@ Ext.define('Rambox.view.add.Add',{
,height: 120 ,height: 120
,style: 'font-family: Consolas, "Lucida Console", Monaco, monospace' ,style: 'font-family: Consolas, "Lucida Console", Monaco, monospace'
}, },
{
xtype: 'checkbox'
,boxLabel: 'Inject CSS via JS'
,name: 'custom_css_complex'
,value: me.edit ? me.record.get('custom_css_complex') : false
,inputValue: true
,uncheckedValue: false
},
{ {
xtype: 'textarea' xtype: 'textarea'
,fieldLabel: 'Custom CSS' ,fieldLabel: 'Custom CSS'

2
app/view/add/AddController.js

@ -41,6 +41,7 @@ Ext.define('Rambox.view.add.AddController', {
,trust: formValues.trust ,trust: formValues.trust
,js_unread: formValues.js_unread ,js_unread: formValues.js_unread
,custom_css: formValues.custom_css ,custom_css: formValues.custom_css
,custom_css_complex: formValues.custom_css_complex
}); });
var view = Ext.getCmp('tab_'+win.record.get('id')); var view = Ext.getCmp('tab_'+win.record.get('id'));
@ -97,6 +98,7 @@ Ext.define('Rambox.view.add.AddController', {
,trust: formValues.trust ,trust: formValues.trust
,js_unread: formValues.js_unread ,js_unread: formValues.js_unread
,custom_css: formValues.custom_css ,custom_css: formValues.custom_css
,custom_css_complex: formValues.custom_css_complex
}); });
service.save(); service.save();
Ext.getStore('Services').add(service); Ext.getStore('Services').add(service);

1
app/view/main/MainController.js

@ -106,6 +106,7 @@ Ext.define('Rambox.view.main.MainController', {
,muted: rec.get('muted') ,muted: rec.get('muted')
,includeInGlobalUnreadCounter: rec.get('includeInGlobalUnreadCounter') ,includeInGlobalUnreadCounter: rec.get('includeInGlobalUnreadCounter')
,displayTabUnreadCounter: rec.get('displayTabUnreadCounter') ,displayTabUnreadCounter: rec.get('displayTabUnreadCounter')
,custom_css_complex: rec.get('custom_css_complex')
,enabled: rec.get('enabled') ,enabled: rec.get('enabled')
,record: rec ,record: rec
,hidden: hideTab ,hidden: hideTab

Loading…
Cancel
Save