FIX: Make sure user status on mentions doesnt fail in plugins (#19442)

This fixes the problem reported in https://meta.discourse.org/t/trackstatus-error-in-docs-topics/248717 and also guarantees that the same problem won't appear in other plugins.

The problem was that we're calling trackStatus() and on() on a user object, but that only works if it's a user model and fails on plain js objects.

I'm not adding tests here because in Core we always have a properly wrapped user model here. But this fix makes sure that plugins that don't won't fail here.
This commit is contained in:
Andrei Prigorshnev 2022-12-13 16:51:11 +04:00 committed by GitHub
parent fd405179a7
commit 337a033f3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -431,15 +431,15 @@ export default class PostCooked {
_trackMentionedUsersStatus() { _trackMentionedUsersStatus() {
this._post()?.mentioned_users?.forEach((user) => { this._post()?.mentioned_users?.forEach((user) => {
user.trackStatus(); user.trackStatus?.();
user.on("status-changed", this, "_rerenderUserStatusOnMentions"); user.on?.("status-changed", this, "_rerenderUserStatusOnMentions");
}); });
} }
_stopTrackingMentionedUsersStatus() { _stopTrackingMentionedUsersStatus() {
this._post()?.mentioned_users?.forEach((user) => { this._post()?.mentioned_users?.forEach((user) => {
user.stopTrackingStatus(); user.stopTrackingStatus?.();
user.off("status-changed", this, "_rerenderUserStatusOnMentions"); user.off?.("status-changed", this, "_rerenderUserStatusOnMentions");
}); });
} }