Dedupe requests to fetch group profile data
This commit is contained in:
parent
9975941f3c
commit
6e832c7d73
1 changed files with 11 additions and 1 deletions
|
@ -39,6 +39,9 @@ class FlairStore {
|
|||
// avatar_url: 'mxc://...'
|
||||
// }
|
||||
};
|
||||
this._groupProfilesPromise = {
|
||||
// $groupId: Promise
|
||||
};
|
||||
this._usersPending = {
|
||||
// $userId: {
|
||||
// prom: Promise
|
||||
|
@ -149,15 +152,22 @@ class FlairStore {
|
|||
return this._groupProfiles[groupId];
|
||||
}
|
||||
|
||||
const profile = await matrixClient.getGroupProfile(groupId);
|
||||
// No request yet, start one
|
||||
if (!this._groupProfilesPromise[groupId]) {
|
||||
this._groupProfilesPromise[groupId] = matrixClient.getGroupProfile(groupId);
|
||||
}
|
||||
|
||||
const profile = await this._groupProfilesPromise[groupId];
|
||||
this._groupProfiles[groupId] = {
|
||||
groupId,
|
||||
avatarUrl: profile.avatar_url,
|
||||
name: profile.name,
|
||||
shortDescription: profile.short_description,
|
||||
};
|
||||
|
||||
setTimeout(() => {
|
||||
delete this._groupProfiles[groupId];
|
||||
delete this._groupProfilesPromise[groupId];
|
||||
}, GROUP_PROFILES_CACHE_BUST_MS);
|
||||
|
||||
return this._groupProfiles[groupId];
|
||||
|
|
Loading…
Reference in a new issue