From 1cddb1341399ac8239997f7d51023a5bf8d85c73 Mon Sep 17 00:00:00 2001 From: duckietm Date: Fri, 15 Mar 2024 12:35:41 +0100 Subject: [PATCH] New: Chatcolor BEFORE USING REMOVE NODE_MODULES FIRST >yarn install; >yarn build --- src/api/room/widgets/ChatBubbleMessage.ts | 5 +- src/api/utils/RoomChatFormatter.ts | 156 ++++++++++++++---- .../chat-input/ChatInputColorSelectorView.tsx | 66 ++++++++ .../room/widgets/chat-input/ChatInputView.tsx | 60 +++---- .../widgets/chat/ChatWidgetMessageView.tsx | 2 +- src/hooks/rooms/widgets/useChatInputWidget.ts | 22 ++- src/hooks/rooms/widgets/useChatWidget.ts | 18 +- src/hooks/session/useSessionInfo.ts | 23 ++- .../src/api/nitro/session/IRoomSession.ts | 5 +- .../events/session/RoomSessionChatEvent.ts | 9 +- .../room/unit/chat/RoomUnitChatComposer.ts | 4 +- .../unit/chat/RoomUnitChatShoutComposer.ts | 4 +- .../room/unit/chat/RoomUnitChatParser.ts | 12 +- .../src/nitro/room/RoomMessageHandler.ts | 30 ++-- .../renderer/src/nitro/session/RoomSession.ts | 15 +- .../nitro/session/handler/RoomChatHandler.ts | 4 +- 16 files changed, 312 insertions(+), 123 deletions(-) create mode 100644 src/components/room/widgets/chat-input/ChatInputColorSelectorView.tsx diff --git a/src/api/room/widgets/ChatBubbleMessage.ts b/src/api/room/widgets/ChatBubbleMessage.ts index c9cede3..10ad546 100644 --- a/src/api/room/widgets/ChatBubbleMessage.ts +++ b/src/api/room/widgets/ChatBubbleMessage.ts @@ -24,10 +24,13 @@ export class ChatBubbleMessage public type: number = 0, public styleId: number = 0, public imageUrl: string = null, - public color: string = null + public color: string = null, + public chatColours: string = "" ) { this.id = ++ChatBubbleMessage.BUBBLE_COUNTER; + this.color = color; + this.chatColours = chatColours; } public get top(): number diff --git a/src/api/utils/RoomChatFormatter.ts b/src/api/utils/RoomChatFormatter.ts index 1c9329d..b66baeb 100644 --- a/src/api/utils/RoomChatFormatter.ts +++ b/src/api/utils/RoomChatFormatter.ts @@ -1,6 +1,4 @@ -import * as joypixels from 'emoji-toolkit'; - -const allowedColours: Map = new Map(); +export const allowedColours: Map = new Map(); allowedColours.set('r', 'red'); allowedColours.set('b', 'blue'); @@ -13,16 +11,114 @@ allowedColours.set('br', 'brown'); allowedColours.set('pr', 'purple'); allowedColours.set('pk', 'pink'); +allowedColours.set('black', 'black'); allowedColours.set('red', 'red'); -allowedColours.set('blue', 'blue'); -allowedColours.set('green', 'green'); -allowedColours.set('yellow', 'yellow'); -allowedColours.set('white', 'white'); +allowedColours.set('orangered', 'orangered'); allowedColours.set('orange', 'orange'); -allowedColours.set('cyan', 'cyan'); -allowedColours.set('brown', 'brown'); +allowedColours.set('yellow', 'yellow'); +allowedColours.set('yellowgreen', 'yellowgreen'); +allowedColours.set('green', 'green'); +allowedColours.set('seagreen', 'seagreen'); +allowedColours.set('teal', 'teal'); +allowedColours.set('blue', 'blue'); +allowedColours.set('darkblue', 'darkblue'); +allowedColours.set('indigo', 'indigo'); allowedColours.set('purple', 'purple'); -allowedColours.set('pink', 'pink'); +allowedColours.set('violet', 'violet'); +allowedColours.set('brown', 'brown'); +allowedColours.set('burlywood', 'burlywood'); +allowedColours.set('rosybrown', 'rosybrown'); +allowedColours.set('saddlebrown', 'saddlebrown'); +allowedColours.set('maroon', 'maroon'); +allowedColours.set('firebrick', 'firebrick'); +allowedColours.set('darkred', 'darkred'); +allowedColours.set('chocolate', 'chocolate'); +allowedColours.set('sienna', 'sienna'); +allowedColours.set('peru', 'peru'); +allowedColours.set('darkorange', 'darkorange'); +allowedColours.set('orange', 'orange'); +allowedColours.set('orangered', 'orangered'); +allowedColours.set('tomato', 'tomato'); +allowedColours.set('coral', 'coral'); +allowedColours.set('darkolivegreen', 'darkolivegreen'); +allowedColours.set('olive', 'olive'); +allowedColours.set('olivedrab', 'olivedrab'); +allowedColours.set('greenyellow', 'greenyellow'); +allowedColours.set('yellowgreen', 'yellowgreen'); +allowedColours.set('darkgreen', 'darkgreen'); +allowedColours.set('limegreen', 'limegreen'); +allowedColours.set('lime', 'lime'); +allowedColours.set('lawngreen', 'lawngreen'); +allowedColours.set('palegreen', 'palegreen'); +allowedColours.set('springgreen', 'springgreen'); +allowedColours.set('mediumseagreen', 'mediumseagreen'); +allowedColours.set('mediumaquamarine', 'mediumaquamarine'); +allowedColours.set('aquamarine', 'aquamarine'); +allowedColours.set('turquoise', 'turquoise'); +allowedColours.set('mediumturquoise', 'mediumturquoise'); +allowedColours.set('darkturquoise', 'darkturquoise'); +allowedColours.set('aqua', 'aqua'); +allowedColours.set('cyan', 'cyan'); +allowedColours.set('lightcyan', 'lightcyan'); +allowedColours.set('paleturquoise', 'paleturquoise'); +allowedColours.set('azure', 'azure'); +allowedColours.set('lightblue', 'lightblue'); +allowedColours.set('powderblue', 'powderblue'); +allowedColours.set('deepskyblue', 'deepskyblue'); +allowedColours.set('skyblue', 'skyblue'); +allowedColours.set('lightskyblue', 'lightskyblue'); +allowedColours.set('steelblue', 'steelblue'); +allowedColours.set('royalblue', 'royalblue'); +allowedColours.set('mediumslateblue', 'mediumslateblue'); +allowedColours.set('slateblue', 'slateblue'); +allowedColours.set('darkslateblue', 'darkslateblue'); +allowedColours.set('mediumpurple', 'mediumpurple'); +allowedColours.set('blueviolet', 'blueviolet'); +allowedColours.set('darkviolet', 'darkviolet'); +allowedColours.set('darkmagenta', 'darkmagenta'); +allowedColours.set('mediumvioletred', 'mediumvioletred'); +allowedColours.set('violetred', 'violetred'); +allowedColours.set('orchid', 'orchid'); +allowedColours.set('darkorchid', 'darkorchid'); +allowedColours.set('mediumorchid', 'mediumorchid'); +allowedColours.set('thistle', 'thistle'); +allowedColours.set('plum', 'plum'); +allowedColours.set('purple', 'purple'); +allowedColours.set('darkgrey', 'darkgrey'); +allowedColours.set('dimgray', 'dimgray'); +allowedColours.set('lightgrey', 'lightgrey'); +allowedColours.set('grey', 'grey'); +allowedColours.set('slategrey', 'slategrey'); +allowedColours.set('lightslategrey', 'lightslategrey'); +allowedColours.set('whitesmoke', 'whitesmoke'); +allowedColours.set('white', 'white'); +allowedColours.set('snow', 'snow'); +allowedColours.set('mistyrose', 'mistyrose'); +allowedColours.set('seashell', 'seashell'); +allowedColours.set('antiquewhite', 'antiquewhite'); +allowedColours.set('linen', 'linen'); +allowedColours.set('oldlace', 'oldlace'); +allowedColours.set('papayawhip', 'papayawhip'); +allowedColours.set('blanchedalmond', 'blanchedalmond'); +allowedColours.set('moccasin', 'moccasin'); +allowedColours.set('wheat', 'wheat'); +allowedColours.set('navajowhite', 'navajowhite'); +allowedColours.set('burlywood', 'burlywood'); +allowedColours.set('tan', 'tan'); +allowedColours.set('rosybrown', 'rosybrown'); +allowedColours.set('sandybrown', 'sandybrown'); +allowedColours.set('goldenrod', 'goldenrod'); +allowedColours.set('darkgoldenrod', 'darkgoldenrod'); +allowedColours.set('peru', 'peru'); +allowedColours.set('chocolate', 'chocolate'); +allowedColours.set('saddlebrown', 'saddlebrown'); +allowedColours.set('sienna', 'sienna'); +allowedColours.set('brown', 'brown'); + +export const sanitizeColor = (color: string): string | null => { + const sanitizedColor = allowedColours.get(color.toLowerCase()); + return sanitizedColor || null; +}; const encodeHTML = (str: string) => { @@ -42,35 +138,23 @@ const encodeHTML = (str: string) => export const RoomChatFormatter = (content: string) => { let result = ''; - if (content.toLowerCase().includes("onerror=")) - content = "Error al ejecutar"; - -if (content.toLowerCase().includes("onmouseover=")) - content = "Error al ejecutar"; content = encodeHTML(content); - content = (joypixels.shortnameToUnicode(content) as string) + content = content.replace(/\[tag\](.*?)\[\/tag\]/g, '$1'); - if(content.includes("giphy.com/media")){ - content = "

"; - } - - if(content.includes("https://int.habbeh.net/audios/")) - { - if(content.includes("https://int.habbeh.net/audios/errorpeso")) - { - content = "El audio es demasiado pesado"; - } - else - { - content = "