Files
Undecked/Frontend/pages/home/ts/Communication.ts
2023-08-29 19:55:48 +02:00

76 lines
1.9 KiB
TypeScript

declare var ce: (
type: string,
classList?: string | string[],
attributes?: { [key: string]: string },
innerText?: string,
innerHTML?: string
) => HTMLElement;
declare var UndeckedNotification: (message: string, type?: 'info' | 'error', time?: number) => void;
declare var io: any;
var responseToken = Math.random().toString(16).substr(2, 8);
var socket = io('/');
socket.on('connect', () => {
console.log('Connected to server');
socket.emit('init', 'home');
});
var fontSizeRatio: number = null;
var renderQuality: number = null;
socket.on('quality', (quality: number) => {
document.querySelectorAll('canvas.ready').forEach((canvas: HTMLCanvasElement) => {
canvas.width = quality;
canvas.height = quality;
var context = canvas.getContext('2d');
context.textBaseline = 'middle';
context.textAlign = 'center';
});
renderQuality = quality;
fontSizeRatio = quality / 100;
});
socket.on('pagelist', (pagelist: PageListItem[]) => {
(function render() {
if (fontSizeRatio != null) PageList.render(pagelist);
else setTimeout(render, 100);
})();
});
socket.on('connectedlist', (connected: ConnectedList[]) => Connections.renderConnected(connected));
socket.on('page', (query: string, ...args: any[]) => {
switch (query) {
case 'updatename':
var pageID: string = args[0];
var newName: string = args[1];
PageList.updateName(pageID, newName);
break;
case 'updatekey':
var pageID: string = args[0];
var x: string = args[1];
var y: string = args[2];
var key: Page_Key = args[3];
var returnResponseToken: string = args[4];
if (PageHandler.currentPageID == pageID) {
if (PageHandler.currentPage.keys[y] != undefined && PageHandler.currentPage.keys[y][x] != undefined)
PageHandler.currentPage.keys[y][x] = key;
if (responseToken != returnResponseToken) {
KeyHandler.render(x, y, key);
if (Editor.currentKey != undefined && Editor.currentKey.id == key.id) Editor.open(x, y, key);
}
}
break;
}
});