From 6cb585d7d4ded40df23d8a81cc52be8f632c9540 Mon Sep 17 00:00:00 2001 From: SirStendec Date: Tue, 27 Aug 2019 16:18:12 -0400 Subject: [PATCH] 4.9.4 * Added: Room Actions can now be filtered based on the chat being in Followers-Only Mode or R9K Mode. * Changed: Custom tool-tips for actions now support variables. Time-out and ban reasons do as well. Text labels do not. * Fixed: Chat messages from Twitch Extensions not displaying. --- package.json | 2 +- src/modules/chat/actions/index.jsx | 8 +-- src/modules/chat/actions/types.jsx | 12 ++++- .../main_menu/components/action-editor.vue | 54 +++++++++++++++++++ .../main_menu/components/chat-actions.vue | 42 ++++++++++++++- .../twitch-twilight/modules/chat/index.js | 33 ++++++++++++ .../twitch-twilight/modules/chat/input.jsx | 6 ++- .../twitch-twilight/modules/chat/line.js | 2 +- styles/widgets.scss | 4 ++ 9 files changed, 154 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 43cca7f4..136ee5a4 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "frankerfacez", "author": "Dan Salvato LLC", - "version": "4.9.3", + "version": "4.9.4", "description": "FrankerFaceZ is a Twitch enhancement suite.", "license": "Apache-2.0", "scripts": { diff --git a/src/modules/chat/actions/index.jsx b/src/modules/chat/actions/index.jsx index f49bc475..485c3691 100644 --- a/src/modules/chat/actions/index.jsx +++ b/src/modules/chat/actions/index.jsx @@ -219,7 +219,7 @@ export default class Actions extends Module { return `Error: The "${data.action}" action provider does not have tooltip support.`; if ( data.tip && data.tip.length ) - return data.tip; + return this.replaceVariables(data.tip, data); return maybe_call(data.definition.tooltip, this, data, target, tip); } @@ -448,7 +448,9 @@ export default class Actions extends Module { (disp.staff != null && disp.staff !== (current_user ? !!current_user.staff : false)) || (disp.emoteOnly != null && disp.emoteOnly !== current_room.emoteOnly) || (disp.slowMode != null && disp.slowMode !== current_room.slowMode) || - (disp.subsMode != null && disp.subsMode !== current_room.subsMode) ) + (disp.subsMode != null && disp.subsMode !== current_room.subsMode) || + (disp.r9kMode != null && disp.r9kMode !== current_room.r9kMode) || + (disp.followersOnly != null && disp.followersOnly !== current_room.followersOnly) ) continue; const has_color = def.colored && ap.color, @@ -474,7 +476,7 @@ export default class Actions extends Module { const room = current_room && JSON.stringify(current_room); return (
{actions} diff --git a/src/modules/chat/actions/types.jsx b/src/modules/chat/actions/types.jsx index f876f447..083ff22f 100644 --- a/src/modules/chat/actions/types.jsx +++ b/src/modules/chat/actions/types.jsx @@ -159,7 +159,11 @@ export const ban = { }, click(event, data) { - this.sendMessage(data.room.login, `/ban ${data.user.login} ${data.reason||data.options.reason||''}`); + let reason = data.reason || data.options.reason || ''; + if ( reason.length ) + reason = this.replaceVariables(reason, data); + + this.sendMessage(data.room.login, `/ban ${data.user.login} ${reason}`); } } @@ -211,7 +215,11 @@ export const timeout = { }, click(event, data) { - this.sendMessage(data.room.login, `/timeout ${data.user.login} ${data.options.duration} ${data.reason||data.options.reason||''}`); + let reason = data.reason || data.options.reason || ''; + if ( reason.length ) + reason = this.replaceVariables(reason, data); + + this.sendMessage(data.room.login, `/timeout ${data.user.login} ${data.options.duration} ${reason}`); } } diff --git a/src/modules/main_menu/components/action-editor.vue b/src/modules/main_menu/components/action-editor.vue index ee4dbef9..0d31aa76 100644 --- a/src/modules/main_menu/components/action-editor.vue +++ b/src/modules/main_menu/components/action-editor.vue @@ -184,6 +184,28 @@
+
+ + + +
+
+
+ + + +
+
-
+
{{ t('setting.actions.preview', 'Preview:') }}
@@ -102,6 +102,36 @@
+
+ + + +
+ +
+ + + +
+
n.props && n.props.className === 'chat-input__buttons-container'); if ( ! container || ! container.props || ! container.props.children ) return out; @@ -179,7 +180,10 @@ export default class Input extends Module { emoteOnly: props.emoteOnlyMode, slowMode: props.slowMode, slowDuration: props.slowModeDuration, - subsMode: props.subsOnlyMode + subsMode: props.subsOnlyMode, + r9kMode: state.r9k, + followersOnly: state.followersOnly, + followersDuration: state.followersOnlyRequirement } const actions = t.actions.renderRoom(t.chat.context.get('context.chat.showModIcons'), u, r, above, createElement); diff --git a/src/sites/twitch-twilight/modules/chat/line.js b/src/sites/twitch-twilight/modules/chat/line.js index dc8384e7..0cd98c02 100644 --- a/src/sites/twitch-twilight/modules/chat/line.js +++ b/src/sites/twitch-twilight/modules/chat/line.js @@ -741,7 +741,7 @@ other {# messages were deleted by a moderator.} if ( ! this.props.installedExtensions.some(val => { const e = val.extension; - return e && e.clientID === ext.clientID && e.version === ext.version; + return e && (e.clientId || e.clientID) === (ext.clientId || ext.clientID) && e.version === ext.version; }) ) return null; diff --git a/styles/widgets.scss b/styles/widgets.scss index 857cd0e9..8483f149 100644 --- a/styles/widgets.scss +++ b/styles/widgets.scss @@ -245,6 +245,10 @@ textarea.tw-input { margin-bottom: 1rem; } + p { + white-space: pre-line; + } + code { padding: 2px 5px; border-radius: 2px;