diff --git a/changelog.html b/changelog.html
index 63772136..5d04064b 100644
--- a/changelog.html
+++ b/changelog.html
@@ -1,5 +1,11 @@
+
+
+
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);
}