Notification & Camera

- Notification when user is first and not focus on the tab
- Camera focus when user is in discussion circle and back on tab with previous config camera settings
- Camera stay blur if user is in discussion circle and not back on the tab

# Conflicts:
#	front/src/WebRtc/MediaManager.ts
This commit is contained in:
Gregoire Parant 2021-05-07 01:37:05 +02:00
parent 0fd743bcac
commit 52b1c6733b
2 changed files with 36 additions and 2 deletions

View File

@ -141,6 +141,9 @@ export class MediaManager {
this.mySoundMeterElement.childNodes.forEach((value: ChildNode, index) => { this.mySoundMeterElement.childNodes.forEach((value: ChildNode, index) => {
this.mySoundMeterElement.children.item(index)?.classList.remove('active'); this.mySoundMeterElement.children.item(index)?.classList.remove('active');
});*/ });*/
//Check of ask notification navigator permission
this.getNotification();
} }
public updateScene(){ public updateScene(){
@ -790,9 +793,9 @@ export class MediaManager {
this.setTimeOutlastUpdateScene = setTimeout(() => { this.setTimeOutlastUpdateScene = setTimeout(() => {
const now = new Date(); const now = new Date();
//if last update is more of 10 sec //if last update is more of 10 sec
if( (now.getTime() - this.lastUpdateScene.getTime()) > 10000) { if( (now.getTime() - this.lastUpdateScene.getTime()) > 10000 && this.remoteVideo.size === 0) {
this.blurCamera(); this.blurCamera();
}else{ }else if((now.getTime() - this.lastUpdateScene.getTime()) <= 10000){
this.focusCamera(); this.focusCamera();
} }
this.checkActiveUser(); this.checkActiveUser();
@ -854,6 +857,32 @@ export class MediaManager {
elementChildre.classList.add('active'); elementChildre.classList.add('active');
}); });
} }
public getNotification(){
//Get notification
if (window.Notification && Notification.permission !== "granted") {
Notification.requestPermission().catch((err) => {
console.error(`Notification permission error`, err);
});
}
}
public createNotification(userName: string){
if(this.focused){
return;
}
if (window.Notification && Notification.permission === "granted") {
const title = 'WorkAdventure';
const options = {
body: `Hi! ${userName} wants to discuss with you, don't be afraid!`,
icon: '/resources/logos/logo-WA-min.png',
image: '/resources/logos/logo-WA-min.png',
badge: '/resources/logos/logo-WA-min.png',
};
new Notification(title, options);
//new Notification(`Hi! ${userName} wants to discuss with you, don't be afraid!`);
}
}
} }
export const mediaManager = new MediaManager(); export const mediaManager = new MediaManager();

View File

@ -158,6 +158,11 @@ export class SimplePeer {
this.sendLocalScreenSharingStreamToUser(user.userId); this.sendLocalScreenSharingStreamToUser(user.userId);
} }
}); });
//Create a notification for first user in circle discussion
if(this.PeerConnectionArray.size === 0){
mediaManager.createNotification(user.name??'');
}
this.PeerConnectionArray.set(user.userId, peer); this.PeerConnectionArray.set(user.userId, peer);
for (const peerConnectionListener of this.peerConnectionListeners) { for (const peerConnectionListener of this.peerConnectionListeners) {