start adding showcase screen

This commit is contained in:
2024-06-27 18:39:06 +02:00
parent 1e11f1dc2e
commit 7a42ab8b4e
17 changed files with 882 additions and 504 deletions

View File

@@ -13,11 +13,15 @@ import { io, type Socket } from "socket.io-client"
class NotificationHandler {
socket: Socket;
roomName: string;
roomToken: string;
constructor () {
this.socket = io( localStorage.getItem( 'url' ) ?? '', {
autoConnect: false,
} );
this.roomName = '';
this.roomToken = '';
}
/**
@@ -25,19 +29,36 @@ class NotificationHandler {
* @param {string} roomName
* @returns {Promise<string>}
*/
connect ( roomName: string ): Promise<string> {
fetch( localStorage.getItem( 'url' ) + '/createRoomToken', { credentials: 'include' } ).then( res => {
if ( res.status === 200 ) {
res.json().then( json => {
} );
}
connect ( roomName: string ): Promise<void> {
return new Promise( ( resolve, reject ) => {
fetch( localStorage.getItem( 'url' ) + '/createRoomToken?roomName=' + roomName, { credentials: 'include' } ).then( res => {
if ( res.status === 200 ) {
res.text().then( text => {
this.roomToken = text;
this.roomName = roomName;
this.socket.connect();
this.socket.emit( 'create-room', {
name: this.roomName,
token: this.roomToken
}, ( res: { status: boolean, msg: string } ) => {
if ( res.status === true) {
resolve();
} else {
reject( 'ERR_ROOM_CONNECTING' );
}
} );
} );
} else if ( res.status === 409 ) {
reject( 'ERR_CONFLICT' );
} else {
reject( 'ERR_ROOM_CREATING' );
}
} );
} );
}
/**
* Description
* Emit an event
* @param {string} event The event to emit
* @param {any} data
* @returns {void}
@@ -46,12 +67,30 @@ class NotificationHandler {
this.socket.emit( event, data );
}
/**
* Register a listener function for an event
* @param {string} event The event to listen for
* @param {( data: any ) => void} cb The callback function / listener function
* @returns {void}
*/
registerListener ( event: string, cb: ( data: any ) => void ): void {
this.socket.on( event, cb );
}
/**
* Disconnect from the server
* @returns {any}
*/
disconnect (): void {
this.socket.disconnect();
this.socket.emit( 'create-room', {
name: this.roomName,
token: this.roomToken
}, ( res: { status: boolean, msg: string } ) => {
if ( !res.status ) {
alert( 'Unable to delete the room you were just in. The name will be blocked until the next server restart!' );
}
} );
}
}