diff --git a/package-lock.json b/package-lock.json index 4ec972cb..6a6d6b0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "frankerfacez", - "version": "4.23.2", + "version": "4.28.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -9392,7 +9392,8 @@ }, "ssri": { "version": "6.0.1", - "resolved": "", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" diff --git a/package.json b/package.json index 27b886a0..5256fdf9 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "frankerfacez", "author": "Dan Salvato LLC", - "version": "4.28.5", + "version": "4.28.7", "description": "FrankerFaceZ is a Twitch enhancement suite.", "private": true, "license": "Apache-2.0", diff --git a/src/addons.js b/src/addons.js index e151f781..08b88c95 100644 --- a/src/addons.js +++ b/src/addons.js @@ -311,7 +311,7 @@ export default class AddonManager extends Module { })); // Error if this takes more than 5 seconds. - await timeout(this.waitFor(`addon.${id}:registered`), 5000); + await timeout(this.waitFor(`addon.${id}:registered`), 60000); module = this.resolve(`addon.${id}`); if ( module && ! module.loaded ) diff --git a/src/sites/shared/player.jsx b/src/sites/shared/player.jsx index 6ae3a7e5..3b59cc23 100644 --- a/src/sites/shared/player.jsx +++ b/src/sites/shared/player.jsx @@ -481,6 +481,7 @@ export default class PlayerBase extends Module { ui: { path: 'Player > General >> Extensions', title: 'Show Overlay Extensions', + description: 'Note: This feature does not prevent extensions from loading. Hidden extensions are merely invisible. Hiding extensions with this feature will not improve your security.', component: 'setting-select-box', data: [ {value: 2, title: 'Never'}, diff --git a/src/sites/twitch-twilight/modules/chat/index.js b/src/sites/twitch-twilight/modules/chat/index.js index e5ce3fa5..e3212f5c 100644 --- a/src/sites/twitch-twilight/modules/chat/index.js +++ b/src/sites/twitch-twilight/modules/chat/index.js @@ -346,6 +346,15 @@ export default class ChatHook extends Module { } }); + this.settings.add('chat.banners.drops', { + default: true, + ui: { + path: 'Chat > Appearance >> Community', + title: 'Allow messages about Drops to be displayed in chat.', + component: 'setting-check-box' + } + }); + this.settings.add('chat.banners.polls', { default: true, ui: { @@ -836,6 +845,7 @@ export default class ChatHook extends Module { this.chat.context.on('changed:chat.subs.gift-banner', this.cleanHighlights, this); this.chat.context.on('changed:chat.banners.polls', this.cleanHighlights, this); this.chat.context.on('changed:chat.banners.prediction', this.cleanHighlights, this); + this.chat.context.on('changed:chat.banners.drops', this.cleanHighlights, this); this.chat.context.on('changed:chat.subs.gift-banner', () => this.GiftBanner.forceUpdate(), this); this.chat.context.on('changed:chat.effective-width', this.updateChatCSS, this); @@ -1320,7 +1330,7 @@ export default class ChatHook extends Module { 'hype_train': this.chat.context.get('chat.banners.hype-train'), 'prediction': this.chat.context.get('chat.banners.prediction'), 'poll': this.chat.context.get('chat.banners.polls'), - 'mw-drop-available': false + 'mw-drop-available': this.chat.context.get('chat.banners.drops') }; const highlights = this.community_stack?.highlights; @@ -1332,11 +1342,13 @@ export default class ChatHook extends Module { continue; const type = entry.event.type; - if ( type && has(types, type) && ! types[type] ) + if ( type && has(types, type) && ! types[type] ) { + this.log.info('Removing community highlight: ', type, '#', entry.id); this.community_dispatch({ type: 'remove-highlight', id: entry.id }); + } } } @@ -2085,6 +2097,8 @@ export default class ChatHook extends Module { e.body = ''; const out = i.convertMessage({message: e}); out.ffz_type = 'resub'; + out.gift_theme = e.giftTheme; + out.sub_goal = i.getGoalData ? i.getGoalData(e.goalData) : null; out.sub_plan = e.methods; return i.postMessageToCurrentChannel(e, out); @@ -2121,6 +2135,8 @@ export default class ChatHook extends Module { const out = i.convertMessage({message: e}); out.ffz_type = 'resub'; + out.gift_theme = e.giftTheme; + out.sub_goal = i.getGoalData ? i.getGoalData(e.goalData) : null; out.sub_cumulative = e.cumulativeMonths || 0; out.sub_streak = e.streakMonths || 0; out.sub_share_streak = e.shouldShareStreakTenure; @@ -2176,6 +2192,8 @@ export default class ChatHook extends Module { login: e.recipientLogin, displayName: e.recipientName }; + out.gift_theme = e.giftTheme; + out.sub_goal = i.getGoalData ? i.getGoalData(e.goalData) : null; out.sub_months = e.giftMonths; out.sub_plan = e.methods; out.sub_total = e.senderCount; @@ -2221,6 +2239,8 @@ export default class ChatHook extends Module { e.body = ''; const out = i.convertMessage({message: e}); out.ffz_type = 'sub_gift'; + out.gift_theme = e.giftTheme; + out.sub_goal = i.getGoalData ? i.getGoalData(e.goalData) : null; out.sub_anon = true; out.sub_recipient = { id: e.recipientID, @@ -2259,6 +2279,8 @@ export default class ChatHook extends Module { e.body = ''; const out = i.convertMessage({message: e}); out.ffz_type = 'sub_mystery'; + out.gift_theme = e.giftTheme; + out.sub_goal = i.getGoalData ? i.getGoalData(e.goalData) : null; out.mystery = mystery; out.sub_plan = e.plan; out.sub_count = e.massGiftCount; diff --git a/src/sites/twitch-twilight/modules/chat/line.js b/src/sites/twitch-twilight/modules/chat/line.js index e206b5d2..15ff17e1 100644 --- a/src/sites/twitch-twilight/modules/chat/line.js +++ b/src/sites/twitch-twilight/modules/chat/line.js @@ -20,6 +20,11 @@ const SUB_TIERS = { 3000: 3 }; +function getGiftThemeURL(theme) { + return `https://static-cdn.jtvnw.net/subs-image-assets/TUN-${theme}.png`; +} + + export default class ChatLine extends Module { constructor(...args) { super(...args); diff --git a/src/sites/twitch-twilight/modules/theme/index.js b/src/sites/twitch-twilight/modules/theme/index.js index 220cafa4..70ceaf58 100644 --- a/src/sites/twitch-twilight/modules/theme/index.js +++ b/src/sites/twitch-twilight/modules/theme/index.js @@ -439,7 +439,7 @@ export default class ThemeEngine extends Module { } if ( chat_bits.length ) - this.css_tweaks.set('chat-colors', `.chat-shell {${chat_bits.join('\n')}}.chat-shell .tw-accent-region{${chat_accent_bits.join('\n')}}`); + this.css_tweaks.set('chat-colors', `.moderation-view-page-widget .stream-chat,.chat-shell {${chat_bits.join('\n')}}.moderation-view-page-widget .stream-chat .tw-accent-region,.chat-shell .tw-accent-region{${chat_accent_bits.join('\n')}}`); else this.css_tweaks.delete('chat-colors'); diff --git a/src/sites/twitch-twilight/styles/color_normalizer.scss b/src/sites/twitch-twilight/styles/color_normalizer.scss index ee5c1274..80e44de5 100644 --- a/src/sites/twitch-twilight/styles/color_normalizer.scss +++ b/src/sites/twitch-twilight/styles/color_normalizer.scss @@ -114,4 +114,10 @@ html { .navigation-link__active-indicator { color: var(--ffz-color-accent-10) !important; } -} \ No newline at end of file +} + +html, .tw-root--theme-dark, .tw-root--theme-light { + .search-box__variant1 .tw-input { + border-color: var(--color-background-button-primary-default) !important; + } +} diff --git a/src/std-components/react-link.vue b/src/std-components/react-link.vue index b83b67aa..f2ae82ea 100644 --- a/src/std-components/react-link.vue +++ b/src/std-components/react-link.vue @@ -7,14 +7,14 @@