diff --git a/package.json b/package.json index 1af082e3..cc65b03f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Calvin Montgomery", "name": "CyTube", "description": "Online media synchronizer and chat", - "version": "3.18.6", + "version": "3.18.7", "repository": { "url": "http://github.com/calzoneman/sync" }, diff --git a/templates/useroptions.pug b/templates/useroptions.pug index 0265c25e..cf60900f 100644 --- a/templates/useroptions.pug +++ b/templates/useroptions.pug @@ -113,6 +113,7 @@ mixin us-chat option(value="always") Always +rcheckbox("us-sendbtn", "Add a send button to chat") +rcheckbox("us-no-emotes", "Disable chat emotes") + +rcheckbox("us-strip-image", "Remove images from chat") mixin us-mod #us-mod.tab-pane diff --git a/www/js/data.js b/www/js/data.js index 440b0b38..da23942b 100644 --- a/www/js/data.js +++ b/www/js/data.js @@ -67,6 +67,7 @@ var FILTER_TO = 0; var NO_STORAGE = typeof localStorage == "undefined" || localStorage === null; var SOCKETIO_CONNECT_ERROR_COUNT = 0; var HAS_CONNECTED_BEFORE = false; +var IMAGE_MATCH = /]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/gi; function getOpt(k) { var v = NO_STORAGE ? readCookie(k) : localStorage.getItem(k); @@ -120,7 +121,8 @@ var USEROPTS = { secure_connection : getOrDefault("secure_connection", false), show_shadowchat : getOrDefault("show_shadowchat", false), emotelist_sort : getOrDefault("emotelist_sort", true), - no_emotes : getOrDefault("no_emotes", false) + no_emotes : getOrDefault("no_emotes", false), + strip_image : getOrDefault("strip_image", false) }; /* Backwards compatibility check */ diff --git a/www/js/util.js b/www/js/util.js index 11ca1072..d2bf2bd3 100644 --- a/www/js/util.js +++ b/www/js/util.js @@ -642,6 +642,7 @@ function showUserOptions() { $("#us-ping-sound").val(USEROPTS.boop); $("#us-sendbtn").prop("checked", USEROPTS.chatbtn); $("#us-no-emotes").prop("checked", USEROPTS.no_emotes); + $("#us-strip-image").prop("checked", USEROPTS.strip_image); $("#us-modflair").prop("checked", USEROPTS.modhat); $("#us-shadowchat").prop("checked", USEROPTS.show_shadowchat); @@ -675,6 +676,7 @@ function saveUserOptions() { USEROPTS.boop = $("#us-ping-sound").val(); USEROPTS.chatbtn = $("#us-sendbtn").prop("checked"); USEROPTS.no_emotes = $("#us-no-emotes").prop("checked"); + USEROPTS.strip_image = $("#us-strip-image").prop("checked"); if (CLIENT.rank >= 2) { USEROPTS.modhat = $("#us-modflair").prop("checked"); @@ -1433,6 +1435,16 @@ function sendVideoUpdate() { /* chat */ +function stripImages(msg){ + if (!USEROPTS.strip_image) { + return msg; + } + return msg.replace(IMAGE_MATCH, function(match,img){ + return CHANNEL.opts.enable_link_regex ? + ''+img+'' : img; + }); +} + function formatChatMessage(data, last) { // Backwards compat if (!data.meta || data.msgclass) { @@ -1452,6 +1464,7 @@ function formatChatMessage(data, last) { if (data.meta.forceShowName) skip = false; + data.msg = stripImages(data.msg); data.msg = execEmotes(data.msg); last.name = data.username; @@ -1519,8 +1532,8 @@ function addChatMessage(data) { if (data.meta.shadow && !USEROPTS.show_shadowchat) { return; } - var div = formatChatMessage(data, LASTCHAT); var msgBuf = $("#messagebuffer"); + var div = formatChatMessage(data, LASTCHAT); // Incoming: a bunch of crap for the feature where if you hover over // a message, it highlights messages from that user var safeUsername = data.username.replace(/[^\w-]/g, '\\$');