fix: crash on invalid displaynames

This commit is contained in:
Nicolas Werner 2021-11-09 21:27:55 +01:00
parent 8baf9d44c7
commit d2e7de4702
No known key found for this signature in database
GPG Key ID: C8D75E610773F2D9
2 changed files with 46 additions and 4 deletions

View File

@ -144,11 +144,13 @@ abstract class EventLocalizations {
text = i18n.joinedTheChat(targetName);
}
} else if (newMembership == 'join') {
final newAvatar = event.content['avatar_url'] ?? '';
final oldAvatar = event.prevContent?['avatar_url'] ?? '';
final newAvatar = event.content.tryGet<String>('avatar_url') ?? '';
final oldAvatar = event.prevContent?.tryGet<String>('avatar_url') ?? '';
final newDisplayname = event.content['displayname'] ?? '';
final oldDisplayname = event.prevContent?['displayname'] ?? '';
final newDisplayname =
event.content.tryGet<String>('displayname') ?? '';
final oldDisplayname =
event.prevContent?.tryGet<String>('displayname') ?? '';
final stateKey = event.stateKey;
// Has the user avatar changed?

View File

@ -368,6 +368,46 @@ void main() {
'Removed by Example');
expect(event.isEventTypeKnown, true);
event = Event.fromJson({
'content': {
'avatar_url':
'mxc://pixelthefox.net/bmGuC44Eeb3BomfkZTP02DVnGaRp4dek',
'displayname': [
[
[[]]
]
],
'membership': 'join'
},
'origin_server_ts': 1636487843183,
'room_id': '!watercooler-v9:maunium.net',
'sender': '@nyaaori:pixelthefox.net',
'state_key': '@nyaaori:pixelthefox.net',
'type': 'm.room.member',
'unsigned': {
'prev_content': {
'avatar_url':
'mxc://pixelthefox.net/bmGuC44Eeb3BomfkZTP02DVnGaRp4dek',
'displayname': 1,
'membership': 'join'
},
'prev_sender': '@nyaaori:pixelthefox.net',
'replaces_state': '\$kcqn2k6kXQKOM45t_p8OA03PQRR3KB2N_PN4HUq1GiY'
},
'event_id': '\$21DJjleMGcviLoT4L9wvxawMlOXSQ9yW6R8mrhlbhfU',
'user_id': '@nyaaori:pixelthefox.net',
'replaces_state': '\$kcqn2k6kXQKOM45t_p8OA03PQRR3KB2N_PN4HUq1GiY',
'prev_content': {
'avatar_url':
'mxc://pixelthefox.net/bmGuC44Eeb3BomfkZTP02DVnGaRp4dek',
'displayname': 1,
'membership': 'join'
}
}, room);
expect(
event.getLocalizedBody(MatrixDefaultLocalizations()) is String, true);
expect(event.isEventTypeKnown, true);
event = Event.fromJson({
'content': {
'body': 'Landing',