Merge remote-tracking branch 'origin/develop' into develop

pull/21833/head
Weblate 2018-03-06 12:22:19 +00:00
commit 4d76194a9d
1 changed files with 16 additions and 5 deletions

View File

@ -154,19 +154,29 @@ class FlairStore extends EventEmitter {
return this._groupProfiles[groupId]; return this._groupProfiles[groupId];
} }
// No request yet, start one // A request is ongoing, wait for it to complete and return the group profile.
if (!this._groupProfilesPromise[groupId]) { if (this._groupProfilesPromise[groupId]) {
this._groupProfilesPromise[groupId] = matrixClient.getGroupProfile(groupId); try {
await this._groupProfilesPromise[groupId];
} catch (e) {
// Don't log the error; this is done below
return null;
} }
return this._groupProfiles[groupId];
}
// No request yet, start one
console.log('FlairStore: Request group profile of ' + groupId);
this._groupProfilesPromise[groupId] = matrixClient.getGroupProfile(groupId);
let profile; let profile;
try { try {
profile = await this._groupProfilesPromise[groupId]; profile = await this._groupProfilesPromise[groupId];
} catch (e) { } catch (e) {
console.log('Failed to get group profile for ' + groupId, e); console.log('FlairStore: Failed to get group profile for ' + groupId, e);
// Don't retry, but allow a retry when the profile is next requested // Don't retry, but allow a retry when the profile is next requested
delete this._groupProfilesPromise[groupId]; delete this._groupProfilesPromise[groupId];
return; return null;
} }
this._groupProfiles[groupId] = { this._groupProfiles[groupId] = {
@ -179,6 +189,7 @@ class FlairStore extends EventEmitter {
/// XXX: This is verging on recreating a third "Flux"-looking Store. We really /// XXX: This is verging on recreating a third "Flux"-looking Store. We really
/// should replace FlairStore with a Flux store and some async actions. /// should replace FlairStore with a Flux store and some async actions.
console.log('FlairStore: Emit updateGroupProfile for ' + groupId);
this.emit('updateGroupProfile'); this.emit('updateGroupProfile');
setTimeout(() => { setTimeout(() => {