mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 15:09:31 +02:00
Support member display name
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
- (void)logout;
|
||||
|
||||
- (BOOL)isAttachment:(MXEvent*)message;
|
||||
- (NSString*)getMessageDisplayText:(MXEvent*)message;
|
||||
- (NSString*)displayTextFor:(MXEvent*)message inDetailMode:(BOOL)isDetailMode;
|
||||
- (NSString*)displayNameFor:(MXRoomMember*)member;
|
||||
|
||||
@end
|
||||
|
||||
@@ -174,40 +174,50 @@ static MatrixHandler *sharedHandler = nil;
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSString*)getMessageDisplayText:(MXEvent*)message {
|
||||
- (NSString*)displayTextFor:(MXEvent*)message inDetailMode:(BOOL)isDetailMode {
|
||||
NSString *displayText = nil;
|
||||
// Retrieve roomData related to the message
|
||||
MXRoomData *roomData = [self.mxData getRoomData:message.room_id];
|
||||
// Prepare display name for concerned users
|
||||
NSString *userDisplayName = [self displayNameFor:[roomData getMember:message.user_id]];
|
||||
NSString *targetDisplayName = nil;
|
||||
if (message.state_key) {
|
||||
targetDisplayName = [self displayNameFor:[roomData getMember:message.state_key]];
|
||||
}
|
||||
|
||||
switch (message.eventType) {
|
||||
case MXEventTypeRoomName:
|
||||
displayText = [NSString stringWithFormat:@"%@ changed the room name to: %@", message.user_id, message.content[@"name"]];
|
||||
case MXEventTypeRoomName: {
|
||||
displayText = [NSString stringWithFormat:@"%@ changed the room name to: %@", userDisplayName, message.content[@"name"]];
|
||||
break;
|
||||
case MXEventTypeRoomTopic:
|
||||
displayText = [NSString stringWithFormat:@"%@ changed the topic to: %@", message.user_id, message.content[@"topic"]];
|
||||
}
|
||||
case MXEventTypeRoomTopic: {
|
||||
displayText = [NSString stringWithFormat:@"%@ changed the topic to: %@", userDisplayName, message.content[@"topic"]];
|
||||
break;
|
||||
}
|
||||
case MXEventTypeRoomMember: {
|
||||
NSString* membership = message.content[@"membership"];
|
||||
|
||||
if ([membership isEqualToString:@"invite"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@ invited %@", message.user_id, message.state_key];
|
||||
displayText = [NSString stringWithFormat:@"%@ invited %@", userDisplayName, targetDisplayName];
|
||||
} else if ([membership isEqualToString:@"join"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@ joined", message.state_key];
|
||||
displayText = [NSString stringWithFormat:@"%@ joined", userDisplayName];
|
||||
} else if ([membership isEqualToString:@"leave"]) {
|
||||
if ([message.user_id isEqualToString:message.state_key]) {
|
||||
displayText = [NSString stringWithFormat:@"%@ left", message.state_key];
|
||||
displayText = [NSString stringWithFormat:@"%@ left", userDisplayName];
|
||||
} else {
|
||||
NSString *prev = message.content[@"prev"];
|
||||
|
||||
if ([prev isEqualToString:@"join"] || [prev isEqualToString:@"invite"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@ kicked %@", message.user_id, message.state_key];
|
||||
displayText = [NSString stringWithFormat:@"%@ kicked %@", userDisplayName, targetDisplayName];
|
||||
if (message.content[@"reason"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@: %@", displayText, message.content[@"reason"]];
|
||||
}
|
||||
} else if ([prev isEqualToString:@"ban"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@ unbanned %@", message.user_id, message.state_key];
|
||||
displayText = [NSString stringWithFormat:@"%@ unbanned %@", userDisplayName, targetDisplayName];
|
||||
}
|
||||
}
|
||||
} else if ([membership isEqualToString:@"ban"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@ banned %@", message.user_id, message.state_key];
|
||||
displayText = [NSString stringWithFormat:@"%@ banned %@", userDisplayName, targetDisplayName];
|
||||
if (message.content[@"reason"]) {
|
||||
displayText = [NSString stringWithFormat:@"%@: %@", displayText, message.content[@"reason"]];
|
||||
}
|
||||
@@ -233,7 +243,7 @@ static MatrixHandler *sharedHandler = nil;
|
||||
if ([msgtype isEqualToString:@"m.text"]) {
|
||||
displayText = message.content[@"body"];
|
||||
} else if ([msgtype isEqualToString:@"m.emote"]) {
|
||||
displayText = [NSString stringWithFormat:@"* %@ %@", message.user_id, message.content[@"body"]];
|
||||
displayText = [NSString stringWithFormat:@"* %@ %@", userDisplayName, message.content[@"body"]];
|
||||
} else if ([msgtype isEqualToString:@"m.image"]) {
|
||||
displayText = @"image attachment";
|
||||
} else if ([msgtype isEqualToString:@"m.audio"]) {
|
||||
@@ -243,6 +253,12 @@ static MatrixHandler *sharedHandler = nil;
|
||||
} else if ([msgtype isEqualToString:@"m.location"]) {
|
||||
displayText = @"location attachment";
|
||||
}
|
||||
|
||||
// Check whether the sender name has to be added
|
||||
if (isDetailMode && [msgtype isEqualToString:@"m.emote"] == NO) {
|
||||
displayText = [NSString stringWithFormat:@"%@: %@", userDisplayName, displayText];
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
// case MXEventTypeRoomMessageFeedback:
|
||||
@@ -261,4 +277,13 @@ static MatrixHandler *sharedHandler = nil;
|
||||
return displayText;
|
||||
}
|
||||
|
||||
|
||||
- (NSString*)displayNameFor:(MXRoomMember*)member {
|
||||
// Check whether a display name is available. If none, use the user id
|
||||
if (member.displayname.length) {
|
||||
return member.displayname;
|
||||
}
|
||||
return member.user_id;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -161,10 +161,11 @@
|
||||
RecentsTableViewCell *cell = (RecentsTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"RecentsCell" forIndexPath:indexPath];
|
||||
|
||||
MXEvent *mxEvent = self.recents[indexPath.row];
|
||||
MXRoomData *mxRoomData = [[[MatrixHandler sharedHandler] mxData] getRoomData:mxEvent.room_id];
|
||||
MatrixHandler *mxHandler = [MatrixHandler sharedHandler];
|
||||
MXRoomData *mxRoomData = [[mxHandler mxData] getRoomData:mxEvent.room_id];
|
||||
|
||||
cell.roomTitle.text = [mxRoomData room_id]; // TODO use room display name
|
||||
cell.lastEventDescription.text = [mxEvent description];
|
||||
cell.lastEventDescription.text = [mxHandler displayTextFor:mxEvent inDetailMode:YES];
|
||||
|
||||
NSDate *date = [NSDate dateWithTimeIntervalSince1970:mxEvent.ts];
|
||||
NSString *dateFormat = @"MMM dd HH:mm";
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if (self.roomId) {
|
||||
MatrixHandler *mxHandler = [MatrixHandler sharedHandler];
|
||||
self.mxRoomData = [[mxHandler mxData] getRoomData:self.roomId];
|
||||
self.detailDescriptionLabel.text = [mxHandler getMessageDisplayText:self.mxRoomData.lastMessage];
|
||||
self.detailDescriptionLabel.text = [mxHandler displayTextFor:self.mxRoomData.lastMessage inDetailMode:NO];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user