1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-09-15 17:46:55 +00:00

Make changes to how forceUpdate() is called to hopefully reduce errors with React being stupid and not understanding how the DOM works. Also don't display an empty message for a resub with no attached message.

This commit is contained in:
SirStendec 2018-03-01 04:13:52 -05:00
parent 67053e3804
commit fb1ea38f1b
6 changed files with 29 additions and 12 deletions

View file

@ -1,3 +1,14 @@
<div class="list-header">4.0.0-beta1.6<span>@5442f1e095968e230f60</span> <time datetime="2018-03-01">(2018-03-01)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: Stop displaying empty messages with resub notices that don't have a message.</li>
<li>Changed: Make adjustments to timing and how errors are handled when forcing React components to update to hopefully resolve an impossible to reproduce issue with chat disappearing.</li>
</ul>
<div class="list-header">4.0.0-beta1.6<span>@e9ed380d87da80b42502</span> <time datetime="2018-02-28">(2018-02-28)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Changed: Update setting that hides pinned cheers for the new Top Cheerers leaderboards.</li>
</ul>
<div class="list-header">4.0.0-beta1.6<span>@1d563b0f42b9912f8494</span> <time datetime="2018-02-28">(2018-02-28)</time></div> <div class="list-header">4.0.0-beta1.6<span>@1d563b0f42b9912f8494</span> <time datetime="2018-02-28">(2018-02-28)</time></div>
<ul class="chat-menu-content menu-side-padding"> <ul class="chat-menu-content menu-side-padding">
<li>Added: Prime Reminder! Display a crown on subscription buttons when your free channel sub with Prime is available.</li> <li>Added: Prime Reminder! Display a crown on subscription buttons when your free channel sub with Prime is available.</li>

View file

@ -435,6 +435,9 @@ export default class Chat extends Module {
if ( msg.sender && ! msg.user ) if ( msg.sender && ! msg.user )
msg.user = msg.sender; msg.user = msg.sender;
if ( ! msg.message )
return [];
let tokens = [{type: 'text', text: msg.message}]; let tokens = [{type: 'text', text: msg.message}];
if ( ! tokens[0].text ) if ( ! tokens[0].text )
return tokens; return tokens;

View file

@ -177,8 +177,8 @@ export default class ChatHook extends Module {
this.settings.add('chat.bits.show-pinned', { this.settings.add('chat.bits.show-pinned', {
default: true, default: true,
ui: { ui: {
path: 'Chat > Bits and Cheering >> Pinned Cheers', path: 'Chat > Bits and Cheering >> Appearance',
title: 'Display Pinned Cheer', title: 'Display Top Cheerers',
component: 'setting-check-box' component: 'setting-check-box'
} }
@ -514,9 +514,7 @@ export default class ChatHook extends Module {
updateChatLines() { updateChatLines() {
for(const inst of this.PinnedCheer.instances) this.PinnedCheer.forceUpdate();
inst.forceUpdate();
this.chat_line.updateLines(); this.chat_line.updateLines();
} }

View file

@ -100,7 +100,7 @@ export default class ChatLine extends Module {
const tokens = msg.ffz_tokens = msg.ffz_tokens || t.chat.tokenizeMessage(msg, {login: this.props.currentUserLogin, display: this.props.currentUserDisplayName}); const tokens = msg.ffz_tokens = msg.ffz_tokens || t.chat.tokenizeMessage(msg, {login: this.props.currentUserLogin, display: this.props.currentUserDisplayName});
let cls = 'chat-line__message', let cls = 'chat-line__message',
out = tokens.length ? [ out = (tokens.length || ! msg.ffz_type) ? [
this.props.showTimestamps && e('span', { this.props.showTimestamps && e('span', {
className: 'chat-line__timestamp' className: 'chat-line__timestamp'
}, t.chat.formatTime(msg.timestamp)), }, t.chat.formatTime(msg.timestamp)),
@ -212,8 +212,9 @@ export default class ChatLine extends Module {
}, out); }, out);
} }
for(const inst of instances) // Do this after a short delay to hopefully reduce the chance of React
inst.forceUpdate(); // freaking out on us.
setTimeout(() => this.ChatLine.forceUpdate());
}) })
} }
@ -223,9 +224,9 @@ export default class ChatLine extends Module {
const msg = inst.props.message; const msg = inst.props.message;
if ( msg ) if ( msg )
msg.ffz_tokens = null; msg.ffz_tokens = null;
inst.forceUpdate();
} }
this.ChatLine.forceUpdate();
} }
} }

View file

@ -20,7 +20,7 @@ const CLASSES = {
'player-ext': '.player-extensions', 'player-ext': '.player-extensions',
'player-ext-hover': '.player[data-controls="false"] .player-extensions', 'player-ext-hover': '.player[data-controls="false"] .player-extensions',
'pinned-cheer': '.pinned-cheer', 'pinned-cheer': '.pinned-cheer,.pinned-cheer-v2',
'whispers': '.whispers', 'whispers': '.whispers',
'dir-live-ind': '.live-channel-card:not([data-a-target*="host"]) .stream-type-indicator.stream-type-indicator--live', 'dir-live-ind': '.live-channel-card:not([data-a-target*="host"]) .stream-type-indicator.stream-type-indicator--live',

View file

@ -504,7 +504,11 @@ export class FineWrapper extends EventEmitter {
forceUpdate() { forceUpdate() {
for(const inst of this.instances) for(const inst of this.instances)
inst.forceUpdate(); try {
inst.forceUpdate();
} catch(err) {
this.fine.log.error(`An error occured when calling forceUpdate on an instance of ${this.name}`, err);
}
} }