fix: sanitisation des formules de roll invalides au chargement
Les anciens messages d'initiative stockaient des formules comme '3 de Bâton (3)' qui cassent Roll.parse(). Le override de prepareDerivedData dans HamalronChatMessage valide chaque formule via Roll.parse() et remplace par '1d6' si invalide.
This commit is contained in:
@@ -1,10 +1,23 @@
|
|||||||
export default class HamalronChatMessage extends ChatMessage {
|
export default class HamalronChatMessage extends ChatMessage {
|
||||||
|
/** @override */
|
||||||
|
prepareDerivedData() {
|
||||||
|
if (this._source?.rolls) {
|
||||||
|
for (const r of this._source.rolls) {
|
||||||
|
try {
|
||||||
|
Roll.parse(r.formula || "1d6")
|
||||||
|
} catch (e) {
|
||||||
|
r.formula = "1d6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.prepareDerivedData()
|
||||||
|
}
|
||||||
|
|
||||||
async _renderRollContent(messageData) {
|
async _renderRollContent(messageData) {
|
||||||
const data = messageData.message
|
const data = messageData.message
|
||||||
const { default: HamalronTirageTarot } = await import("./tirage-tarot.mjs")
|
const { default: HamalronTirageTarot } = await import("./tirage-tarot.mjs")
|
||||||
if (this.rolls[0] instanceof HamalronTirageTarot) {
|
if (this.rolls[0] instanceof HamalronTirageTarot) {
|
||||||
const isPrivate = !this.isContentVisible
|
const isPrivate = !this.isContentVisible
|
||||||
// _renderRollHTML va appeler render sur tous les rolls
|
|
||||||
const rollHTML = await this._renderRollHTML(isPrivate)
|
const rollHTML = await this._renderRollHTML(isPrivate)
|
||||||
if (isPrivate) {
|
if (isPrivate) {
|
||||||
data.flavor = game.i18n.format("CHAT.PrivateRollContent", { user: this.user.name })
|
data.flavor = game.i18n.format("CHAT.PrivateRollContent", { user: this.user.name })
|
||||||
|
|||||||
Reference in New Issue
Block a user