Ban mesage
- Create type message could be use to send private message at any user - Create SendMessageUser message - Add sound when user receive ban message
This commit is contained in:
parent
88a1e899a3
commit
bf9dfcc835
11 changed files with 160 additions and 8 deletions
62
front/src/Administration/TypeMessage.ts
Normal file
62
front/src/Administration/TypeMessage.ts
Normal file
|
@ -0,0 +1,62 @@
|
|||
import {TypeMessageInterface} from "./UserMessageManager";
|
||||
import {HtmlUtils} from "../WebRtc/HtmlUtils";
|
||||
|
||||
export class Ban implements TypeMessageInterface {
|
||||
private nbSecond = 0;
|
||||
private maxNbSecond = 10;
|
||||
private titleMessage = 'IMPORTANT !';
|
||||
|
||||
showMessage(message: string): void {
|
||||
let div : HTMLDivElement = document.createElement('div');
|
||||
div.classList.add('modal-report-user');
|
||||
div.id = 'report-message-user';
|
||||
div.style.backgroundColor = '#000000e0';
|
||||
|
||||
let img : HTMLImageElement = document.createElement('img');
|
||||
img.src = 'resources/logos/report.svg';
|
||||
div.appendChild(img);
|
||||
|
||||
let title : HTMLParagraphElement = document.createElement('p');
|
||||
title.id = 'title-report-user';
|
||||
title.innerText = `${this.titleMessage} (${this.maxNbSecond})`;
|
||||
div.appendChild(title);
|
||||
|
||||
let p : HTMLParagraphElement = document.createElement('p');
|
||||
p.id = 'body-report-user'
|
||||
p.innerText = message;
|
||||
div.appendChild(p);
|
||||
|
||||
const mainSectionDiv = HtmlUtils.getElementByIdOrFail<HTMLDivElement>('main-container');
|
||||
mainSectionDiv.appendChild(div);
|
||||
|
||||
const reportMessageAudio = HtmlUtils.getElementByIdOrFail<HTMLAudioElement>('audio-webrtc-in');
|
||||
reportMessageAudio.play();
|
||||
|
||||
this.nbSecond = this.maxNbSecond;
|
||||
setTimeout((c) => {
|
||||
this.forMessage(title);
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
forMessage(title: HTMLParagraphElement){
|
||||
this.nbSecond -= 1;
|
||||
title.innerText = `${this.titleMessage} (${this.nbSecond})`;
|
||||
if(this.nbSecond > 0){
|
||||
setTimeout(() => {
|
||||
this.forMessage(title);
|
||||
}, 1000);
|
||||
}else{
|
||||
title.innerText = this.titleMessage;
|
||||
|
||||
let imgCancel : HTMLImageElement = document.createElement('img');
|
||||
imgCancel.id = 'cancel-report-user';
|
||||
imgCancel.src = 'resources/logos/close.svg';
|
||||
|
||||
const div = HtmlUtils.getElementByIdOrFail<HTMLDivElement>('report-message-user');
|
||||
div.appendChild(imgCancel);
|
||||
imgCancel.addEventListener('click', () => {
|
||||
div.remove();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
36
front/src/Administration/UserMessageManager.ts
Normal file
36
front/src/Administration/UserMessageManager.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
import {RoomConnection} from "../Connexion/RoomConnection";
|
||||
import * as TypeMessages from "./TypeMessage";
|
||||
|
||||
export interface TypeMessageInterface{
|
||||
showMessage(message: string) : void;
|
||||
};
|
||||
|
||||
export class UserMessageManager {
|
||||
|
||||
typeMessages : Map<string, TypeMessageInterface> = new Map<string, TypeMessageInterface>();
|
||||
|
||||
constructor(private Connection: RoomConnection) {
|
||||
let valueTypeMessageTab = Object.values(TypeMessages);
|
||||
Object.keys(TypeMessages).forEach((value: string, index: number) => {
|
||||
let typeMessageInstance : TypeMessageInterface = (new valueTypeMessageTab[index]() as TypeMessageInterface);
|
||||
this.typeMessages.set(value.toLowerCase(), typeMessageInstance);
|
||||
});
|
||||
this.initialise();
|
||||
}
|
||||
|
||||
initialise(){
|
||||
//receive signal to show message
|
||||
this.Connection.receiveUserMessage((type: string, message: string) => {
|
||||
this.showMessage(type, message);
|
||||
});
|
||||
}
|
||||
|
||||
showMessage(type: string, message: string){
|
||||
let classTypeMessage = this.typeMessages.get(type.toLowerCase());
|
||||
if(!classTypeMessage){
|
||||
console.error('Message unknown');
|
||||
return;
|
||||
}
|
||||
classTypeMessage.showMessage(message);
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue