added raid message support

This commit is contained in:
zomo
2026-04-19 20:11:00 -05:00
parent dc5afe4743
commit 27ae0dd0ab
5 changed files with 51 additions and 38 deletions
+18 -4
View File
@@ -224,10 +224,7 @@ function loadChatMessage(chatboxMessage) {
function loadReplyLine(chatboxMessage) { function loadReplyLine(chatboxMessage) {
const replyline = chatboxMessage.querySelector('.ffz--fix-reply-line') const replyline = chatboxMessage.querySelector('.ffz--fix-reply-line')
const replyUsername = replyline?.querySelector('p > span:nth-child(1)') const replyUsername = replyline?.querySelector('p > span:nth-child(1)')
if (!replyUsername) { if (!replyUsername || replyUsername.querySelector('.obf-name')) {
return
}
if (replyUsername.querySelector('.obf-name')) {
return return
} }
const chatMessage = { const chatMessage = {
@@ -260,6 +257,22 @@ function loadMessageMentions(chatboxMessage) {
eachMention(messageMention) eachMention(messageMention)
} }
} }
function loadRaidMessage(chatboxMessage) {
const usernamebox = chatboxMessage.querySelector(
'[data-test-selector="user-notice-line"] div > strong:nth-child(1)'
)
if (!usernamebox || usernamebox.querySelector('.obf-name')) {
return
}
const chatMessage = {
username: usernamebox.textContent,
isMod: false,
}
const newChatMessage = obfuscator(chatMessage)
if (newChatMessage !== null) {
setUsernameDetails(newChatMessage, usernamebox)
}
}
function loadAdditionalUserNames(chatboxMessage) { function loadAdditionalUserNames(chatboxMessage) {
const chatterNames = chatboxMessage.querySelectorAll('.chatter-name') const chatterNames = chatboxMessage.querySelectorAll('.chatter-name')
for (const chatterName of chatterNames) { for (const chatterName of chatterNames) {
@@ -337,6 +350,7 @@ function eachMutationTarget(record, target) {
} }
loadChatMessage(chatboxMessage) loadChatMessage(chatboxMessage)
loadAdditionalUserNames(chatboxMessage) loadAdditionalUserNames(chatboxMessage)
loadRaidMessage(chatboxMessage)
} }
} }
+30 -10
View File
@@ -5,7 +5,7 @@ import {
nameImages, nameImages,
usernameExtraSuffix, usernameExtraSuffix,
} from './options' } from './options'
import { ChatMessage, elementTreeFind, innermostElement } from './util' import { NameDetails, elementTreeFind, innermostElement } from './util'
function loadChatMessage(chatboxMessage: Element) { function loadChatMessage(chatboxMessage: Element) {
// only chat messages // only chat messages
@@ -58,7 +58,7 @@ function loadChatMessage(chatboxMessage: Element) {
} }
// combine details into object // combine details into object
const chatMessage: ChatMessage = { const chatMessage: NameDetails = {
username: chatboxUserInner.textContent, username: chatboxUserInner.textContent,
isMod, isMod,
} }
@@ -80,16 +80,12 @@ function loadReplyLine(chatboxMessage: Element) {
'p > span:nth-child(1)' 'p > span:nth-child(1)'
) )
if (!replyUsername) {
return
}
// already applied username // already applied username
if (replyUsername.querySelector('.obf-name')) { if (!replyUsername || replyUsername.querySelector('.obf-name')) {
return return
} }
const chatMessage: ChatMessage = { const chatMessage: NameDetails = {
username: replyUsername.textContent.replace(/^@/, ''), username: replyUsername.textContent.replace(/^@/, ''),
isMod: false, isMod: false,
} }
@@ -109,7 +105,7 @@ function loadMessageMentions(chatboxMessage: Element) {
return return
} }
const chatMessage: ChatMessage = { const chatMessage: NameDetails = {
username: messageMention.textContent.replace(/^@/, ''), username: messageMention.textContent.replace(/^@/, ''),
isMod: false, isMod: false,
} }
@@ -131,6 +127,29 @@ function loadMessageMentions(chatboxMessage: Element) {
} }
} }
function loadRaidMessage(chatboxMessage: Element) {
const usernamebox = chatboxMessage.querySelector<HTMLElement>(
'[data-test-selector="user-notice-line"] div > strong:nth-child(1)'
)
// already applied username
if (!usernamebox || usernamebox.querySelector('.obf-name')) {
return
}
const chatMessage: NameDetails = {
username: usernamebox.textContent,
isMod: false,
}
// run main script (process chatMessage), return new ChatMessage
const newChatMessage = obfuscator(chatMessage)
if (newChatMessage !== null) {
setUsernameDetails(newChatMessage, usernamebox)
}
}
function loadAdditionalUserNames(chatboxMessage: Element) { function loadAdditionalUserNames(chatboxMessage: Element) {
// look for additional chat member names // look for additional chat member names
const chatterNames = const chatterNames =
@@ -152,7 +171,7 @@ function loadAdditionalUserNames(chatboxMessage: Element) {
} }
// combine details into object // combine details into object
const chatMessage: ChatMessage = { const chatMessage: NameDetails = {
username, username,
isMod: false, isMod: false,
} }
@@ -234,5 +253,6 @@ function eachMutationTarget(record: MutationRecord, target: HTMLElement) {
} }
loadChatMessage(chatboxMessage) loadChatMessage(chatboxMessage)
loadAdditionalUserNames(chatboxMessage) loadAdditionalUserNames(chatboxMessage)
loadRaidMessage(chatboxMessage)
} }
} }
+2 -2
View File
@@ -1,9 +1,9 @@
import { DEBUG, NameConfigInstance, ignoreMod } from './options' import { DEBUG, NameConfigInstance, ignoreMod } from './options'
import { getRandomName, getStoredUser, setStoredUser } from './storage' import { getRandomName, getStoredUser, setStoredUser } from './storage'
import { ChatMessage } from './util' import { NameDetails } from './util'
export function obfuscator( export function obfuscator(
chatMessage: ChatMessage chatMessage: NameDetails
): NameConfigInstance | null { ): NameConfigInstance | null {
if (ignoreMod && chatMessage.isMod) { if (ignoreMod && chatMessage.isMod) {
return null return null
-21
View File
@@ -44,24 +44,3 @@ watch streaks
</div> </div>
</div> </div>
``` ```
raid message
```html
<div class="Layout-sc-1xcs6mc-0">
<div class="Layout-sc-1xcs6mc-0">
<div class="Layout-sc-1xcs6mc-0 ikqKEy">
<div style="background: rgb(100, 65, 165);" class="Layout-sc-1xcs6mc-0 ijxYla"></div>
<div style="overflow-wrap: break-word;" data-test-selector="user-notice-line"
class="Layout-sc-1xcs6mc-0 cglxbn">
<div class="Layout-sc-1xcs6mc-0 fHdBNk">
<div class="Layout-sc-1xcs6mc-0 hgZmyJ">
<div class="Layout-sc-1xcs6mc-0 jfyitl"><strong>thezomo</strong> is raiding with a party of
<strong>12</strong>.</div>
</div>
</div>
</div>
</div>
</div>
</div>
```
+1 -1
View File
@@ -1,4 +1,4 @@
export interface ChatMessage { export interface NameDetails {
username: string username: string
isMod: boolean isMod: boolean
} }