mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Messages display: Use local part of userId (instead of full userId) to apply 'bing' style on incoming messages.
This commit is contained in:
parent
94e0014bde
commit
8b741725f4
4 changed files with 27 additions and 6 deletions
|
@ -27,6 +27,7 @@ extern NSString *const kMatrixHandlerUnsupportedMessagePrefix;
|
|||
@property (strong, nonatomic) NSString *homeServer;
|
||||
@property (strong, nonatomic) NSString *userLogin;
|
||||
@property (strong, nonatomic) NSString *userId;
|
||||
@property (strong, nonatomic, readonly) NSString *localPartFromUserId;
|
||||
@property (strong, nonatomic) NSString *accessToken;
|
||||
|
||||
// The type of events to display
|
||||
|
|
|
@ -238,6 +238,7 @@ static MatrixHandler *sharedHandler = nil;
|
|||
- (void)logout {
|
||||
// Reset access token (mxSession is closed by setter)
|
||||
self.accessToken = nil;
|
||||
self.userId = nil;
|
||||
|
||||
// Reset local storage of user's settings
|
||||
self.userDisplayName = @"";
|
||||
|
@ -358,12 +359,28 @@ static MatrixHandler *sharedHandler = nil;
|
|||
- (void)setUserId:(NSString *)inUserId {
|
||||
if (inUserId.length) {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:inUserId forKey:@"userid"];
|
||||
|
||||
// Deduce local userid
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"localuserid"];
|
||||
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"@(.*):\\w+" options:NSRegularExpressionCaseInsensitive error:nil];
|
||||
NSTextCheckingResult *match = [regex firstMatchInString:inUserId options:0 range:NSMakeRange(0, [inUserId length])];
|
||||
if (match.numberOfRanges == 2) {
|
||||
NSString* localId = [inUserId substringWithRange:[match rangeAtIndex:1]];
|
||||
if (localId) {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:localId forKey:@"localuserid"];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"userid"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"localuserid"];
|
||||
}
|
||||
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||
}
|
||||
|
||||
- (NSString *)localPartFromUserId {
|
||||
return [[NSUserDefaults standardUserDefaults] objectForKey:@"localuserid"];
|
||||
}
|
||||
|
||||
- (NSString *)accessToken {
|
||||
return [[NSUserDefaults standardUserDefaults] objectForKey:@"accesstoken"];
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ extern NSString *const kFailedEventId;
|
|||
|
||||
typedef enum : NSUInteger {
|
||||
RoomMessageComponentStyleDefault,
|
||||
RoomMessageComponentStyleHighlighted,
|
||||
RoomMessageComponentStyleBing,
|
||||
RoomMessageComponentStyleInProgress,
|
||||
RoomMessageComponentStyleFailed,
|
||||
RoomMessageComponentStyleUnsupported
|
||||
|
|
|
@ -43,21 +43,24 @@ NSString *const kFailedEventId = @"failedEventId";
|
|||
_date = nil;
|
||||
}
|
||||
|
||||
// Set state event flag
|
||||
_isStateEvent = (event.eventType != MXEventTypeRoomMessage);
|
||||
|
||||
// Set style
|
||||
BOOL isIncomingMsg = ([event.userId isEqualToString:mxHandler.userId] == NO);
|
||||
if ([textMessage hasPrefix:kMatrixHandlerUnsupportedMessagePrefix]) {
|
||||
_style = RoomMessageComponentStyleUnsupported;
|
||||
} else if ([_eventId hasPrefix:kFailedEventId]) {
|
||||
_style = RoomMessageComponentStyleFailed;
|
||||
} else if (isIncomingMsg && ([textMessage rangeOfString:mxHandler.userDisplayName options:NSCaseInsensitiveSearch].location != NSNotFound || [textMessage rangeOfString:mxHandler.userId options:NSCaseInsensitiveSearch].location != NSNotFound)) {
|
||||
_style = RoomMessageComponentStyleHighlighted;
|
||||
} else if (isIncomingMsg && !_isStateEvent
|
||||
&& ([textMessage rangeOfString:mxHandler.userDisplayName options:NSCaseInsensitiveSearch].location != NSNotFound
|
||||
|| (mxHandler.localPartFromUserId && [textMessage rangeOfString:mxHandler.localPartFromUserId options:NSCaseInsensitiveSearch].location != NSNotFound))) {
|
||||
_style = RoomMessageComponentStyleBing;
|
||||
} else if (!isIncomingMsg && [_eventId hasPrefix:kLocalEchoEventIdPrefix]) {
|
||||
_style = RoomMessageComponentStyleInProgress;
|
||||
} else {
|
||||
_style = RoomMessageComponentStyleDefault;
|
||||
}
|
||||
|
||||
_isStateEvent = (event.eventType != MXEventTypeRoomMessage);
|
||||
} else {
|
||||
// Ignore this event
|
||||
self = nil;
|
||||
|
@ -74,7 +77,7 @@ NSString *const kFailedEventId = @"failedEventId";
|
|||
case RoomMessageComponentStyleDefault:
|
||||
textColor = [UIColor blackColor];
|
||||
break;
|
||||
case RoomMessageComponentStyleHighlighted:
|
||||
case RoomMessageComponentStyleBing:
|
||||
textColor = [UIColor blueColor];
|
||||
break;
|
||||
case RoomMessageComponentStyleInProgress:
|
||||
|
|
Loading…
Reference in a new issue