diff --git a/js/utils.js b/js/utils.js deleted file mode 100644 index 1dbbc76..0000000 --- a/js/utils.js +++ /dev/null @@ -1,242 +0,0 @@ -/* ----------------------- */ -/* UTILITIES */ -/* ----------------------- */ - -const chatThreshhold = 50; -const chatContainer = document.querySelector('#chat'); -const currentLang = lang[getURLParam("language", 'ptbr')]; -const showPlatform = getURLParam("showPlatform", true); -const showAvatar = getURLParam("showAvatar", false); -const showTimestamps = getURLParam("showTimestamps", false); -const showBadges = getURLParam("showBadges", true); -const showPlatformStatistics = getURLParam("showPlatformStatistics", false); -const hideAfter = getURLParam("hideAfter", 0); -const ignoreChatters = getURLParam("ignoreChatters", ""); -const excludeCommands = getURLParam("excludeCommands", true); -const avatars = new Map(); - -const userColors = new Map(); - -const ignoreUserList = ignoreChatters.split(',').map(item => item.trim().toLowerCase()) || []; - - -async function addMessageToChat(userID, messageID, platform, data) { - - const html = DOMPurify.sanitize(` -
-
- - ${!data.shared ? '' : data.shared} - - ${showTimestamps == true ? ''+whatTimeIsIt()+'' : ''} - - ${showPlatform == true ? '' : '' } - - ${showAvatar == true ? '' : ''} - - ${showBadges == true ? ''+data.badges+'' : ''} - - ${data.userName}: - - ${!data.reply ? '' : data.reply} - - ${data.message} -
-
- `); - - chatContainer.insertAdjacentHTML('beforeend', html); - - const messageElement = document.getElementById(messageID); - - if (hideAfter > 0) { - setTimeout(function () { - messageElement.style.opacity = 0; - setTimeout(function () { - messageElement.remove(); - }, 1000); - }, Math.floor(hideAfter * 1000)); - } - - removeExtraChatMessages(); -} - - - -async function addEventToChat(userID, messageID, platform, data) { - - const html = DOMPurify.sanitize(` -
-
- ${!data.reply ? '' : data.reply} - - ${showPlatform == true ? '' : '  ' } - - - - ${data.userName} - ${data.message} - -
-
- `); - - chatContainer.insertAdjacentHTML('beforeend', html); - - const messageElement = document.getElementById(messageID); - - if (hideAfter > 0) { - setTimeout(function () { - messageElement.style.opacity = 0; - setTimeout(function () { - messageElement.remove(); - }, 1000); - }, Math.floor(hideAfter * 1000)); - } - - removeExtraChatMessages(); -} - - -const whatTimeIsIt = () => { - const now = new Date(); - const hours24 = now.getHours(); - const minutes = now.getMinutes().toString().padStart(2, '0'); - const ampm = hours24 >= 12 ? 'PM' : 'AM'; - const hours12 = (hours24 % 12) || 12; - return `${hours12}:${minutes} ${ampm}`; -}; - - -function removeExtraChatMessages() { - - const chatMessages = chatContainer.querySelectorAll('div.message').length; - - if (chatMessages > chatThreshhold) { - for (let i = 0; i < Math.floor(chatThreshhold/2); i++) { - chatContainer.removeChild(chatContainer.firstElementChild); - } - } -} - - -// Function to format large numbers (e.g., 1000 => '1K') -function formatNumber(num) { - if (num >= 1000000) { - let numStr = (num / 1000000).toFixed(1); - if (numStr.endsWith('.0')) { - numStr = numStr.slice(0, -2); - } - return numStr + 'M'; - } - else if (num >= 1000) { - let numStr = (num / 1000).toFixed(1); - if (numStr.endsWith('.0')) { - numStr = numStr.slice(0, -2); - } - return numStr + 'K'; - } - return num.toString(); -} - - -function formatCurrency(amount, currencyCode) { - return new Intl.NumberFormat(undefined, { - style: 'currency', - currency: currencyCode, - minimumFractionDigits: 0, - maximumFractionDigits: 2 - }).format(amount); -} - - - -function createRandomColor(platform, username) { - if (userColors.get(platform).has(username)) { - return userColors.get(platform).get(username); - } - else { - const randomColor = "hsl(" + Math.random() * 360 + ", 100%, 75%)"; - userColors.get(platform).set(username, randomColor); - return randomColor; - } -} - - -function createRandomString(length) { - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - let result = ""; - for (let i = 0; i < length; i++) { - result += chars.charAt(Math.floor(Math.random() * chars.length)); - } - return result; -} - -function getURLParam(param, defaultValue) { - const chatQueryString = window.location.search; - const urlParams = new URLSearchParams(chatQueryString); - const paramVar = urlParams.get(param); - - switch (paramVar) { - case 'true': - return true; - - case 'false': - return false; - - case null: - case undefined: - return defaultValue; - - default: - return paramVar; - } -} - - -const pushNotify = (data) => { - - const SimpleNotify = { - effect: 'fade', - speed: 500, - customClass: 'toasty', - customIcon: '', - showIcon: true, - showCloseButton: true, - autoclose: true, - autotimeout: 5000, - notificationsGap: null, - notificationsPadding: null, - type: 'outline', - position: 'x-center bottom', - customWrapper: '', - }; - - const mergedData = { - ...SimpleNotify, - ...data - } - - new Notify (mergedData); -} - -const notifyError = (err) => { - err.status = 'error'; - pushNotify(err); -} - -const notifyInfo = (info) => { - info.status = 'info'; - pushNotify(info); -} - -const notifyWarning = (warn) => { - warn.status = 'warning'; - pushNotify(warn); -} - - -const notifySuccess = (success) => { - success.status = 'success'; - pushNotify(success); -}