Feature/2099 personal state

This commit is contained in:
Arnfried Griesert
2022-06-29 11:08:57 +00:00
parent 7cdd0bf37f
commit 125e3b5362
9 changed files with 253 additions and 10 deletions
@@ -146,7 +146,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
[self prepareRESTClient];
userPresence = MXPresenceUnknown;
// Refresh device information
[self loadDeviceInformation:nil failure:nil];
@@ -181,7 +181,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
[self registerIdentityServiceDidChangeAccessTokenNotification];
userPresence = MXPresenceUnknown;
// Refresh device information
[self loadDeviceInformation:nil failure:nil];
}
@@ -261,6 +261,15 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
}
}
- (NSString*)userStatusMessage
{
if (mxSession)
{
return mxSession.myUser.statusMsg;
}
return nil;
}
- (NSArray<NSString *> *)linkedEmails
{
NSMutableArray<NSString *> *linkedEmails = [NSMutableArray array];
@@ -664,7 +673,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
{
userPresence = presence;
if (mxSession && !hideUserPresence)
if (mxSession && (!hideUserPresence || BuildSettings.bwiPersonalState))
{
// Update user presence on server side
[mxSession.myUser setPresence:userPresence
@@ -679,12 +688,12 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
[[NSNotificationCenter defaultCenter] postNotificationName:kMXKAccountUserInfoDidChangeNotification object:self.mxCredentials.userId];
}
failure:^(NSError *error) {
MXLogDebug(@"[MXKAccount] %@: set user presence (%lu) failed", self.mxCredentials.userId, (unsigned long)self->userPresence);
MXLogDebug(@"[MXKAccount] %@: set user presence (%lu) and status message (%@) failed", self.mxCredentials.userId, (unsigned long)self->userPresence, self.userStatusMessage);
}];
}
else if (hideUserPresence)
{
MXLogDebug(@"[MXKAccount] %@: set user presence is disabled.", self.mxCredentials.userId);
MXLogDebug(@"[MXKAccount] %@: set user presence and status message is disabled.", self.mxCredentials.userId);
}
}
@@ -1008,7 +1017,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
// Update user presence
MXWeakify(self);
[self setUserPresence:MXPresenceOffline andStatusMessage:nil completion:^{
[self setUserPresence:MXPresenceOffline andStatusMessage:self.userStatusMessage completion:^{
MXStrongifyAndReturnIfNil(self);
[self cancelPauseBackgroundTask];
}];
@@ -1049,7 +1058,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
MXWeakify(self);
[mxSession resume:^{
MXStrongifyAndReturnIfNil(self);
[self setUserPresence:self.preferredSyncPresence andStatusMessage:nil completion:nil];
[self setUserPresence:MXPresenceOffline andStatusMessage:self.userStatusMessage completion:nil];
[self refreshAPNSPusher];
[self refreshPushKitPusher];
@@ -1516,7 +1525,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
MXLogDebug(@"[MXKAccount] %@: The session is ready. Matrix SDK session has been started in %0.fms.", self.mxCredentials.userId, [[NSDate date] timeIntervalSinceDate:self->openSessionStartDate] * 1000);
[self setUserPresence:self.preferredSyncPresence andStatusMessage:nil completion:nil];
[self setUserPresence:MXPresenceOffline andStatusMessage:self.userStatusMessage completion:nil];
} failure:^(NSError *error) {
MXStrongifyAndReturnIfNil(self);
@@ -2171,7 +2180,7 @@ static NSArray<NSNumber*> *initialSyncSilentErrorsHTTPStatusCodes;
if (self.mxSession)
{
self.mxSession.preferredSyncPresence = preferredSyncPresence;
[self setUserPresence:preferredSyncPresence andStatusMessage:nil completion:nil];
[self setUserPresence:MXPresenceOffline andStatusMessage:self.userStatusMessage completion:nil];
}
// Archive updated field