Files
fvtt-hamalron/module/documents/chat-message.mjs
T
uberwald aef84ffdd1 fix: sanitisation robuste des formules de roll au chargement
Utilise une regex pour détecter les formules invalides avant
d'appeler super.prepareDerivedData(). Fallback sur try-catch
qui vide les rolls en dernier recours.
2026-07-10 23:17:21 +02:00

38 lines
1.2 KiB
JavaScript

export default class HamalronChatMessage extends ChatMessage {
/** @override */
prepareDerivedData() {
if (this._source?.rolls) {
for (const r of this._source.rolls) {
if (r.formula && !/^[\ddDfFkKlLhH+\-*\/()%\s]+$/.test(r.formula)) {
r.formula = "1d6"
}
}
}
try {
super.prepareDerivedData()
} catch (e) {
console.warn("Hamalron | Failed to parse roll, resetting rolls")
if (this._source) this._source.rolls = []
super.prepareDerivedData()
}
}
async _renderRollContent(messageData) {
const data = messageData.message
const { default: HamalronTirageTarot } = await import("./tirage-tarot.mjs")
if (this.rolls[0] instanceof HamalronTirageTarot) {
const isPrivate = !this.isContentVisible
const rollHTML = await this._renderRollHTML(isPrivate)
if (isPrivate) {
data.flavor = game.i18n.format("CHAT.PrivateRollContent", { user: this.user.name })
messageData.isWhisper = false
messageData.alias = this.user.name
}
data.content = `<section class="dice-rolls">${rollHTML}</section>`
return
}
return super._renderRollContent(messageData)
}
}