diff --git a/package.json b/package.json index 9f5df7dc..9ea23588 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "frankerfacez", "author": "Dan Salvato LLC", - "version": "4.14.1", + "version": "4.14.2", "description": "FrankerFaceZ is a Twitch enhancement suite.", "license": "Apache-2.0", "scripts": { diff --git a/src/i18n.js b/src/i18n.js index 15d0d5f5..bb983da0 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -317,8 +317,8 @@ export class TranslationManager extends Module { } - async loadStrings() { - if ( this.strings_loaded ) + async loadStrings(ignore_loaded = false) { + if ( this.strings_loaded && ! ignore_loaded ) return; if ( this.strings_loading ) diff --git a/src/modules/chat/index.js b/src/modules/chat/index.js index d163c1f1..8f5da8e3 100644 --- a/src/modules/chat/index.js +++ b/src/modules/chat/index.js @@ -232,6 +232,34 @@ export default class Chat extends Module { } }); + this.settings.add('chat.automod.delete-messages', { + default: true, + ui: { + path: 'Chat > Filtering >> AutoMod Filters @{"description": "Extra configuration for Twitch\'s native `Chat Filters`."}', + title: 'Mark messages as deleted if they contain filtered phrases.', + component: 'setting-check-box' + } + }); + + this.settings.add('chat.automod.remove-messages', { + default: true, + ui: { + path: 'Chat > Filtering >> AutoMod Filters', + title: 'Remove messages entirely if they contain filtered phrases.', + component: 'setting-check-box' + } + }); + + this.settings.add('chat.automod.run-as-mod', { + default: false, + ui: { + path: 'Chat > Filtering >> AutoMod Filters', + title: 'Use Chat Filters as a moderator.', + description: 'By default, Twitch\'s Chat Filters feature does not function for moderators. This overrides that behavior.', + component: 'setting-check-box' + } + }); + this.settings.add('chat.filtering.process-own', { default: false, ui: { diff --git a/src/modules/chat/tokenizers.jsx b/src/modules/chat/tokenizers.jsx index 50b159fb..9f2f3302 100644 --- a/src/modules/chat/tokenizers.jsx +++ b/src/modules/chat/tokenizers.jsx @@ -647,6 +647,17 @@ export const AutomoddedTerms = { let idx = 0, fix = 0; + const remove = this.context.get('chat.automod.remove-messages'); + const del = this.context.get('chat.automod.delete-messages'); + + if ( del ) + msg.deleted = true; + + if ( remove ) { + msg.ffz_removed = true; + return tokens; + } + for(const token of tokens) { const length = token.length || (token.text && split_chars(token.text).length) || 0, t_start = idx, @@ -1085,7 +1096,9 @@ export const AddonEmotes = { plain_name = true; name = `:${emoji.names[0]}:${vcode ? `:${vcode.names[0]}:` : ''}`; - source = this.i18n.t('tooltip.emoji', 'Emoji - {category}', emoji); + + const category = emoji.category ? this.i18n.t(`emoji.category.${emoji.category.toSnakeCase()}`, emoji.category) : null; + source = this.i18n.t('tooltip.emoji', 'Emoji - {category}', {category}); } else return; diff --git a/src/modules/translation_ui/components/i18n-entry.vue b/src/modules/translation_ui/components/i18n-entry.vue index 5d989db5..419e03bd 100644 --- a/src/modules/translation_ui/components/i18n-entry.vue +++ b/src/modules/translation_ui/components/i18n-entry.vue @@ -22,7 +22,7 @@ ref="editor" v-model="value" :class="{'tw-textarea--error': ! valid}" - class="tw-block tw-font-size-6 tw-full-width tw-full-height tw-textarea" + class="tw-block tw-font-size-6 tw-full-width tw-textarea" @input="onInput" @blur="onBlur" @focus="open = true" @@ -38,10 +38,15 @@
- {{ line }} + + {{ line[0] }} ({{ line[1] }}) + + + {{ line }} +
@@ -187,7 +192,22 @@ export default { if ( ! Array.isArray(calls) || ! calls.length ) return null; - return calls.join('\n').split(/\n/); + const lines = calls.join('\n').split(/\n/), + out = []; + + for(const line of lines) { + const match = /^(?:(.*?) \()?(\/[^:\)]+):(\d+):(\d+)\)?$/.exec(line); + if ( match ) + out.push([ + match[1] || '???', + `${match[2]}:${match[3]}:${match[4]}`, + `https://www.github.com/FrankerFaceZ/FrankerFaceZ/blob/master${match[2]}#L${match[3]}` + ]); + else + out.push(line); + } + + return out; }, preview() { diff --git a/src/modules/translation_ui/components/translation-ui.vue b/src/modules/translation_ui/components/translation-ui.vue index f9e5e6e4..d555820d 100644 --- a/src/modules/translation_ui/components/translation-ui.vue +++ b/src/modules/translation_ui/components/translation-ui.vue @@ -34,6 +34,14 @@ {{ t('i18n.ui.save', 'Generate Change Blob') }}
+