aboutsummaryrefslogtreecommitdiffstats
path: root/src/models/Service.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/Service.js')
-rw-r--r--src/models/Service.js44
1 files changed, 37 insertions, 7 deletions
diff --git a/src/models/Service.js b/src/models/Service.js
index 848a84aa2..e45c39564 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -134,6 +134,9 @@ export default class Service {
134 id: this.id, 134 id: this.id,
135 spellcheckerLanguage: this.spellcheckerLanguage, 135 spellcheckerLanguage: this.spellcheckerLanguage,
136 isDarkModeEnabled: this.isDarkModeEnabled, 136 isDarkModeEnabled: this.isDarkModeEnabled,
137 team: this.team,
138 url: this.url,
139 hasCustomIcon: this.hasCustomIcon,
137 }; 140 };
138 } 141 }
139 142
@@ -185,19 +188,24 @@ export default class Service {
185 return userAgent; 188 return userAgent;
186 } 189 }
187 190
188 initializeWebViewEvents({ handleIPCMessage, openWindow }) { 191 initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) {
192 const webContents = this.webview.getWebContents();
193
189 this.webview.addEventListener('ipc-message', e => handleIPCMessage({ 194 this.webview.addEventListener('ipc-message', e => handleIPCMessage({
190 serviceId: this.id, 195 serviceId: this.id,
191 channel: e.channel, 196 channel: e.channel,
192 args: e.args, 197 args: e.args,
193 })); 198 }));
194 199
195 this.webview.addEventListener('new-window', (event, url, frameName, options) => openWindow({ 200 this.webview.addEventListener('new-window', (event, url, frameName, options) => {
196 event, 201 console.log('open window', event, url, frameName, options);
197 url, 202 openWindow({
198 frameName, 203 event,
199 options, 204 url,
200 })); 205 frameName,
206 options,
207 });
208 });
201 209
202 this.webview.addEventListener('did-start-loading', (event) => { 210 this.webview.addEventListener('did-start-loading', (event) => {
203 debug('Did start load', this.name, event); 211 debug('Did start load', this.name, event);
@@ -231,6 +239,28 @@ export default class Service {
231 debug('Service crashed', this.name); 239 debug('Service crashed', this.name);
232 this.hasCrashed = true; 240 this.hasCrashed = true;
233 }); 241 });
242
243 webContents.on('login', (event, request, authInfo, callback) => {
244 // const authCallback = callback;
245 debug('browser login event', authInfo);
246 event.preventDefault();
247
248 if (authInfo.isProxy && authInfo.scheme === 'basic') {
249 debug('Sending service echo ping');
250 webContents.send('get-service-id');
251
252 debug('Received service id', this.id);
253
254 const ps = stores.settings.proxy[this.id];
255
256 if (ps) {
257 debug('Sending proxy auth callback for service', this.id);
258 callback(ps.user, ps.password);
259 } else {
260 debug('No proxy auth config found for', this.id);
261 }
262 }
263 });
234 } 264 }
235 265
236 initializeWebViewListener() { 266 initializeWebViewListener() {