fix: Use MatrixLocalizations to calculate fallback user displayname
This commit is contained in:
parent
4ff8696217
commit
00cb292781
|
|
@ -702,9 +702,9 @@ class Event extends MatrixEvent {
|
||||||
bool plaintextBody = false,
|
bool plaintextBody = false,
|
||||||
bool removeMarkdown = false}) {
|
bool removeMarkdown = false}) {
|
||||||
if (redacted) {
|
if (redacted) {
|
||||||
return i18n.removedBy(
|
return i18n.removedBy((redactedBecause?.senderFromMemoryOrFallback)
|
||||||
(redactedBecause?.senderFromMemoryOrFallback)?.calcDisplayname() ??
|
?.calcDisplayname(i18n: i18n) ??
|
||||||
senderId);
|
senderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
var body = plaintextBody ? this.plaintextBody : this.body;
|
var body = plaintextBody ? this.plaintextBody : this.body;
|
||||||
|
|
@ -759,7 +759,7 @@ class Event extends MatrixEvent {
|
||||||
textOnlyMessageTypes.contains(messageType)) {
|
textOnlyMessageTypes.contains(messageType)) {
|
||||||
final senderNameOrYou = senderId == room.client.userID
|
final senderNameOrYou = senderId == room.client.userID
|
||||||
? i18n.you
|
? i18n.you
|
||||||
: senderFromMemoryOrFallback.calcDisplayname();
|
: senderFromMemoryOrFallback.calcDisplayname(i18n: i18n);
|
||||||
localizedBody = '$senderNameOrYou: $localizedBody';
|
localizedBody = '$senderNameOrYou: $localizedBody';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -253,8 +253,8 @@ class Room {
|
||||||
if (heroes.isNotEmpty) {
|
if (heroes.isNotEmpty) {
|
||||||
final result = heroes
|
final result = heroes
|
||||||
.where((hero) => hero.isNotEmpty)
|
.where((hero) => hero.isNotEmpty)
|
||||||
.map((hero) =>
|
.map((hero) => unsafeGetUserFromMemoryOrFallback(hero)
|
||||||
unsafeGetUserFromMemoryOrFallback(hero).calcDisplayname())
|
.calcDisplayname(i18n: i18n))
|
||||||
.join(', ');
|
.join(', ');
|
||||||
if (isAbandonedDMRoom) {
|
if (isAbandonedDMRoom) {
|
||||||
return i18n.wasDirectChatDisplayName(result);
|
return i18n.wasDirectChatDisplayName(result);
|
||||||
|
|
@ -265,7 +265,7 @@ class Room {
|
||||||
if (membership == Membership.invite) {
|
if (membership == Membership.invite) {
|
||||||
final sender = getState(EventTypes.RoomMember, client.userID!)
|
final sender = getState(EventTypes.RoomMember, client.userID!)
|
||||||
?.senderFromMemoryOrFallback
|
?.senderFromMemoryOrFallback
|
||||||
.calcDisplayname();
|
.calcDisplayname(i18n: i18n);
|
||||||
if (sender != null) return sender;
|
if (sender != null) return sender;
|
||||||
}
|
}
|
||||||
if (membership == Membership.leave) {
|
if (membership == Membership.leave) {
|
||||||
|
|
@ -273,7 +273,7 @@ class Room {
|
||||||
if (invitation != null && invitation.unsigned?['prev_sender'] != null) {
|
if (invitation != null && invitation.unsigned?['prev_sender'] != null) {
|
||||||
final name = unsafeGetUserFromMemoryOrFallback(
|
final name = unsafeGetUserFromMemoryOrFallback(
|
||||||
invitation.unsigned?['prev_sender'])
|
invitation.unsigned?['prev_sender'])
|
||||||
.calcDisplayname();
|
.calcDisplayname(i18n: i18n);
|
||||||
return i18n.wasDirectChatDisplayName(name);
|
return i18n.wasDirectChatDisplayName(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,10 +105,10 @@ class User extends Event {
|
||||||
/// the first character of each word becomes uppercase.
|
/// the first character of each word becomes uppercase.
|
||||||
/// If [mxidLocalPartFallback] is true, then the local part of the mxid will be shown
|
/// If [mxidLocalPartFallback] is true, then the local part of the mxid will be shown
|
||||||
/// if there is no other displayname available. If not then this will return "Unknown user".
|
/// if there is no other displayname available. If not then this will return "Unknown user".
|
||||||
String calcDisplayname({
|
String calcDisplayname(
|
||||||
bool? formatLocalpart,
|
{bool? formatLocalpart,
|
||||||
bool? mxidLocalPartFallback,
|
bool? mxidLocalPartFallback,
|
||||||
}) {
|
MatrixLocalizations i18n = const MatrixDefaultLocalizations()}) {
|
||||||
formatLocalpart ??= room.client.formatLocalpart;
|
formatLocalpart ??= room.client.formatLocalpart;
|
||||||
mxidLocalPartFallback ??= room.client.mxidLocalPartFallback;
|
mxidLocalPartFallback ??= room.client.mxidLocalPartFallback;
|
||||||
final displayName = this.displayName;
|
final displayName = this.displayName;
|
||||||
|
|
@ -128,7 +128,7 @@ class User extends Event {
|
||||||
}
|
}
|
||||||
return words.join(' ').trim();
|
return words.join(' ').trim();
|
||||||
}
|
}
|
||||||
return 'Unknown user';
|
return i18n.unknownUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Call the Matrix API to kick this user from this room.
|
/// Call the Matrix API to kick this user from this room.
|
||||||
|
|
|
||||||
|
|
@ -31,23 +31,23 @@ abstract class EventLocalizations {
|
||||||
Event event, MatrixLocalizations i18n, String body) {
|
Event event, MatrixLocalizations i18n, String body) {
|
||||||
switch (event.messageType) {
|
switch (event.messageType) {
|
||||||
case MessageTypes.Image:
|
case MessageTypes.Image:
|
||||||
return i18n
|
return i18n.sentAPicture(
|
||||||
.sentAPicture(event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
case MessageTypes.File:
|
case MessageTypes.File:
|
||||||
return i18n
|
return i18n.sentAFile(
|
||||||
.sentAFile(event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
case MessageTypes.Audio:
|
case MessageTypes.Audio:
|
||||||
return i18n
|
return i18n.sentAnAudio(
|
||||||
.sentAnAudio(event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
case MessageTypes.Video:
|
case MessageTypes.Video:
|
||||||
return i18n
|
return i18n.sentAVideo(
|
||||||
.sentAVideo(event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
case MessageTypes.Location:
|
case MessageTypes.Location:
|
||||||
return i18n.sharedTheLocation(
|
return i18n.sharedTheLocation(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
case MessageTypes.Sticker:
|
case MessageTypes.Sticker:
|
||||||
return i18n
|
return i18n.sentASticker(
|
||||||
.sentASticker(event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
case MessageTypes.Emote:
|
case MessageTypes.Emote:
|
||||||
return '* $body';
|
return '* $body';
|
||||||
case MessageTypes.BadEncrypted:
|
case MessageTypes.BadEncrypted:
|
||||||
|
|
@ -83,17 +83,17 @@ abstract class EventLocalizations {
|
||||||
static final Map<String,
|
static final Map<String,
|
||||||
String Function(Event event, MatrixLocalizations i18n, String body)?>
|
String Function(Event event, MatrixLocalizations i18n, String body)?>
|
||||||
localizationsMap = {
|
localizationsMap = {
|
||||||
EventTypes.Sticker: (event, i18n, body) =>
|
EventTypes.Sticker: (event, i18n, body) => i18n.sentASticker(
|
||||||
i18n.sentASticker(event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.Redaction: (event, i18n, body) => i18n
|
EventTypes.Redaction: (event, i18n, body) => i18n.redactedAnEvent(
|
||||||
.redactedAnEvent(event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.RoomAliases: (event, i18n, body) => i18n.changedTheRoomAliases(
|
EventTypes.RoomAliases: (event, i18n, body) => i18n.changedTheRoomAliases(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.RoomCanonicalAlias: (event, i18n, body) =>
|
EventTypes.RoomCanonicalAlias: (event, i18n, body) =>
|
||||||
i18n.changedTheRoomInvitationLink(
|
i18n.changedTheRoomInvitationLink(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.RoomCreate: (event, i18n, body) =>
|
EventTypes.RoomCreate: (event, i18n, body) => i18n.createdTheChat(
|
||||||
i18n.createdTheChat(event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.RoomTombstone: (event, i18n, body) => i18n.roomHasBeenUpgraded,
|
EventTypes.RoomTombstone: (event, i18n, body) => i18n.roomHasBeenUpgraded,
|
||||||
EventTypes.RoomJoinRules: (event, i18n, body) {
|
EventTypes.RoomJoinRules: (event, i18n, body) {
|
||||||
final joinRules = JoinRules.values.firstWhereOrNull((r) =>
|
final joinRules = JoinRules.values.firstWhereOrNull((r) =>
|
||||||
|
|
@ -101,16 +101,17 @@ abstract class EventLocalizations {
|
||||||
event.content['join_rule']);
|
event.content['join_rule']);
|
||||||
if (joinRules == null) {
|
if (joinRules == null) {
|
||||||
return i18n.changedTheJoinRules(
|
return i18n.changedTheJoinRules(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
} else {
|
} else {
|
||||||
return i18n.changedTheJoinRulesTo(
|
return i18n.changedTheJoinRulesTo(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname(),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n),
|
||||||
joinRules.getLocalizedString(i18n));
|
joinRules.getLocalizedString(i18n));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
EventTypes.RoomMember: (event, i18n, body) {
|
EventTypes.RoomMember: (event, i18n, body) {
|
||||||
final targetName = event.stateKeyUser?.calcDisplayname() ?? '';
|
final targetName = event.stateKeyUser?.calcDisplayname(i18n: i18n) ?? '';
|
||||||
final senderName = event.senderFromMemoryOrFallback.calcDisplayname();
|
final senderName =
|
||||||
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n);
|
||||||
final userIsTarget = event.stateKey == event.room.client.userID;
|
final userIsTarget = event.stateKey == event.room.client.userID;
|
||||||
final userIsSender = event.senderId == event.room.client.userID;
|
final userIsSender = event.senderId == event.room.client.userID;
|
||||||
|
|
||||||
|
|
@ -200,26 +201,26 @@ abstract class EventLocalizations {
|
||||||
},
|
},
|
||||||
EventTypes.RoomPowerLevels: (event, i18n, body) =>
|
EventTypes.RoomPowerLevels: (event, i18n, body) =>
|
||||||
i18n.changedTheChatPermissions(
|
i18n.changedTheChatPermissions(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.RoomName: (event, i18n, body) => i18n.changedTheChatNameTo(
|
EventTypes.RoomName: (event, i18n, body) => i18n.changedTheChatNameTo(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname(),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n),
|
||||||
event.content['name']),
|
event.content['name']),
|
||||||
EventTypes.RoomTopic: (event, i18n, body) =>
|
EventTypes.RoomTopic: (event, i18n, body) =>
|
||||||
i18n.changedTheChatDescriptionTo(
|
i18n.changedTheChatDescriptionTo(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname(),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n),
|
||||||
event.content['topic']),
|
event.content['topic']),
|
||||||
EventTypes.RoomAvatar: (event, i18n, body) => i18n.changedTheChatAvatar(
|
EventTypes.RoomAvatar: (event, i18n, body) => i18n.changedTheChatAvatar(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.GuestAccess: (event, i18n, body) {
|
EventTypes.GuestAccess: (event, i18n, body) {
|
||||||
final guestAccess = GuestAccess.values.firstWhereOrNull((r) =>
|
final guestAccess = GuestAccess.values.firstWhereOrNull((r) =>
|
||||||
r.toString().replaceAll('GuestAccess.', '') ==
|
r.toString().replaceAll('GuestAccess.', '') ==
|
||||||
event.content['guest_access']);
|
event.content['guest_access']);
|
||||||
if (guestAccess == null) {
|
if (guestAccess == null) {
|
||||||
return i18n.changedTheGuestAccessRules(
|
return i18n.changedTheGuestAccessRules(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
} else {
|
} else {
|
||||||
return i18n.changedTheGuestAccessRulesTo(
|
return i18n.changedTheGuestAccessRulesTo(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname(),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n),
|
||||||
guestAccess.getLocalizedString(i18n));
|
guestAccess.getLocalizedString(i18n));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -229,35 +230,35 @@ abstract class EventLocalizations {
|
||||||
event.content['history_visibility']);
|
event.content['history_visibility']);
|
||||||
if (historyVisibility == null) {
|
if (historyVisibility == null) {
|
||||||
return i18n.changedTheHistoryVisibility(
|
return i18n.changedTheHistoryVisibility(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
} else {
|
} else {
|
||||||
return i18n.changedTheHistoryVisibilityTo(
|
return i18n.changedTheHistoryVisibilityTo(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname(),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n),
|
||||||
historyVisibility.getLocalizedString(i18n));
|
historyVisibility.getLocalizedString(i18n));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
EventTypes.Encryption: (event, i18n, body) {
|
EventTypes.Encryption: (event, i18n, body) {
|
||||||
var localizedBody = i18n.activatedEndToEndEncryption(
|
var localizedBody = i18n.activatedEndToEndEncryption(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname());
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n));
|
||||||
if (event.room.client.encryptionEnabled == false) {
|
if (event.room.client.encryptionEnabled == false) {
|
||||||
localizedBody += '. ${i18n.needPantalaimonWarning}';
|
localizedBody += '. ${i18n.needPantalaimonWarning}';
|
||||||
}
|
}
|
||||||
return localizedBody;
|
return localizedBody;
|
||||||
},
|
},
|
||||||
EventTypes.CallAnswer: (event, i18n, body) => i18n
|
EventTypes.CallAnswer: (event, i18n, body) => i18n.answeredTheCall(
|
||||||
.answeredTheCall(event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.CallHangup: (event, i18n, body) =>
|
EventTypes.CallHangup: (event, i18n, body) => i18n.endedTheCall(
|
||||||
i18n.endedTheCall(event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.CallInvite: (event, i18n, body) =>
|
EventTypes.CallInvite: (event, i18n, body) => i18n.startedACall(
|
||||||
i18n.startedACall(event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.CallCandidates: (event, i18n, body) => i18n.sentCallInformations(
|
EventTypes.CallCandidates: (event, i18n, body) => i18n.sentCallInformations(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname()),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n)),
|
||||||
EventTypes.Encrypted: (event, i18n, body) =>
|
EventTypes.Encrypted: (event, i18n, body) =>
|
||||||
_localizedBodyNormalMessage(event, i18n, body),
|
_localizedBodyNormalMessage(event, i18n, body),
|
||||||
EventTypes.Message: (event, i18n, body) =>
|
EventTypes.Message: (event, i18n, body) =>
|
||||||
_localizedBodyNormalMessage(event, i18n, body),
|
_localizedBodyNormalMessage(event, i18n, body),
|
||||||
EventTypes.Reaction: (event, i18n, body) => i18n.sentReaction(
|
EventTypes.Reaction: (event, i18n, body) => i18n.sentReaction(
|
||||||
event.senderFromMemoryOrFallback.calcDisplayname(),
|
event.senderFromMemoryOrFallback.calcDisplayname(i18n: i18n),
|
||||||
event.content
|
event.content
|
||||||
.tryGetMap<String, dynamic>('m.relates_to')
|
.tryGetMap<String, dynamic>('m.relates_to')
|
||||||
?.tryGet<String>('key') ??
|
?.tryGet<String>('key') ??
|
||||||
|
|
|
||||||
|
|
@ -269,4 +269,7 @@ class MatrixDefaultLocalizations extends MatrixLocalizations {
|
||||||
@override
|
@override
|
||||||
String wasDirectChatDisplayName(String oldDisplayName) =>
|
String wasDirectChatDisplayName(String oldDisplayName) =>
|
||||||
'Empty chat (was $oldDisplayName)';
|
'Empty chat (was $oldDisplayName)';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get unknownUser => 'Unknown user';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,8 @@ abstract class MatrixLocalizations {
|
||||||
|
|
||||||
String get youJoinedTheChat;
|
String get youJoinedTheChat;
|
||||||
|
|
||||||
|
String get unknownUser;
|
||||||
|
|
||||||
String youInvitedBy(String senderName);
|
String youInvitedBy(String senderName);
|
||||||
|
|
||||||
String youInvitedUser(String targetName);
|
String youInvitedUser(String targetName);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue