2020-09-20 17:12:27 +02:00
|
|
|
import {HtmlUtils} from "../WebRtc/HtmlUtils";
|
2020-09-16 21:50:04 +02:00
|
|
|
import {Connection, GlobalMessageInterface} from "../Connection";
|
|
|
|
|
|
|
|
export const CLASS_CONSOLE_MESSAGE = 'main-console';
|
|
|
|
export const INPUT_CONSOLE_MESSAGE = 'input-send-text';
|
|
|
|
export const UPLOAD_CONSOLE_MESSAGE = 'input-upload-music';
|
|
|
|
export const BUTTON_CONSOLE_SEND = 'button-send';
|
|
|
|
export const INPUT_TYPE_CONSOLE = 'input-type';
|
|
|
|
|
|
|
|
export const AUDIO_TYPE = 'audio';
|
|
|
|
export const MESSAGE_TYPE = 'message';
|
|
|
|
|
|
|
|
export class ConsoleGlobalMessageManager {
|
|
|
|
|
|
|
|
private Connection: Connection;
|
2020-09-19 01:08:56 +02:00
|
|
|
private divMainConsole: HTMLDivElement;
|
|
|
|
private buttonMainConsole: HTMLDivElement;
|
|
|
|
private activeConsole: boolean = false;
|
2020-09-16 21:50:04 +02:00
|
|
|
|
|
|
|
constructor(Connection: Connection) {
|
|
|
|
this.Connection = Connection;
|
2020-09-19 01:08:56 +02:00
|
|
|
this.buttonMainConsole = document.createElement('div');
|
|
|
|
this.divMainConsole = document.createElement('div');
|
2020-09-16 21:50:04 +02:00
|
|
|
this.initialise();
|
|
|
|
}
|
|
|
|
|
2020-09-19 01:08:56 +02:00
|
|
|
initialise() {
|
2020-09-20 17:12:27 +02:00
|
|
|
const buttonText = document.createElement('p');
|
2020-09-16 21:50:04 +02:00
|
|
|
buttonText.innerText = 'Console';
|
|
|
|
|
2020-09-19 01:08:56 +02:00
|
|
|
this.buttonMainConsole.appendChild(buttonText);
|
|
|
|
this.buttonMainConsole.addEventListener('click', () => {
|
|
|
|
if(this.activeConsole){
|
|
|
|
this.disabled();
|
|
|
|
}else{
|
|
|
|
this.active();
|
|
|
|
}
|
|
|
|
});
|
2020-09-16 21:50:04 +02:00
|
|
|
|
2020-09-19 01:08:56 +02:00
|
|
|
this.divMainConsole.className = CLASS_CONSOLE_MESSAGE;
|
|
|
|
this.divMainConsole.appendChild(this.buttonMainConsole);
|
|
|
|
|
|
|
|
this.createTextMessagePart();
|
2020-09-16 21:50:04 +02:00
|
|
|
|
|
|
|
const mainSectionDiv = HtmlUtils.getElementByIdOrFail<HTMLDivElement>('main-container');
|
2020-09-19 01:08:56 +02:00
|
|
|
mainSectionDiv.appendChild(this.divMainConsole);
|
|
|
|
}
|
|
|
|
|
|
|
|
createTextMessagePart(){
|
|
|
|
const input = document.createElement('textarea');
|
|
|
|
this.divMainConsole.appendChild(input);
|
|
|
|
input.id = INPUT_CONSOLE_MESSAGE;
|
|
|
|
const buttonSend = document.createElement('button');
|
|
|
|
|
|
|
|
buttonSend.innerText = 'Envoyer';
|
|
|
|
buttonSend.addEventListener('click', (event: MouseEvent) => {
|
|
|
|
this.sendMessage();
|
|
|
|
this.disabled();
|
|
|
|
});
|
|
|
|
this.divMainConsole.appendChild(buttonSend);
|
|
|
|
|
|
|
|
const typeConsole = document.createElement('input');
|
|
|
|
typeConsole.id = INPUT_TYPE_CONSOLE;
|
|
|
|
typeConsole.value = MESSAGE_TYPE;
|
|
|
|
typeConsole.type = 'hidden';
|
|
|
|
this.divMainConsole.appendChild(typeConsole);
|
2020-09-16 21:50:04 +02:00
|
|
|
}
|
|
|
|
|
2020-09-19 01:08:56 +02:00
|
|
|
sendMessage(){
|
|
|
|
const inputType = HtmlUtils.getElementByIdOrFail<HTMLInputElement>(INPUT_TYPE_CONSOLE);
|
|
|
|
if(AUDIO_TYPE !== inputType.value && MESSAGE_TYPE !== inputType.value){
|
2020-09-16 21:50:04 +02:00
|
|
|
throw "Error event type";
|
|
|
|
}
|
2020-09-20 19:01:21 +02:00
|
|
|
if(AUDIO_TYPE === inputType.value){
|
2020-09-20 17:12:27 +02:00
|
|
|
return this.sendAudioMessage();
|
|
|
|
}
|
|
|
|
return this.sendTextMessage();
|
|
|
|
}
|
|
|
|
|
|
|
|
private sendTextMessage(){
|
|
|
|
const inputText = HtmlUtils.getElementByIdOrFail<HTMLTextAreaElement>(INPUT_CONSOLE_MESSAGE);
|
2020-09-16 21:50:04 +02:00
|
|
|
let GlobalMessage : GlobalMessageInterface = {
|
|
|
|
id: 1,
|
2020-09-19 01:08:56 +02:00
|
|
|
message: inputText.value,
|
2020-09-20 17:12:27 +02:00
|
|
|
type: MESSAGE_TYPE
|
2020-09-16 21:50:04 +02:00
|
|
|
};
|
2020-09-19 01:08:56 +02:00
|
|
|
inputText.value = '';
|
2020-09-16 21:50:04 +02:00
|
|
|
this.Connection.emitGlobalMessage(GlobalMessage);
|
|
|
|
}
|
2020-09-19 01:08:56 +02:00
|
|
|
|
2020-09-20 17:12:27 +02:00
|
|
|
private async sendAudioMessage(){
|
2020-09-20 19:01:21 +02:00
|
|
|
const inputAudio = HtmlUtils.getElementByIdOrFail<HTMLInputElement>(UPLOAD_CONSOLE_MESSAGE);
|
|
|
|
const selectedFile = inputAudio.files ? inputAudio.files[0] : null;
|
|
|
|
if(!selectedFile){
|
|
|
|
throw 'no file selected';
|
|
|
|
}
|
|
|
|
|
|
|
|
const fd = new FormData();
|
|
|
|
fd.append('file', selectedFile);
|
|
|
|
let res = await this.Connection.uploadAudio(fd);
|
2020-09-20 17:12:27 +02:00
|
|
|
|
|
|
|
let GlobalMessage : GlobalMessageInterface = {
|
|
|
|
id: res.id,
|
2020-09-20 19:01:21 +02:00
|
|
|
message: res.path,
|
2020-09-20 17:12:27 +02:00
|
|
|
type: MESSAGE_TYPE
|
|
|
|
};
|
|
|
|
inputAudio.value = '';
|
|
|
|
this.Connection.emitGlobalMessage(GlobalMessage);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2020-09-19 01:08:56 +02:00
|
|
|
active(){
|
|
|
|
this.activeConsole = true;
|
|
|
|
this.divMainConsole.style.top = '0';
|
|
|
|
}
|
|
|
|
|
|
|
|
disabled(){
|
|
|
|
this.activeConsole = false;
|
|
|
|
this.divMainConsole.style.top = '-80%';
|
|
|
|
}
|
2020-09-16 21:50:04 +02:00
|
|
|
}
|