1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-08-08 07:10:54 +00:00
* Fixed: Unread whispers not appearing correctly when the color normalizer is loaded.
* Fixed: Performance issue creating excessive `FFZEvent` instances in `flushRawBuffer` when no message was scheduled for display.
* API Fixed: The `chat:buffer-message` event not including `channelID` and `channel` properties.
This commit is contained in:
SirStendec 2021-05-01 14:36:20 -04:00
parent ae85bf76b9
commit 3c37dbf23a
3 changed files with 57 additions and 11 deletions

View file

@ -1,7 +1,7 @@
{ {
"name": "frankerfacez", "name": "frankerfacez",
"author": "Dan Salvato LLC", "author": "Dan Salvato LLC",
"version": "4.22.0", "version": "4.22.1",
"description": "FrankerFaceZ is a Twitch enhancement suite.", "description": "FrankerFaceZ is a Twitch enhancement suite.",
"private": true, "private": true,
"license": "Apache-2.0", "license": "Apache-2.0",

View file

@ -1481,10 +1481,10 @@ export default class ChatHook extends Module {
if ( msg.type === types.Message ) { if ( msg.type === types.Message ) {
const m = t.chat.standardizeMessage(msg), const m = t.chat.standardizeMessage(msg),
cont = inst._ffz_connector, cont = inst._ffz_connector ?? inst.ffzGetConnector();
room_id = cont && cont.props.channelID;
let room = m.roomLogin = m.roomLogin ? m.roomLogin : m.channel ? m.channel.slice(1) : cont && cont.props.channelLogin; let room_id = m.roomID = m.roomID ? m.roomID : cont?.props?.channelID;
let room = m.roomLogin = m.roomLogin ? m.roomLogin : m.channel ? m.channel.slice(1) : cont?.props?.channelLogin;
if ( ! room && room_id ) { if ( ! room && room_id ) {
const r = t.chat.getRoom(room_id, null, true); const r = t.chat.getRoom(room_id, null, true);
@ -1492,6 +1492,12 @@ export default class ChatHook extends Module {
room = m.roomLogin = r.login; room = m.roomLogin = r.login;
} }
if ( ! room_id && room ) {
const r = t.chat.getRoom(null, room, true);
if ( r && r.id )
room_id = m.roomID = r.id;
}
const u = t.site.getUser(); const u = t.site.getUser();
if ( u && cont ) { if ( u && cont ) {
u.moderator = cont.props.isCurrentUserModerator; u.moderator = cont.props.isCurrentUserModerator;
@ -1505,6 +1511,7 @@ export default class ChatHook extends Module {
if ( t.hasListeners('chat:receive-message') ) { if ( t.hasListeners('chat:receive-message') ) {
const event = new FFZEvent({ const event = new FFZEvent({
message: m, message: m,
inst,
channel: room, channel: room,
channelID: room_id channelID: room_id
}); });
@ -1781,6 +1788,19 @@ export default class ChatHook extends Module {
} }
} }
cls.prototype.ffzGetConnector = function() {
if ( this._ffz_connector )
return this._ffz_connector;
const now = Date.now();
if ( now - (this._ffz_connect_tried || 0) > 5000 ) {
this._ffz_connect_tried = now;
const thing = t.ChatBufferConnector.first;
if ( thing?.props?.messageBufferAPI?._ffz_inst === this )
return this._ffz_connector = thing;
}
}
cls.prototype.flushRawMessages = function() { cls.prototype.flushRawMessages = function() {
try { try {
const out = [], const out = [],
@ -1795,21 +1815,38 @@ export default class ChatHook extends Module {
max_size = t.chat.context.get('chat.scrollback-length'), max_size = t.chat.context.get('chat.scrollback-length'),
do_remove = t.chat.context.get('chat.filtering.remove-deleted'), do_remove = t.chat.context.get('chat.filtering.remove-deleted'),
event = t.hasListeners('chat:buffer-message') ? new FFZEvent() : null; want_event = t.hasListeners('chat:buffer-message');
let added = 0, let added = 0,
buffered = this.slidingWindowEnd, buffered = this.slidingWindowEnd,
changed = false; changed = false,
event;
for(const msg of this.delayedMessageBuffer) { for(const msg of this.delayedMessageBuffer) {
if ( msg.time <= first || ! msg.shouldDelay ) { if ( msg.time <= first || ! msg.shouldDelay ) {
if ( do_remove !== 0 && (do_remove > 1 || ! see_deleted) && this.isDeletable(msg.event) && msg.event.deleted ) if ( do_remove !== 0 && (do_remove > 1 || ! see_deleted) && this.isDeletable(msg.event) && msg.event.deleted )
continue; continue;
if ( event ) { if ( want_event ) {
event._reset(); if ( ! event ) {
event.message = msg.event; event = new FFZEvent();
const cont = this._ffz_connector ?? this.ffzGetConnector(),
room_id = cont && cont.props.channelID;
event.inst = this;
event.channelID = room_id;
if ( room_id ) {
const r = t.chat.getRoom(room_id, null, true);
if ( r && r.login )
event.channel = r.login;
}
} else
event._reset();
event.message = msg.event;
t.emit('chat:buffer-message', event); t.emit('chat:buffer-message', event);
if ( event.defaultPrevented || msg.event.ffz_removed ) if ( event.defaultPrevented || msg.event.ffz_removed )
continue; continue;

View file

@ -27,18 +27,27 @@
.top-stats-tab:hover, .top-stats-tab:hover,
.whispers-list-item--selected, .whispers-list-item--selected,
.side-nav__overlay-wrapper, .side-nav__overlay-wrapper,
.thread-header__title-bar-container--focused { .thread-header__title-bar-container {
background-color: var(--color-background-alt) !important; background-color: var(--color-background-alt) !important;
} }
.whispers-list-item:hover .whispers-list-item__archive-button:hover, .whispers-list-item:hover .whispers-list-item__archive-button:hover,
.clmgr-table__row:hover, .clmgr-table__row:hover,
.thread-header__title-bar-container, .thread-header__title-bar-container.thread-header__title-bar-container--focused,
.whispers-list-item:hover, .whispers-list-item:hover,
.side-nav-card__link:hover { .side-nav-card__link:hover {
background-color: var(--color-background-alt-2) !important; background-color: var(--color-background-alt-2) !important;
} }
.thread-header__title-bar-container--highlighted,
.thread-header__title-bar-container--highlighted {
background-color: var(--color-background-button) !important;
&:hover {
background-color: var(--color-background-button-hover) !important;
}
}
.top-stats-tab, .top-stats-tab,
.channel-header__user { .channel-header__user {
color: var(--color-text-base) !important; color: var(--color-text-base) !important;