mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-23 10:02:46 +02:00
Feature/2099 personal state
This commit is contained in:
@@ -104,6 +104,12 @@ typedef BOOL (^MXKAccountOnCertificateChange)(MXKAccount *mxAccount, NSData *cer
|
||||
*/
|
||||
@property (nonatomic, readonly) MXPresence userPresence;
|
||||
|
||||
/**
|
||||
The account user's status message (empty string by default).
|
||||
The notification `kMXKAccountUserInfoDidChangeNotification` is posted in case of change of this property.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *userStatusMessage;
|
||||
|
||||
/**
|
||||
The account user's tint color: a unique color fixed by the user id. This tint color may be used to highlight
|
||||
rooms which belong to this account's user.
|
||||
@@ -282,6 +288,15 @@ typedef BOOL (^MXKAccountOnCertificateChange)(MXKAccount *mxAccount, NSData *cer
|
||||
*/
|
||||
- (void)setUserAvatarUrl:(NSString*)avatarUrl success:(void (^)(void))success failure:(void (^)(NSError *error))failure;
|
||||
|
||||
/**
|
||||
Set the avatar url of the account user.
|
||||
|
||||
@param presence The users presence state.
|
||||
@param statusMessage A custom text defined by the user that shows its current state.
|
||||
@param completion Completion handler.
|
||||
*/
|
||||
- (void)setUserPresence:(MXPresence)presence andStatusMessage:(NSString *)statusMessage completion:(void (^)(void))completion;
|
||||
|
||||
/**
|
||||
Update the account password.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user