Implement the listeners for user updates
This commit is contained in:
parent
240fb53b85
commit
00829eae04
1 changed files with 24 additions and 1 deletions
|
|
@ -2,7 +2,7 @@ import { filterPrivateRows, PrivacyMode } from "../privacy.mjs";
|
||||||
import { Database } from "./Database.mjs";
|
import { Database } from "./Database.mjs";
|
||||||
import { Logger } from "../Logger.mjs";
|
import { Logger } from "../Logger.mjs";
|
||||||
|
|
||||||
const { mergeObject, randomID } = foundry.utils;
|
const { hasProperty, mergeObject, randomID } = foundry.utils;
|
||||||
|
|
||||||
const dataFlag = `rows`;
|
const dataFlag = `rows`;
|
||||||
|
|
||||||
|
|
@ -116,4 +116,27 @@ export class UserFlagDatabase extends Database {
|
||||||
this.render({ userUpdated: userID });
|
this.render({ userUpdated: userID });
|
||||||
this.triggerListeners();
|
this.triggerListeners();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// MARK: Listeners
|
||||||
|
static #listener = null;
|
||||||
|
static async registerListeners() {
|
||||||
|
if (this.#listener !== null) { return };
|
||||||
|
|
||||||
|
this.#listener = Hooks.on(`updateUser`, (doc, diff, options, userID) => {
|
||||||
|
Logger.debug({ diff, userID, doc });
|
||||||
|
// Shortcircuit when on the client that triggered the update
|
||||||
|
if (userID === game.user.id) { return };
|
||||||
|
if (!hasProperty(diff, `flags.${__ID__}.${dataFlag}`)) { return };
|
||||||
|
this.render({ userUpdated: doc.id });
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
static async triggerListeners() {
|
||||||
|
// No-op because the User document lifecycle takes care of it
|
||||||
|
};
|
||||||
|
|
||||||
|
static async unregisterListeners() {
|
||||||
|
Hooks.off(`updateUser`, this.#listener);
|
||||||
|
this.#listener = null;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue