diff --git a/lib/matrix.dart b/lib/matrix.dart index 24a0c9ef..399f8a33 100644 --- a/lib/matrix.dart +++ b/lib/matrix.dart @@ -40,6 +40,7 @@ export 'src/utils/http_timeout.dart'; export 'src/utils/image_pack_extension.dart'; export 'src/utils/matrix_file.dart'; export 'src/utils/matrix_id_string_extension.dart'; +export 'src/utils/matrix_default_localizations.dart'; export 'src/utils/matrix_localizations.dart'; export 'src/utils/receipt.dart'; export 'src/utils/sync_update_extension.dart'; diff --git a/lib/src/utils/event_localizations.dart b/lib/src/utils/event_localizations.dart index 6e1cb97e..d71293e4 100644 --- a/lib/src/utils/event_localizations.dart +++ b/lib/src/utils/event_localizations.dart @@ -101,6 +101,9 @@ abstract class EventLocalizations { }, EventTypes.RoomMember: (event, i18n, body) { final targetName = event.stateKeyUser?.calcDisplayname() ?? ''; + final senderName = event.sender.calcDisplayname(); + final userIsTarget = event.stateKey == event.room.client.userID; + final userIsSender = event.senderId == event.room.client.userID; // Fallback message if just nothing has changed: var text = i18n.joinedTheChat(targetName); @@ -111,37 +114,59 @@ abstract class EventLocalizations { if (newMembership != oldMembership) { if (oldMembership == 'invite' && newMembership == 'join') { - text = i18n.acceptedTheInvitation(targetName); + text = userIsTarget + ? i18n.youAcceptedTheInvitation + : i18n.acceptedTheInvitation(targetName); } else if (oldMembership == 'invite' && newMembership == 'leave') { if (event.stateKey == event.senderId) { - text = i18n.rejectedTheInvitation(targetName); + text = userIsTarget + ? i18n.youRejectedTheInvitation + : i18n.rejectedTheInvitation(targetName); } else { - text = i18n.hasWithdrawnTheInvitationFor( - event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youHaveWithdrawnTheInvitationFor(targetName) + : i18n.hasWithdrawnTheInvitationFor(senderName, targetName); } } else if (oldMembership == 'leave' && newMembership == 'join') { - text = i18n.joinedTheChat(targetName); + text = userIsTarget + ? i18n.youJoinedTheChat + : i18n.joinedTheChat(targetName); } else if (oldMembership == 'join' && newMembership == 'ban') { - text = - i18n.kickedAndBanned(event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youKickedAndBanned(targetName) + : i18n.kickedAndBanned(senderName, targetName); } else if (oldMembership == 'join' && newMembership == 'leave' && event.stateKey != event.senderId) { - text = i18n.kicked(event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youKicked(targetName) + : i18n.kicked(senderName, targetName); } else if (oldMembership == 'join' && newMembership == 'leave' && event.stateKey == event.senderId) { text = i18n.userLeftTheChat(targetName); } else if (oldMembership == 'invite' && newMembership == 'ban') { - text = i18n.bannedUser(event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youBannedUser(targetName) + : i18n.bannedUser(senderName, targetName); } else if (oldMembership == 'leave' && newMembership == 'ban') { - text = i18n.bannedUser(event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youBannedUser(targetName) + : i18n.bannedUser(senderName, targetName); } else if (oldMembership == 'ban' && newMembership == 'leave') { - text = i18n.unbannedUser(event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youUnbannedUser(targetName) + : i18n.unbannedUser(senderName, targetName); } else if (newMembership == 'invite') { - text = i18n.invitedUser(event.sender.calcDisplayname(), targetName); + text = userIsSender + ? i18n.youInvitedUser(targetName) + : userIsTarget + ? i18n.youInvitedBy(senderName) + : i18n.invitedUser(senderName, targetName); } else if (newMembership == 'join') { - text = i18n.joinedTheChat(targetName); + text = userIsTarget + ? i18n.youJoinedTheChat + : i18n.joinedTheChat(targetName); } } else if (newMembership == 'join') { final newAvatar = event.content.tryGet('avatar_url') ?? ''; diff --git a/test/matrix_default_localizations.dart b/lib/src/utils/matrix_default_localizations.dart similarity index 87% rename from test/matrix_default_localizations.dart rename to lib/src/utils/matrix_default_localizations.dart index 4b356960..4ad60ab2 100644 --- a/test/matrix_default_localizations.dart +++ b/lib/src/utils/matrix_default_localizations.dart @@ -230,4 +230,38 @@ class MatrixDefaultLocalizations extends MatrixLocalizations { String sentReaction(String senderName, String reactionKey) { return '$senderName reacted with $reactionKey'; } + + @override + // TODO: implement youAcceptedTheInvitation + String get youAcceptedTheInvitation => 'You accepted the invitation'; + + @override + String youBannedUser(String targetName) => 'You have banned $targetName'; + + @override + String youHaveWithdrawnTheInvitationFor(String targetName) => + 'You have withdrawn the invitation for $targetName'; + + @override + String youInvitedBy(String senderName) => + 'You have been invited by $senderName'; + + @override + String youInvitedUser(String targetName) => 'You invited $targetName'; + + @override + String get youJoinedTheChat => 'You joined the chat'; + + @override + String youKicked(String targetName) => 'You kicked $targetName'; + + @override + String youKickedAndBanned(String targetName) => + 'You kicked and banned $targetName'; + + @override + String get youRejectedTheInvitation => 'You have rejected the invitation'; + + @override + String youUnbannedUser(String targetName) => 'You unbanned $targetName'; } diff --git a/lib/src/utils/matrix_localizations.dart b/lib/src/utils/matrix_localizations.dart index 3db5e3e3..60103ed0 100644 --- a/lib/src/utils/matrix_localizations.dart +++ b/lib/src/utils/matrix_localizations.dart @@ -52,6 +52,26 @@ abstract class MatrixLocalizations { String get roomHasBeenUpgraded; + String get youAcceptedTheInvitation; + + String get youRejectedTheInvitation; + + String get youJoinedTheChat; + + String youInvitedBy(String senderName); + + String youInvitedUser(String targetName); + + String youUnbannedUser(String targetName); + + String youBannedUser(String targetName); + + String youKicked(String targetName); + + String youKickedAndBanned(String targetName); + + String youHaveWithdrawnTheInvitationFor(String targetName); + String groupWith(String displayname); String removedBy(String calcDisplayname); diff --git a/test/event_test.dart b/test/event_test.dart index 5d0120be..25a3a736 100644 --- a/test/event_test.dart +++ b/test/event_test.dart @@ -26,7 +26,6 @@ import 'package:test/test.dart'; import 'fake_client.dart'; import 'fake_matrix_api.dart'; -import 'matrix_default_localizations.dart'; void main() { /// All Tests related to the Event diff --git a/test/matrix_localizations_test.dart b/test/matrix_localizations_test.dart index 6f92b372..53e9a6b7 100644 --- a/test/matrix_localizations_test.dart +++ b/test/matrix_localizations_test.dart @@ -18,8 +18,6 @@ import 'package:matrix/matrix.dart'; import 'package:test/test.dart'; -import 'matrix_default_localizations.dart'; - void main() { /// All Tests related to device keys group('Matrix Localizations', () {