aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/services/tabs/TabItem.js7
-rw-r--r--src/models/Service.ts20
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';
9import ms from 'ms'; 9import ms from 'ms';
10 10
11import { observable, autorun, reaction, makeObservable } from 'mobx'; 11import { observable, autorun, reaction, makeObservable } from 'mobx';
12import { mdiExclamation } from '@mdi/js'; 12import { mdiExclamation, mdiVolumeSource } from '@mdi/js';
13import ServiceModel from '../../../models/Service'; 13import ServiceModel from '../../../models/Service';
14import { cmdOrCtrlShortcutKey, shiftKey, altKey } from '../../../environment'; 14import { cmdOrCtrlShortcutKey, shiftKey, altKey } from '../../../environment';
15import globalMessages from '../../../i18n/globalMessages'; 15import 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);