diff --git a/src/main.js b/src/main.js index df33e0fd..35f5f591 100644 --- a/src/main.js +++ b/src/main.js @@ -149,7 +149,7 @@ ${typeof x[1] === 'string' ? x[1] : JSON.stringify(x[1], null, 4)}` FrankerFaceZ.Logger = Logger; const VER = FrankerFaceZ.version_info = { - major: 4, minor: 0, revision: 0, extra: '-rc13.13', + major: 4, minor: 0, revision: 0, extra: '-rc13.14', commit: __git_commit__, build: __webpack_hash__, toString: () => diff --git a/src/modules/chat/badges.jsx b/src/modules/chat/badges.jsx index 40efdd4e..a3d0c461 100644 --- a/src/modules/chat/badges.jsx +++ b/src/modules/chat/badges.jsx @@ -441,6 +441,7 @@ export default class Badges extends Module { if (no_invert) { slotted[slot].full_size = true; + slotted[slot].no_invert = true; style.background = 'unset'; style.backgroundSize = 'unset'; @@ -471,7 +472,7 @@ export default class Badges extends Module { const data = slotted[slot], props = data.props; - props.className = `ffz-tooltip ffz-badge${data.full_size ? ' ffz-full-size' : ''}`; + props.className = `ffz-tooltip ffz-badge${data.full_size ? ' ffz-full-size' : ''}${data.no_invert ? ' ffz-no-invert' : ''}`; props.key = `${props['data-provider']}-${props['data-badge']}`; props['data-tooltip-type'] = 'badge'; props['data-badge-data'] = JSON.stringify(data.badges); diff --git a/src/modules/metadata.jsx b/src/modules/metadata.jsx index 97e8fefd..df584b3b 100644 --- a/src/modules/metadata.jsx +++ b/src/modules/metadata.jsx @@ -180,11 +180,12 @@ export default class Metadata extends Module { return; const store = internal.context.store, - state = store.getState(); + state = store.getState(), + displayed = state && state.stats && state.stats.displayState === 'DISPLAY_VIDEO_STATS'; store.dispatch({ type: 'display stats', - displayed: ! (state.stats && state.stats.displayed) + displayState: displayed ? 'DISPLAY_NONE' : 'DISPLAY_VIDEO_STATS' }); }, diff --git a/src/sites/twitch-twilight/index.js b/src/sites/twitch-twilight/index.js index de7733ba..3e6a3f9b 100644 --- a/src/sites/twitch-twilight/index.js +++ b/src/sites/twitch-twilight/index.js @@ -204,6 +204,7 @@ Twilight.ROUTES = { 'user-following': '/:userName/following', 'product': '/products/:productName', 'prime': '/prime', + 'turbo': '/turbo', 'user': '/:userName', } diff --git a/src/sites/twitch-twilight/modules/chat/emote_menu.jsx b/src/sites/twitch-twilight/modules/chat/emote_menu.jsx index d5869bef..106dcf47 100644 --- a/src/sites/twitch-twilight/modules/chat/emote_menu.jsx +++ b/src/sites/twitch-twilight/modules/chat/emote_menu.jsx @@ -1303,6 +1303,11 @@ export default class EmoteMenu extends Module { } for(const emote of emote_set.emotes) { + // Validate emotes, because apparently Twitch is handing + // out bad emote data. + if ( ! emote || ! emote.id || ! emote.token ) + continue; + const id = parseInt(emote.id, 10), name = KNOWN_CODES[emote.token] || emote.token, mapped = emote_map && emote_map[name], @@ -1403,6 +1408,11 @@ export default class EmoteMenu extends Module { section.all_locked = false; for(const emote of product.emotes) { + // Validate emotes, because apparently Twitch is handing + // out bad emote data. + if ( ! emote || ! emote.id || ! emote.token ) + continue; + const id = parseInt(emote.id, 10), base = `${TWITCH_EMOTE_BASE}${id}`, name = KNOWN_CODES[emote.token] || emote.token, diff --git a/src/sites/twitch-twilight/modules/css_tweaks/styles/channel-metadata-top.scss b/src/sites/twitch-twilight/modules/css_tweaks/styles/channel-metadata-top.scss new file mode 100644 index 00000000..077d5d91 --- /dev/null +++ b/src/sites/twitch-twilight/modules/css_tweaks/styles/channel-metadata-top.scss @@ -0,0 +1,13 @@ +.channel-info-bar__content-right { + display: flex; + flex-direction: column; + + & > .tw-align-items-start { + margin-top: 0 !important; + order: -1; + + & > .tw-pd-t-05 { + padding-top: 0 !important; + } + } +} \ No newline at end of file diff --git a/src/sites/twitch-twilight/modules/css_tweaks/styles/portrait.scss b/src/sites/twitch-twilight/modules/css_tweaks/styles/portrait.scss index 0082e91b..49a79eae 100644 --- a/src/sites/twitch-twilight/modules/css_tweaks/styles/portrait.scss +++ b/src/sites/twitch-twilight/modules/css_tweaks/styles/portrait.scss @@ -41,6 +41,10 @@ width: unset !important; border-top: 1px solid #dad8de; + & > .tw-full-height { + width: 100% !important; + } + .right-column__toggle-visibility { position: fixed !important; top: 6.5rem; diff --git a/src/sites/twitch-twilight/modules/theme/index.js b/src/sites/twitch-twilight/modules/theme/index.js index 9b14bfa1..88afac5e 100644 --- a/src/sites/twitch-twilight/modules/theme/index.js +++ b/src/sites/twitch-twilight/modules/theme/index.js @@ -9,7 +9,7 @@ import {createElement} from 'utilities/dom'; import THEME_CSS_URL from 'site/styles/theme.scss'; -const BAD_ROUTES = ['product', 'prime']; +const BAD_ROUTES = ['product', 'prime', 'turbo']; export default class ThemeEngine extends Module { diff --git a/styles/chat.scss b/styles/chat.scss index 8902886a..b46dfb62 100644 --- a/styles/chat.scss +++ b/styles/chat.scss @@ -34,6 +34,10 @@ background-position: center; vertical-align: middle; + &.ffz-no-invert { + filter:none !important; + } + &.ffz-full-size { min-width: 1.8rem; height: 1.8rem;