diff options
Diffstat (limited to 'src/models/Service.js')
-rw-r--r-- | src/models/Service.js | 44 |
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() { |