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;