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:
@@ -126,8 +126,35 @@ Hooks.once("ready", () => {
|
||||
if (game.socket) {
|
||||
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 ─────────────────────────────────────────────────── */
|
||||
|
||||
function _registerHandlebarsHelpers() {
|
||||
|
||||
Reference in New Issue
Block a user