diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/services/tabs/TabItem.js | 7 | ||||
-rw-r--r-- | src/models/Service.ts | 20 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js index a996990b5..5b901f3bf 100644 --- a/src/components/services/tabs/TabItem.js +++ b/src/components/services/tabs/TabItem.js | |||
@@ -9,7 +9,7 @@ import injectSheet from 'react-jss'; | |||
9 | import ms from 'ms'; | 9 | import ms from 'ms'; |
10 | 10 | ||
11 | import { observable, autorun, reaction, makeObservable } from 'mobx'; | 11 | import { observable, autorun, reaction, makeObservable } from 'mobx'; |
12 | import { mdiExclamation } from '@mdi/js'; | 12 | import { mdiExclamation, mdiVolumeSource } from '@mdi/js'; |
13 | import ServiceModel from '../../../models/Service'; | 13 | import ServiceModel from '../../../models/Service'; |
14 | import { cmdOrCtrlShortcutKey, shiftKey, altKey } from '../../../environment'; | 14 | import { cmdOrCtrlShortcutKey, shiftKey, altKey } from '../../../environment'; |
15 | import globalMessages from '../../../i18n/globalMessages'; | 15 | import globalMessages from '../../../i18n/globalMessages'; |
@@ -350,6 +350,10 @@ class TabItem extends Component { | |||
350 | ); | 350 | ); |
351 | } | 351 | } |
352 | 352 | ||
353 | const mediaBadge = service.isMediaPlaying ? ( | ||
354 | <Icon icon={mdiVolumeSource} className="tab-item__icon" /> | ||
355 | ) : null; | ||
356 | |||
353 | return ( | 357 | return ( |
354 | <li | 358 | <li |
355 | className={classnames({ | 359 | className={classnames({ |
@@ -375,6 +379,7 @@ class TabItem extends Component { | |||
375 | )} | 379 | )} |
376 | {notificationBadge} | 380 | {notificationBadge} |
377 | {errorBadge} | 381 | {errorBadge} |
382 | {mediaBadge} | ||
378 | {IS_SERVICE_DEBUGGING_ENABLED && ( | 383 | {IS_SERVICE_DEBUGGING_ENABLED && ( |
379 | <> | 384 | <> |
380 | <div | 385 | <div |
diff --git a/src/models/Service.ts b/src/models/Service.ts index fb594a6f4..b44e081b7 100644 --- a/src/models/Service.ts +++ b/src/models/Service.ts | |||
@@ -124,6 +124,8 @@ export default class Service { | |||
124 | 124 | ||
125 | @observable proxy: string | null = null; | 125 | @observable proxy: string | null = null; |
126 | 126 | ||
127 | @observable isMediaPlaying: boolean = false; | ||
128 | |||
127 | @action _setAutoRun() { | 129 | @action _setAutoRun() { |
128 | if (!this.isEnabled) { | 130 | if (!this.isEnabled) { |
129 | this.webview = null; | 131 | this.webview = null; |
@@ -261,6 +263,14 @@ export default class Service { | |||
261 | this.hasCrashed = true; | 263 | this.hasCrashed = true; |
262 | } | 264 | } |
263 | 265 | ||
266 | @action _didMediaPlaying(): void { | ||
267 | this.isMediaPlaying = true; | ||
268 | } | ||
269 | |||
270 | @action _didMediaPaused(): void { | ||
271 | this.isMediaPlaying = false; | ||
272 | } | ||
273 | |||
264 | @computed get shareWithWebview(): object { | 274 | @computed get shareWithWebview(): object { |
265 | return { | 275 | return { |
266 | id: this.id, | 276 | id: this.id, |
@@ -494,6 +504,16 @@ export default class Service { | |||
494 | this.webview.send('found-in-page', result); | 504 | this.webview.send('found-in-page', result); |
495 | }); | 505 | }); |
496 | 506 | ||
507 | this.webview.addEventListener('media-started-playing', event => { | ||
508 | debug('Started Playing media', this.name, event); | ||
509 | this._didMediaPlaying(); | ||
510 | }); | ||
511 | |||
512 | this.webview.addEventListener('media-paused', event => { | ||
513 | debug('Stopped Playing media', this.name, event); | ||
514 | this._didMediaPaused(); | ||
515 | }); | ||
516 | |||
497 | webviewWebContents.on('login', (event, _, authInfo, callback) => { | 517 | webviewWebContents.on('login', (event, _, authInfo, callback) => { |
498 | // const authCallback = callback; | 518 | // const authCallback = callback; |
499 | debug('browser login event', authInfo); | 519 | debug('browser login event', authInfo); |