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.
This commit is contained in:
2026-07-10 23:17:21 +02:00
parent c9c86e8c5f
commit aef84ffdd1
+7 -3
View File
@@ -3,14 +3,18 @@ export default class HamalronChatMessage extends ChatMessage {
prepareDerivedData() { prepareDerivedData() {
if (this._source?.rolls) { if (this._source?.rolls) {
for (const r of this._source.rolls) { for (const r of this._source.rolls) {
try { if (r.formula && !/^[\ddDfFkKlLhH+\-*\/()%\s]+$/.test(r.formula)) {
Roll.parse(r.formula || "1d6")
} catch (e) {
r.formula = "1d6" r.formula = "1d6"
} }
} }
} }
try {
super.prepareDerivedData() super.prepareDerivedData()
} catch (e) {
console.warn("Hamalron | Failed to parse roll, resetting rolls")
if (this._source) this._source.rolls = []
super.prepareDerivedData()
}
} }
async _renderRollContent(messageData) { async _renderRollContent(messageData) {