Allow users to strip images from chat.

This commit is contained in:
Xaekai 2016-07-11 22:19:39 -07:00
parent 97cb751573
commit aded7b1f38
4 changed files with 19 additions and 3 deletions

View File

@ -2,7 +2,7 @@
"author": "Calvin Montgomery", "author": "Calvin Montgomery",
"name": "CyTube", "name": "CyTube",
"description": "Online media synchronizer and chat", "description": "Online media synchronizer and chat",
"version": "3.18.6", "version": "3.18.7",
"repository": { "repository": {
"url": "http://github.com/calzoneman/sync" "url": "http://github.com/calzoneman/sync"
}, },

View File

@ -113,6 +113,7 @@ mixin us-chat
option(value="always") Always option(value="always") Always
+rcheckbox("us-sendbtn", "Add a send button to chat") +rcheckbox("us-sendbtn", "Add a send button to chat")
+rcheckbox("us-no-emotes", "Disable chat emotes") +rcheckbox("us-no-emotes", "Disable chat emotes")
+rcheckbox("us-strip-image", "Remove images from chat")
mixin us-mod mixin us-mod
#us-mod.tab-pane #us-mod.tab-pane

View File

@ -67,6 +67,7 @@ var FILTER_TO = 0;
var NO_STORAGE = typeof localStorage == "undefined" || localStorage === null; var NO_STORAGE = typeof localStorage == "undefined" || localStorage === null;
var SOCKETIO_CONNECT_ERROR_COUNT = 0; var SOCKETIO_CONNECT_ERROR_COUNT = 0;
var HAS_CONNECTED_BEFORE = false; var HAS_CONNECTED_BEFORE = false;
var IMAGE_MATCH = /<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>/gi;
function getOpt(k) { function getOpt(k) {
var v = NO_STORAGE ? readCookie(k) : localStorage.getItem(k); var v = NO_STORAGE ? readCookie(k) : localStorage.getItem(k);
@ -120,7 +121,8 @@ var USEROPTS = {
secure_connection : getOrDefault("secure_connection", false), secure_connection : getOrDefault("secure_connection", false),
show_shadowchat : getOrDefault("show_shadowchat", false), show_shadowchat : getOrDefault("show_shadowchat", false),
emotelist_sort : getOrDefault("emotelist_sort", true), 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 */ /* Backwards compatibility check */

View File

@ -642,6 +642,7 @@ function showUserOptions() {
$("#us-ping-sound").val(USEROPTS.boop); $("#us-ping-sound").val(USEROPTS.boop);
$("#us-sendbtn").prop("checked", USEROPTS.chatbtn); $("#us-sendbtn").prop("checked", USEROPTS.chatbtn);
$("#us-no-emotes").prop("checked", USEROPTS.no_emotes); $("#us-no-emotes").prop("checked", USEROPTS.no_emotes);
$("#us-strip-image").prop("checked", USEROPTS.strip_image);
$("#us-modflair").prop("checked", USEROPTS.modhat); $("#us-modflair").prop("checked", USEROPTS.modhat);
$("#us-shadowchat").prop("checked", USEROPTS.show_shadowchat); $("#us-shadowchat").prop("checked", USEROPTS.show_shadowchat);
@ -675,6 +676,7 @@ function saveUserOptions() {
USEROPTS.boop = $("#us-ping-sound").val(); USEROPTS.boop = $("#us-ping-sound").val();
USEROPTS.chatbtn = $("#us-sendbtn").prop("checked"); USEROPTS.chatbtn = $("#us-sendbtn").prop("checked");
USEROPTS.no_emotes = $("#us-no-emotes").prop("checked"); USEROPTS.no_emotes = $("#us-no-emotes").prop("checked");
USEROPTS.strip_image = $("#us-strip-image").prop("checked");
if (CLIENT.rank >= 2) { if (CLIENT.rank >= 2) {
USEROPTS.modhat = $("#us-modflair").prop("checked"); USEROPTS.modhat = $("#us-modflair").prop("checked");
@ -1433,6 +1435,16 @@ function sendVideoUpdate() {
/* chat */ /* chat */
function stripImages(msg){
if (!USEROPTS.strip_image) {
return msg;
}
return msg.replace(IMAGE_MATCH, function(match,img){
return CHANNEL.opts.enable_link_regex ?
'<a target="_blank" href="'+img+'">'+img+'</a>' : img;
});
}
function formatChatMessage(data, last) { function formatChatMessage(data, last) {
// Backwards compat // Backwards compat
if (!data.meta || data.msgclass) { if (!data.meta || data.msgclass) {
@ -1452,6 +1464,7 @@ function formatChatMessage(data, last) {
if (data.meta.forceShowName) if (data.meta.forceShowName)
skip = false; skip = false;
data.msg = stripImages(data.msg);
data.msg = execEmotes(data.msg); data.msg = execEmotes(data.msg);
last.name = data.username; last.name = data.username;
@ -1519,8 +1532,8 @@ function addChatMessage(data) {
if (data.meta.shadow && !USEROPTS.show_shadowchat) { if (data.meta.shadow && !USEROPTS.show_shadowchat) {
return; return;
} }
var div = formatChatMessage(data, LASTCHAT);
var msgBuf = $("#messagebuffer"); var msgBuf = $("#messagebuffer");
var div = formatChatMessage(data, LASTCHAT);
// Incoming: a bunch of crap for the feature where if you hover over // Incoming: a bunch of crap for the feature where if you hover over
// a message, it highlights messages from that user // a message, it highlights messages from that user
var safeUsername = data.username.replace(/[^\w-]/g, '\\$'); var safeUsername = data.username.replace(/[^\w-]/g, '\\$');