conditionally set the current user status (#7383) (#7384)

(cherry picked from commit 0d743bb286)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
This commit is contained in:
Mattermost Build 2023-06-02 17:41:17 +03:00 committed by GitHub
parent 8853f6f1f9
commit 43b02f2a1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -48,12 +48,25 @@ export const fetchMe = async (serverUrl: string, fetchOnly = false): Promise<MyU
const client = NetworkManager.getClient(serverUrl);
const {operator} = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
const [user, userStatus] = await Promise.all<[Promise<UserProfile>, Promise<UserStatus>]>([
client.getMe(),
client.getStatus('me'),
]);
const resultSettled = await Promise.allSettled([client.getMe(), client.getStatus('me')]);
let user: UserProfile|undefined;
let userStatus: UserStatus|undefined;
for (const result of resultSettled) {
if (result.status === 'fulfilled') {
const {value} = result;
if ('email' in value) {
user = value;
} else {
userStatus = value;
}
}
}
user.status = userStatus.status;
if (!user) {
throw new Error('User not found');
}
user.status = userStatus?.status;
if (!fetchOnly) {
await operator.handleUsers({users: [user], prepareRecordsOnly: false});