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:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user