fix: migration auto des items de types obsolètes au démarrage

- Hook 'ready' (GM uniquement) supprime les items dont le type n'est
  plus enregistré (ex: 'attribute' de l'ancienne version)
- Évite l'erreur 'type X is not a valid type for Item Document class'

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-29 21:31:31 +02:00
parent 37335d3e9f
commit 0b53b19cf8

View File

@@ -126,8 +126,35 @@ Hooks.once("ready", () => {
if (game.socket) { if (game.socket) {
game.socket.on(`system.${SYSTEM_ID}`, _onSocketMessage) game.socket.on(`system.${SYSTEM_ID}`, _onSocketMessage)
} }
// Migration : supprime les items de types obsolètes (ex: "attribute")
if (game.user.isGM) {
_migrateObsoleteItems()
}
}) })
/** Supprime les items dont le type n'est plus reconnu par le système. */
async function _migrateObsoleteItems() {
const validTypes = new Set(["anomaly", "aspect", "equipment", "weapon", "armure"])
for (const actor of game.actors) {
const toDelete = actor.items
.filter(i => !validTypes.has(i.type))
.map(i => i.id)
if (toDelete.length) {
console.warn(`${SYSTEM_ID} | Migration: suppression de ${toDelete.length} item(s) obsolète(s) sur ${actor.name}`, toDelete)
await actor.deleteEmbeddedDocuments("Item", toDelete)
}
}
// Items globaux (hors acteur)
const globalToDelete = game.items
.filter(i => !validTypes.has(i.type))
.map(i => i.id)
if (globalToDelete.length) {
console.warn(`${SYSTEM_ID} | Migration: suppression de ${globalToDelete.length} item(s) global(aux) obsolète(s)`, globalToDelete)
await Item.deleteDocuments(globalToDelete)
}
}
/* ─── Handlebars helpers ─────────────────────────────────────────────────── */ /* ─── Handlebars helpers ─────────────────────────────────────────────────── */
function _registerHandlebarsHelpers() { function _registerHandlebarsHelpers() {