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 { Logger } from "../Logger.mjs";
|
||||
|
||||
const { mergeObject, randomID } = foundry.utils;
|
||||
const { hasProperty, mergeObject, randomID } = foundry.utils;
|
||||
|
||||
const dataFlag = `rows`;
|
||||
|
||||
|
|
@ -116,4 +116,27 @@ export class UserFlagDatabase extends Database {
|
|||
this.render({ userUpdated: userID });
|
||||
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