diff --git a/twitch/chatguessr.js b/twitch/chatguessr.js index d55aeac..b5d0629 100644 --- a/twitch/chatguessr.js +++ b/twitch/chatguessr.js @@ -1,7 +1,5 @@ (function() { - - function fetchSeed(id) { var HttpRequest = Packages.com.gmt2001.HttpRequest, HashMap = Packages.java.util.HashMap, @@ -164,7 +162,6 @@ }else if(action.equalsIgnoreCase('refresh')){ var newseed = GameHelper.fetchSeed(args[1]); }else if(action.equalsIgnoreCase('gg')){ - console.log("GOT: GG") sendData('guesses',JSON.stringify(guesses)); } } diff --git a/web/js/socketWrapper.js b/web/js/socketWrapper.js index 4af6132..405b939 100644 --- a/web/js/socketWrapper.js +++ b/web/js/socketWrapper.js @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2019 phantombot.tv + * Copyright (C) 2016-2021 phantombot.github.io/PhantomBot * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,61 +15,38 @@ * along with this program. If not, see . */ -//NOTE: this is straight copied from panel's index.js // Main socket and functions. -$(function() { - - - var helpers = {}; - - helpers.DEBUG_STATES = { - NONE: 0, - DEBUG: 1, - INFO: 2, - FORCE: 3 - }; - // Debug status. 0 = off | 1 = on. - helpers.DEBUG_STATE = (localStorage.getItem('phantombot_debug_state') !== null ? parseInt(localStorage.getItem('phantombot_debug_state')) : helpers.DEBUG_STATES.NONE); - // Debug types. - helpers.LOG_TYPE = helpers.DEBUG_STATES; - - /* - * @function Used to print debug messages in the console. - * - * @param {String} message - * @param {Number} type - */ - helpers.log = function(message, type) { - if (helpers.DEBUG_STATE === helpers.DEBUG_STATES.DEBUG || type === helpers.DEBUG_STATE || type === helpers.LOG_TYPE.FORCE) { - console.log('%c[PhantomBot Log]', 'color: #6441a5; font-weight: 900;', message); - } - }; - - /* - * @function Used to print error messages in the console. - * - * @param {String} message - * @param {Number} type - */ - helpers.logError = function(message, type) { - console.log('%c[PhantomBot Error]', 'color: red; font-weight: 900;', message); - }; - - - - - var webSocket = new ReconnectingWebSocket((getProtocol() === 'https://' || window.location.protocol === 'https:' ? 'wss://' : 'ws://') + 'twitchbot.helcel.net' + '/ws/panel', null, { reconnectInterval: 500 }), - callbacks = [], - listeners = [], - familyHandlers = {}, - socket = {}; +$(function () { + if (!helpers.isLocalPanel()) { + $.ajax( + { + type: 'GET', + url: 'https://' + helpers.getBotHost() + '/sslcheck', + crossDomain: true, + dataType: 'text', + async: false, + success: function (data) { + if (data === 'false') { + window.location = window.location.origin + window.location.pathname + 'login/#sslFail=true'; + } + }, + error: function () { + window.location = window.location.origin + window.location.pathname + 'login/#sslFail=true'; + } + } + ); + } + var webSocket = new ReconnectingWebSocket((window.location.protocol === 'https:' ? 'wss://' : 'ws://') + helpers.getBotHost() + '/ws/panel?target=' + helpers.getBotHost(), null, {reconnectInterval: 500}), + callbacks = [], + listeners = [], + socket = {}; /* * @function Used to send messages to the socket. This should be private to this script. * * @param {Object} message */ - var sendToSocket = function(message) { + var sendToSocket = function (message) { try { let json = JSON.stringify(message); @@ -95,7 +72,7 @@ $(function() { * @param {Function} callback * @param {Boolean} storeKey */ - var generateCallBack = function(id, tables, isUpdate, isArray, callback, storeKey) { + var generateCallBack = function (id, tables, isUpdate, isArray, callback, storeKey) { if (callbacks[id] !== undefined) { helpers.logError('Callback with id "' + id + '" exists already. Aborting update.', helpers.LOG_TYPE.FORCE); } else { @@ -105,12 +82,12 @@ $(function() { await: (tables.length === 0 ? 1 : tables.length), isUpdate: isUpdate, isArray: isArray, - func: function(e) { + func: function (e) { try { callback(e); } catch (ex) { // Line number won't be accurate, function will by anonymous, but we get the stack so it should be fine. - helpers.logError('Failed to run callback: ' + ex.stack, helpers.LOG_TYPE.FORCE); + helpers.logError('Failed to run callback: (' + ex.name + ') ' + ex.message + ' >> ' + ex.stack, helpers.LOG_TYPE.FORCE); } }, storeKey: storeKey, @@ -125,15 +102,15 @@ $(function() { * @param {String} listener_id * @param {Function} callback */ - socket.addListener = function(listener_id, callback) { + socket.addListener = function (listener_id, callback) { if (listeners[listener_id] === undefined) { - helpers.log('Adding listener with id ' + listener_id); - listeners[listener_id] = function(e) { + helpers.log('Added listener with id ' + listener_id); + listeners[listener_id] = function (e) { try { callback(e); } catch (ex) { // Line number won't be accurate, function will by anonymous, but we get the stack so it should be fine. - helpers.logError('Failed to run listener: ' + ex.stack, helpers.LOG_TYPE.FORCE); + helpers.logError('Failed to run listener: (' + ex.name + ') ' + ex.message + ' >> ' + ex.stack, helpers.LOG_TYPE.FORCE); } }; } @@ -144,29 +121,12 @@ $(function() { * * @param {String} listener_id */ - socket.removeListener = function(listener_id) { + socket.removeListener = function (listener_id) { if (listeners[listener_id] !== undefined) { delete listeners[listener_id]; } }; - socket.addFamilyHandler = function(familyName, callback) { - familyHandlers[familyName] = function(e) { - try { - callback(e); - } catch (ex) { - // Line number won't be accurate, function will by anonymous, but we get the stack so it should be fine. - helpers.logError('Failed to run family handler: ' + ex.stack, helpers.LOG_TYPE.FORCE); - } - }; - } - - socket.removeFamilyHandler = function(familyName) { - if (familyHandlers[familyName] !== undefined) { - delete listeners[familyName]; - } - }; - /* * @function Runs a bot commands as the bot in async, thus returning right away. * @@ -174,7 +134,7 @@ $(function() { * @param {String} command * @param {Function} callback */ - socket.sendCommand = function(callback_id, command, callback) { + socket.sendCommand = function (callback_id, command, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -191,7 +151,7 @@ $(function() { * @param {String} callback_id * @param {Function} callback */ - socket.getBotVersion = function(callback_id, callback) { + socket.getBotVersion = function (callback_id, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -208,7 +168,7 @@ $(function() { * @param {String} command * @param {Function} callback */ - socket.sendCommandSync = function(callback_id, command, callback) { + socket.sendCommandSync = function (callback_id, command, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -228,7 +188,7 @@ $(function() { * @param {Array} args * @param {Function} callback */ - socket.wsEvent = function(callback_id, script, argsString, args, callback) { + socket.wsEvent = function (callback_id, script, argsString, args, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -243,6 +203,16 @@ $(function() { }); }; + socket.getDiscordChannelList = function (callback_id, callback) { + // Genetate a callback. + socket.addListener(callback_id, callback); + + // Send event. + sendToSocket({ + discordchannellist: callback_id + }); + }; + /* * @function Updates a value in the database of the bot. * @@ -252,7 +222,7 @@ $(function() { * @param {String} value * @param {Function} callback */ - socket.updateDBValue = function(callback_id, table, key, value, callback) { + socket.updateDBValue = function (callback_id, table, key, value, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -274,7 +244,7 @@ $(function() { * @param {Object} dataObj {tables: [], keys: [], values: } * @param {Function} callback */ - socket.updateDBValues = function(callback_id, dataObj, callback) { + socket.updateDBValues = function (callback_id, dataObj, callback) { // Genetate a callback. generateCallBack(callback_id, dataObj.tables, true, false, callback); @@ -300,7 +270,7 @@ $(function() { * @param {String} value * @param {Function} callback */ - socket.incrDBValue = function(callback_id, table, key, value, callback) { + socket.incrDBValue = function (callback_id, table, key, value, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -324,7 +294,7 @@ $(function() { * @param {String} value * @param {Function} callback */ - socket.decrDBValue = function(callback_id, table, key, value, callback) { + socket.decrDBValue = function (callback_id, table, key, value, callback) { // Genetate a callback. generateCallBack(callback_id, [], true, false, callback); @@ -347,7 +317,7 @@ $(function() { * @param {String} key * @param {Function} callback */ - socket.getDBValue = function(callback_id, table, key, callback) { + socket.getDBValue = function (callback_id, table, key, callback) { // Genetate a callback. generateCallBack(callback_id, [], false, false, callback); @@ -369,11 +339,11 @@ $(function() { * @param {Function} callback * @param {Boolean} storeKey - Store the value with the key name from the DB. Default stores it as the table, thus making it only possible to query the table once. */ - socket.getDBValues = function(callback_id, dataObj, storeKey, callback) { + socket.getDBValues = function (callback_id, dataObj, storeKey, callback) { callback = (callback === undefined ? storeKey : callback); // Genetate a callback. - generateCallBack(callback_id, dataObj.tables, false, false, callback, (typeof storeKey === 'function' ? false : true)); + generateCallBack(callback_id, dataObj.tables, false, false, callback, (typeof storeKey !== 'function')); // Start sending the updates to the socket. for (let i = 0; i < dataObj.tables.length; i++) { @@ -397,7 +367,7 @@ $(function() { * @param {String} order * @param {Function} callback */ - socket.getDBTableValuesByOrder = function(callback_id, table, limit, offset, order, isNumber, callback) { + socket.getDBTableValuesByOrder = function (callback_id, table, limit, offset, order, isNumber, callback) { // Genetate a callback. generateCallBack(callback_id, [], false, true, callback); @@ -421,7 +391,7 @@ $(function() { * @param {String} table * @param {Function} callback */ - socket.getDBTableValues = function(callback_id, table, callback) { + socket.getDBTableValues = function (callback_id, table, callback) { // Genetate a callback. generateCallBack(callback_id, [], false, true, callback); @@ -441,7 +411,7 @@ $(function() { * @param {Array Object} tables [{table: 'a'}, {table: 'b'}] * @param {Function} callback */ - socket.getDBTablesValues = function(callback_id, tables, callback) { + socket.getDBTablesValues = function (callback_id, tables, callback) { // Genetate a callback. generateCallBack(callback_id, [], false, true, callback); @@ -460,7 +430,7 @@ $(function() { * @param {String} key * @param {Function} callback */ - socket.removeDBValue = function(callback_id, table, key, callback) { + socket.removeDBValue = function (callback_id, table, key, callback) { // Genetate a callback. generateCallBack(callback_id, [], false, true, callback); @@ -481,7 +451,7 @@ $(function() { * @param {Object} dataObj {tables: [], keys: []} * @param {Function} callback */ - socket.removeDBValues = function(callback_id, dataObj, callback) { + socket.removeDBValues = function (callback_id, dataObj, callback) { // Genetate a callback. generateCallBack(callback_id, dataObj.tables, false, true, callback); @@ -497,15 +467,40 @@ $(function() { } }; - // WebSocket events. + /* + * @function Sends a remote panel query. + * + * @param {String} query_id + * @param {String} query + * @param {Object} params + * @param {Function} callback + */ + socket.doRemote = function (query_id, query, params, callback) { + generateCallBack(query_id, [], false, true, callback); - socket.getReadyState = function() {return webSocket.readyState;} + sendToSocket({ + remote: true, + id: query_id, + query: query, + params: params + }); + }; + + socket.close = function () { + webSocket.close(1000); + }; + + // WebSocket events. /* * @function Called when the socket opens. */ - webSocket.onopen = function() { + webSocket.onopen = function () { helpers.log('Connection established with the websocket.', helpers.LOG_TYPE.FORCE); + // Restart Pace. + Pace.restart(); + // Remove all alerts. + toastr.remove(); // Auth with the socket. sendToSocket({ authenticate: getAuth() @@ -515,14 +510,16 @@ $(function() { /* * @function Socket calls when it closes */ - webSocket.onclose = function() { + webSocket.onclose = function () { helpers.logError('Connection lost with the websocket.', helpers.LOG_TYPE.FORCE); + // Add error toast. + toastr.error('Connection lost with the websocket.', '', {timeOut: 0}); }; /* * @function Socket calls when it gets message. */ - webSocket.onmessage = function(e) { + webSocket.onmessage = function (e) { try { helpers.log('Message from socket: ' + e.data, helpers.LOG_TYPE.DEBUG); @@ -537,6 +534,7 @@ $(function() { if (message.authresult !== undefined) { if (message.authresult === 'false') { helpers.logError('Failed to auth with the socket.', helpers.LOG_TYPE.FORCE); + toastr.error('Failed to auth with the socket.', '', {timeOut: 0}); } else { // This is to stop a reconnect loading the main page. if (helpers.isAuth === true) { @@ -545,26 +543,35 @@ $(function() { helpers.isAuth = true; } - // XXX: revent loading main page - //$.loadPage('dashboard', 'dashboard.html'); + sendToSocket({ + remote: true, + id: 'initLoad.panelSettings', + query: 'panelSettings' + }); } return; } + if (message.id !== undefined) { + if (message.id === 'initLoad.panelSettings') { + window.panelSettings.channelName = message.channelName; + window.panelSettings.displayName = message.displayName; + $.loadPage('dashboard', 'dashboard.html'); + helpers.getUserLogo(); + } + } + // Make sure this isn't a version request. if (message.versionresult !== undefined) { // Call the callback. callbacks[message.versionresult].func(message); // Delete the callback. delete callbacks[message.versionresult]; - } else if(message.query_id !== undefined) { - - // console.log("base got websocket with data"); - // console.log(e); + } else { // Handle callbacks. let callback = callbacks[message.query_id], - listener = listeners[message.query_id]; + listener = listeners[message.query_id]; if (callback !== undefined) { // Add our data to the callback array. @@ -594,8 +601,8 @@ $(function() { } if (message.query_id.indexOf('module_toggle') !== -1 || message.query_id.indexOf('module_status') !== -1 - || message.query_id.endsWith('module')) { - if (message.results.value == 'false') { + || message.query_id.endsWith('module')) { + if (message.results !== undefined && message.results.value == 'false') { $('.load-ajax').remove(); } } @@ -606,11 +613,6 @@ $(function() { // Call the listener. listener(message.results); } - } else if(message.eventFamily !== undefined) { - let handler = familyHandlers[message.eventFamily]; - if(handler !== undefined) { - handler(e) - } } } catch (ex) { // Line number won't be accurate, function will by anonymous, but we get the stack so it should be fine. @@ -622,4 +624,4 @@ $(function() { window.socket = socket; // Store all timers in here so we can destroy them. window.timers = []; -}); \ No newline at end of file +});