From eb967e115fe7c2c9df7f07c47d9a6c27aa8003a6 Mon Sep 17 00:00:00 2001 From: SirStendec Date: Thu, 22 Feb 2018 18:38:13 -0500 Subject: [PATCH] More fixes for the React 16 update. --- changelog.html | 6 +++++ .../twitch-twilight/modules/channel_bar.js | 6 ++--- .../twitch-twilight/modules/chat/index.js | 2 +- .../twitch-twilight/modules/chat/scroller.js | 6 ++--- .../modules/directory/browse_popular.js | 2 +- .../modules/directory/following.js | 2 +- .../twitch-twilight/modules/directory/game.js | 2 +- .../modules/directory/index.js | 6 ++--- src/utilities/compat/fine.js | 24 ++++++++++++++++--- 9 files changed, 40 insertions(+), 16 deletions(-) diff --git a/changelog.html b/changelog.html index 63772136..5d04064b 100644 --- a/changelog.html +++ b/changelog.html @@ -1,5 +1,11 @@ +
4.0.0-beta1.5@e5095bc624a4d0c6be15
+ +
4.0.0-beta1.5@ef163f5d644217193110
diff --git a/src/sites/twitch-twilight/modules/channel_bar.js b/src/sites/twitch-twilight/modules/channel_bar.js index df2ae8cb..726e79fa 100644 --- a/src/sites/twitch-twilight/modules/channel_bar.js +++ b/src/sites/twitch-twilight/modules/channel_bar.js @@ -54,12 +54,12 @@ export default class ChannelBar extends Module { this.ChannelBar.on('update', this.updateChannelBar, this); /*this.HostBar.on('mount', inst => { - this.log.info('host-mount', inst, this.fine.getHostNode(inst)); + this.log.info('host-mount', inst, this.fine.getChildNode(inst)); }); this.HostBar.ready((cls, instances) => { for(const inst of instances) - this.log.info('host-found', inst, this.fine.getHostNode(inst)); + this.log.info('host-found', inst, this.fine.getChildNode(inst)); })*/ } @@ -82,7 +82,7 @@ export default class ChannelBar extends Module { updateMetadata(inst, keys) { - const container = this.fine.getHostNode(inst), + const container = this.fine.getChildNode(inst), metabar = container && container.querySelector && container.querySelector('.channel-info-bar__action-container > .tw-flex'); if ( ! inst._ffz_mounted || ! metabar ) diff --git a/src/sites/twitch-twilight/modules/chat/index.js b/src/sites/twitch-twilight/modules/chat/index.js index c763ec44..b8e41beb 100644 --- a/src/sites/twitch-twilight/modules/chat/index.js +++ b/src/sites/twitch-twilight/modules/chat/index.js @@ -526,7 +526,7 @@ export default class ChatHook extends Module { // ======================================================================== fixPinnedCheer(inst) { - const el = this.fine.getHostNode(inst), + const el = this.fine.getChildNode(inst), container = el && el.querySelector && el.querySelector('.pinned-cheer__headline'), tc = inst.props.topCheer; diff --git a/src/sites/twitch-twilight/modules/chat/scroller.js b/src/sites/twitch-twilight/modules/chat/scroller.js index e5f21945..2617f527 100644 --- a/src/sites/twitch-twilight/modules/chat/scroller.js +++ b/src/sites/twitch-twilight/modules/chat/scroller.js @@ -113,7 +113,7 @@ export default class Scroller extends Module { this._ffz_freeze_visible = true; let el = this._ffz_freeze_indicator; if ( ! el ) { - const node = t.fine.getHostNode(this); + const node = t.fine.getChildNode(this); if ( ! node ) return; @@ -204,7 +204,7 @@ export default class Scroller extends Module { cls.prototype.ffzEnableFreeze = function() { - const node = t.fine.getHostNode(this); + const node = t.fine.getChildNode(this); if ( ! node || this.ffz_freeze_enabled ) return; @@ -236,7 +236,7 @@ export default class Scroller extends Module { this._ffz_outside = null; } - const node = t.fine.getHostNode(this); + const node = t.fine.getChildNode(this); if ( ! node ) return; diff --git a/src/sites/twitch-twilight/modules/directory/browse_popular.js b/src/sites/twitch-twilight/modules/directory/browse_popular.js index 47f57169..e70c936b 100644 --- a/src/sites/twitch-twilight/modules/directory/browse_popular.js +++ b/src/sites/twitch-twilight/modules/directory/browse_popular.js @@ -68,7 +68,7 @@ export default class BrowsePopular extends SiteModule { } updateChannelCard(inst) { - const container = this.fine.getHostNode(inst); + const container = this.fine.getChildNode(inst); if (!container) return; if (container.classList.contains('ffz-modified-channel-card')) return; diff --git a/src/sites/twitch-twilight/modules/directory/following.js b/src/sites/twitch-twilight/modules/directory/following.js index e29e457b..9ece895f 100644 --- a/src/sites/twitch-twilight/modules/directory/following.js +++ b/src/sites/twitch-twilight/modules/directory/following.js @@ -332,7 +332,7 @@ export default class Following extends SiteModule { } updateChannelCard(inst) { - const container = this.fine.getHostNode(inst), + const container = this.fine.getChildNode(inst), card = container && container.querySelector && container.querySelector('.tw-card'); if ( ! card ) diff --git a/src/sites/twitch-twilight/modules/directory/game.js b/src/sites/twitch-twilight/modules/directory/game.js index 30d020dd..2f0fabef 100644 --- a/src/sites/twitch-twilight/modules/directory/game.js +++ b/src/sites/twitch-twilight/modules/directory/game.js @@ -36,7 +36,7 @@ export default class Game extends SiteModule { } updateButtons(inst, update = false) { - const container = this.fine.getHostNode(inst); + const container = this.fine.getChildNode(inst); if ( inst.props.directoryType !== 'GAMES' || ! container || ! container.querySelector ) return; diff --git a/src/sites/twitch-twilight/modules/directory/index.js b/src/sites/twitch-twilight/modules/directory/index.js index 5db0aba3..1e95ec3e 100644 --- a/src/sites/twitch-twilight/modules/directory/index.js +++ b/src/sites/twitch-twilight/modules/directory/index.js @@ -162,7 +162,7 @@ export default class Directory extends SiteModule { updateChannelCard(inst) { - const container = this.fine.getHostNode(inst); + const container = this.fine.getChildNode(inst); if (!container) return; this.updateUptime(inst, 'props.streamNode.viewersCount.createdAt', '.tw-card-img'); @@ -230,7 +230,7 @@ export default class Directory extends SiteModule { updateUptime(inst, created_path, selector) { - const container = this.fine.getHostNode(inst), + const container = this.fine.getChildNode(inst), card = container && container.querySelector && container.querySelector(selector), setting = this.settings.get('directory.uptime'), created_at = get(created_path, inst), @@ -275,7 +275,7 @@ export default class Directory extends SiteModule { addCardAvatar(inst, created_path, selector, data) { - const container = this.fine.getHostNode(inst), + const container = this.fine.getChildNode(inst), card = container && container.querySelector && container.querySelector(selector), setting = this.settings.get('directory.show-channel-avatars'); diff --git a/src/utilities/compat/fine.js b/src/utilities/compat/fine.js index 30169df8..8068ce61 100644 --- a/src/utilities/compat/fine.js +++ b/src/utilities/compat/fine.js @@ -74,7 +74,7 @@ export default class Fine extends Module { return instance.return; } - getHostNode(instance) { + getParentNode(instance) { if ( instance._reactInternalFiber ) instance = instance._reactInternalFiber; else if ( instance instanceof Node ) @@ -87,6 +87,23 @@ export default class Fine extends Module { instance = instance.parent; } + getChildNode(instance) { + if ( instance._reactInternalFiber ) + instance = instance._reactInternalFiber; + else if ( instance instanceof Node ) + instance = this.getReactInstance(instance); + + while( instance ) + if ( instance.stateNode instanceof Node ) + return instance.stateNode + else + instance = instance.child; + } + + getHostNode(instance) { + return this.getChildNode(instance); + } + getParent(instance) { return this.getOwner(instance); } @@ -424,8 +441,9 @@ export class FineWrapper extends EventEmitter { if ( instances ) for(const inst of instances) { // How do we check mounted state for fibers? - //if ( inst._reactInternalInstance && inst._reactInternalInstance._renderedComponent ) - // inst._ffz_mounted = true; + if ( this.fine.getChildNode(inst) ) + inst._ffz_mounted = true; + _instances.add(inst); }