diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt
index 083de8548..bbd9aea77 100644
--- a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt
+++ b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt
@@ -1554,8 +1554,8 @@ sealed class RcvGroupEvent() {
is MemberAdded -> String.format(generalGetString(R.string.rcv_group_event_member_added), profile.profileViewName)
is MemberConnected -> generalGetString(R.string.rcv_group_event_member_connected)
is MemberLeft -> generalGetString(R.string.rcv_group_event_member_left)
- is MemberRole -> String.format(generalGetString(R.string.member_role), profile.profileViewName, role.text)
- is UserRole -> String.format(generalGetString(R.string.your_member_role), role.text)
+ is MemberRole -> String.format(generalGetString(R.string.rcv_group_event_changed_member_role), profile.profileViewName, role.text)
+ is UserRole -> String.format(generalGetString(R.string.rcv_group_event_changed_your_role), role.text)
is MemberDeleted -> String.format(generalGetString(R.string.rcv_group_event_member_deleted), profile.profileViewName)
is UserDeleted -> generalGetString(R.string.rcv_group_event_user_deleted)
is GroupDeleted -> generalGetString(R.string.rcv_group_event_group_deleted)
@@ -1573,8 +1573,8 @@ sealed class SndGroupEvent() {
@Serializable @SerialName("groupUpdated") class GroupUpdated(val groupProfile: GroupProfile): SndGroupEvent()
val text: String get() = when (this) {
- is MemberRole -> String.format(generalGetString(R.string.member_role), profile.profileViewName, role.text)
- is UserRole -> String.format(generalGetString(R.string.your_member_role), role.text)
+ is MemberRole -> String.format(generalGetString(R.string.snd_group_event_changed_member_role), profile.profileViewName, role.text)
+ is UserRole -> String.format(generalGetString(R.string.snd_group_event_changed_role_for_yourself), role.text)
is MemberDeleted -> String.format(generalGetString(R.string.snd_group_event_member_deleted), profile.profileViewName)
is UserLeft -> generalGetString(R.string.snd_group_event_user_left)
is GroupUpdated -> generalGetString(R.string.snd_group_event_group_profile_updated)
diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt
index 8926c91a7..255608eae 100644
--- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt
+++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/group/GroupMemberInfoView.kt
@@ -136,14 +136,14 @@ fun GroupMemberInfoLayout(
SectionView(title = stringResource(R.string.member_info_section_title_member)) {
InfoRow(stringResource(R.string.info_row_group), groupInfo.displayName)
SectionDivider()
- /*val roles = remember { member.canChangeRoleTo(groupInfo) }
+ val roles = remember { member.canChangeRoleTo(groupInfo) }
if (roles != null) {
SectionItemView {
RoleSelectionRow(roles, newRole, onRoleSelected)
}
- } else {*/
+ } else {
InfoRow(stringResource(R.string.role_in_group), member.memberRole.text)
- //}
+ }
val conn = member.activeConn
if (conn != null) {
SectionDivider()
diff --git a/apps/android/app/src/main/res/values-de/strings.xml b/apps/android/app/src/main/res/values-de/strings.xml
index 85a72f333..0024defc5 100644
--- a/apps/android/app/src/main/res/values-de/strings.xml
+++ b/apps/android/app/src/main/res/values-de/strings.xml
@@ -706,17 +706,21 @@
Die Gruppeneinladung ist abgelaufen
- Sie haben %1$s eingeladen.
+ ***sie haben %1$s eingeladen.verbundenverlassen
+ ***changed role of %s to %s
+ ***changed your role to %sentfernte %1$s.hat Sie entfernt
- Gruppe gelöscht
- aktualisiertes Gruppenprofil
+ gruppe gelöscht
+ aktualisiertes gruppenprofil***invited via your group link
- Sie haben %1$s entfernt.
- Sie haben verlassen
- Gruppenprofil aktualisiert
+ ***you changed role of %s to %s
+ ***you changed role for yourself to %s
+ sie haben %1$s entfernt.
+ sie haben verlassen
+ gruppenprofil aktualisiertMitglied
@@ -790,8 +794,6 @@
Die Mitgliederrolle wird auf \"%s\" geändert. Das Mitglied wird eine neue Einladung erhalten.Fehler beim Entfernen des MitgliedsFehler beim Ändern der Rolle
- Mitglieder %s Rolle: %s
- Meine Rolle: %sGruppeVerbindungdirekt
diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml
index 79bea5718..ed2ca4312 100644
--- a/apps/android/app/src/main/res/values-ru/strings.xml
+++ b/apps/android/app/src/main/res/values-ru/strings.xml
@@ -709,11 +709,15 @@
пригласил(а) %1$sсоединен(а)покинул(а) группу
+ поменял(а) роль члена %s на: %s
+ поменял(а) вашу роль на: %sудалил(а) %1$sудалил(а) вас из группыудалил(а) группуобновил(а) профиль группыприглашен(а) через вашу ссылку группы
+ вы поменяли роль члена %s на: %s
+ вы поменяли роль себе на: %sвы удалили %1$sвы покинули группупрофиль группы обновлен
@@ -790,8 +794,6 @@
Роль будет изменена на \"%s\". Будет отправлено новое приглашение.Ошибка при удалении члена группыОшибка при изменении роли
- роль %s: %s
- ваша роль: %sГруппаСоединениепрямое
diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml
index 670f22860..322de86e9 100644
--- a/apps/android/app/src/main/res/values/strings.xml
+++ b/apps/android/app/src/main/res/values/strings.xml
@@ -709,11 +709,15 @@
invited %1$sconnectedleft
+ changed role of %s to %s
+ changed your role to %sremoved %1$sremoved youdeleted groupupdated group profileinvited via your group link
+ you changed role of %s to %s
+ you changed role for yourself to %syou removed %1$syou leftgroup profile updated
@@ -790,8 +794,6 @@
The role will be changed to \"%s\". The member will receive a new invitation.Error removing memberError changing role
- member %s role: %s
- your role: %sGroupConnectiondirect
diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift
index c7e67bc7b..2dc7554fb 100644
--- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift
+++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift
@@ -48,27 +48,27 @@ struct GroupMemberInfoView: View {
Section("Member") {
infoRow("Group", groupInfo.displayName)
-// HStack {
-// if let roles = member.canChangeRoleTo(groupInfo: groupInfo) {
-// Picker("Change role", selection: $newRole) {
-// ForEach(roles) { role in
-// Text(role.text)
-// .foregroundStyle(.secondary)
-// }
-// }
-// } else {
-// Text("Role")
-// Spacer()
-// Text(member.memberRole.text)
-// .foregroundStyle(.secondary)
-// }
-// }
-// .onAppear { newRole = member.memberRole }
-// .onChange(of: newRole) { _ in
-// if newRole != member.memberRole {
-// alert = .changeMemberRoleAlert(role: newRole)
-// }
-// }
+ HStack {
+ if let roles = member.canChangeRoleTo(groupInfo: groupInfo) {
+ Picker("Change role", selection: $newRole) {
+ ForEach(roles) { role in
+ Text(role.text)
+ .foregroundStyle(.secondary)
+ }
+ }
+ } else {
+ Text("Role")
+ Spacer()
+ Text(member.memberRole.text)
+ .foregroundStyle(.secondary)
+ }
+ }
+ .onAppear { newRole = member.memberRole }
+ .onChange(of: newRole) { _ in
+ if newRole != member.memberRole {
+ alert = .changeMemberRoleAlert(role: newRole)
+ }
+ }
// TODO invited by - need to get contact by contact id
if let conn = member.activeConn {
diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
index 178324f9b..d0dd1d335 100644
--- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
+++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff
@@ -368,6 +368,11 @@
Die Mitgliederrolle ändern?No comment provided by engineer.
+
+ Change role
+ Rolle ändern
+ No comment provided by engineer.
+ Chat archiveDatenbank Archiv
@@ -1968,6 +1973,11 @@ Wir werden Serverredundanzen hinzufügen, um verloren gegangene Nachrichten zu v
ZurückkehrenNo comment provided by engineer.
+
+ Role
+ Rolle
+ No comment provided by engineer.
+ Run chatChat starten
@@ -2856,6 +2866,16 @@ SimpleX-Server können Ihr Profil nicht einsehen.
Anrufen…call status
+
+ changed role of %1$@ to %2$@
+ ***changed role of %1$@ to %2$@
+ rcv group event chat item
+
+
+ changed your role to %@
+ ***changed your role to %@
+ rcv group event chat item
+ coloredfarbig
@@ -3056,12 +3076,6 @@ SimpleX-Server können Ihr Profil nicht einsehen.
Mitgliedmember role
-
- member %1$@ role: %2$@
- Mitglieder %1$@ Rolle: %2$@
- rcv group event chat item
- snd group event chat item
- connectedverbunden
@@ -3217,6 +3231,16 @@ SimpleX-Server können Ihr Profil nicht einsehen.
Sie sind zur Gruppe eingeladenNo comment provided by engineer.
+
+ you changed role for yourself to %@
+ ***you changed role for yourself to %@
+ snd group event chat item
+
+
+ you changed role of %1$@ to %2$@
+ ***you changed role of %1$@ to %2$@
+ snd group event chat item
+ you leftSie haben verlassen
@@ -3242,12 +3266,6 @@ SimpleX-Server können Ihr Profil nicht einsehen.
Sie: No comment provided by engineer.
-
- your role: %@
- Meine Rolle: %@
- rcv group event chat item
- snd group event chat item
- \~strike~\~durchstreichen~
diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
index 506423baa..cad64e6d2 100644
--- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
+++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff
@@ -368,6 +368,11 @@
Change member role?No comment provided by engineer.
+
+ Change role
+ Change role
+ No comment provided by engineer.
+ Chat archiveChat archive
@@ -1968,6 +1973,11 @@ We will be adding server redundancy to prevent lost messages.
RevertNo comment provided by engineer.
+
+ Role
+ Role
+ No comment provided by engineer.
+ Run chatRun chat
@@ -2856,6 +2866,16 @@ SimpleX servers cannot see your profile.
calling…call status
+
+ changed role of %1$@ to %2$@
+ changed role of %1$@ to %2$@
+ rcv group event chat item
+
+
+ changed your role to %@
+ changed your role to %@
+ rcv group event chat item
+ coloredcolored
@@ -3056,12 +3076,6 @@ SimpleX servers cannot see your profile.
membermember role
-
- member %1$@ role: %2$@
- member %1$@ role: %2$@
- rcv group event chat item
- snd group event chat item
- connectedconnected
@@ -3217,6 +3231,16 @@ SimpleX servers cannot see your profile.
you are invited to groupNo comment provided by engineer.
+
+ you changed role for yourself to %@
+ you changed role for yourself to %@
+ snd group event chat item
+
+
+ you changed role of %1$@ to %2$@
+ you changed role of %1$@ to %2$@
+ snd group event chat item
+ you leftyou left
@@ -3242,12 +3266,6 @@ SimpleX servers cannot see your profile.
you: No comment provided by engineer.
-
- your role: %@
- your role: %@
- rcv group event chat item
- snd group event chat item
- \~strike~\~strike~
diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff
index 3a64b907c..35aeb6c76 100644
--- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff
+++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff
@@ -368,6 +368,11 @@
Поменять роль члена группы?No comment provided by engineer.
+
+ Change role
+ Поменять роль
+ No comment provided by engineer.
+ Chat archiveАрхив чата
@@ -1968,6 +1973,11 @@ We will be adding server redundancy to prevent lost messages.
Отменить измененияNo comment provided by engineer.
+
+ Role
+ Роль
+ No comment provided by engineer.
+ Run chatЗапустить chat
@@ -2856,6 +2866,16 @@ SimpleX серверы не могут получить доступ к ваше
входящий звонок…call status
+
+ changed role of %1$@ to %2$@
+ поменял(а) роль члена %1$@ на: %2$@
+ rcv group event chat item
+
+
+ changed your role to %@
+ поменял(а) вашу роль на: %@
+ rcv group event chat item
+ coloredцвет
@@ -3056,12 +3076,6 @@ SimpleX серверы не могут получить доступ к ваше
член группыmember role
-
- member %1$@ role: %2$@
- роль %1$@: %2$@
- rcv group event chat item
- snd group event chat item
- connectedсоединен(а)
@@ -3217,6 +3231,16 @@ SimpleX серверы не могут получить доступ к ваше
вы приглашены в группуNo comment provided by engineer.
+
+ you changed role for yourself to %@
+ вы поменяли роль себе на: %@
+ snd group event chat item
+
+
+ you changed role of %1$@ to %2$@
+ вы поменяли роль члена %1$@ на: %2$@
+ snd group event chat item
+ you leftвы покинули группу
@@ -3242,12 +3266,6 @@ SimpleX серверы не могут получить доступ к ваше
вы: No comment provided by engineer.
-
- your role: %@
- ваша роль: %@
- rcv group event chat item
- snd group event chat item
- \~strike~\~зачеркнуть~
diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift
index cef37098d..1feab30c7 100644
--- a/apps/ios/SimpleXChat/ChatTypes.swift
+++ b/apps/ios/SimpleXChat/ChatTypes.swift
@@ -1458,9 +1458,9 @@ public enum RcvGroupEvent: Decodable {
case .memberConnected: return NSLocalizedString("member connected", comment: "rcv group event chat item")
case .memberLeft: return NSLocalizedString("left", comment: "rcv group event chat item")
case let .memberRole(_, profile, role):
- return String.localizedStringWithFormat(NSLocalizedString("member %@ role: %@", comment: "rcv group event chat item"), profile.profileViewName, role.text)
+ return String.localizedStringWithFormat(NSLocalizedString("changed role of %@ to %@", comment: "rcv group event chat item"), profile.profileViewName, role.text)
case let .userRole(role):
- return String.localizedStringWithFormat(NSLocalizedString("your role: %@", comment: "rcv group event chat item"), role.text)
+ return String.localizedStringWithFormat(NSLocalizedString("changed your role to %@", comment: "rcv group event chat item"), role.text)
case let .memberDeleted(_, profile):
return String.localizedStringWithFormat(NSLocalizedString("removed %@", comment: "rcv group event chat item"), profile.profileViewName)
case .userDeleted: return NSLocalizedString("removed you", comment: "rcv group event chat item")
@@ -1481,9 +1481,9 @@ public enum SndGroupEvent: Decodable {
var text: String {
switch self {
case let .memberRole(_, profile, role):
- return String.localizedStringWithFormat(NSLocalizedString("member %@ role: %@", comment: "snd group event chat item"), profile.profileViewName, role.text)
+ return String.localizedStringWithFormat(NSLocalizedString("you changed role of %@ to %@", comment: "snd group event chat item"), profile.profileViewName, role.text)
case let .userRole(role):
- return String.localizedStringWithFormat(NSLocalizedString("your role: %@", comment: "snd group event chat item"), role.text)
+ return String.localizedStringWithFormat(NSLocalizedString("you changed role for yourself to %@", comment: "snd group event chat item"), role.text)
case let .memberDeleted(_, profile):
return String.localizedStringWithFormat(NSLocalizedString("you removed %@", comment: "snd group event chat item"), profile.profileViewName)
case .userLeft: return NSLocalizedString("you left", comment: "snd group event chat item")
diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings
index 41a134710..a5f9c90a4 100644
--- a/apps/ios/de.lproj/Localizable.strings
+++ b/apps/ios/de.lproj/Localizable.strings
@@ -257,6 +257,15 @@
/* No comment provided by engineer. */
"Change member role?" = "Die Mitgliederrolle ändern?";
+/* No comment provided by engineer. */
+"Change role" = "Rolle ändern";
+
+/* rcv group event chat item */
+"changed role of %@ to %@" = "***changed role of %1$@ to %2$@";
+
+/* rcv group event chat item */
+"changed your role to %@" = "***changed your role to %@";
+
/* No comment provided by engineer. */
"Chat archive" = "Datenbank Archiv";
@@ -1064,10 +1073,6 @@
/* No comment provided by engineer. */
"Member" = "Mitglied";
-/* rcv group event chat item
- snd group event chat item */
-"member %@ role: %@" = "Mitglieder %1$@ Rolle: %2$@";
-
/* rcv group event chat item */
"member connected" = "verbunden";
@@ -1374,6 +1379,9 @@
/* No comment provided by engineer. */
"Revert" = "Zurückkehren";
+/* No comment provided by engineer. */
+"Role" = "Rolle";
+
/* No comment provided by engineer. */
"Run chat" = "Chat starten";
@@ -1800,6 +1808,12 @@
/* No comment provided by engineer. */
"You can use markdown to format messages:" = "Um Nachrichteninhalte zu formatieren, können Sie Markdowns verwenden:";
+/* snd group event chat item */
+"you changed role for yourself to %@" = "***you changed role for yourself to %@";
+
+/* snd group event chat item */
+"you changed role of %@ to %@" = "***you changed role of %1$@ to %2$@";
+
/* No comment provided by engineer. */
"You control through which server(s) **to receive** the messages, your contacts – the servers you use to message them." = "Sie legen fest, über welche Server Sie Ihre Nachrichten **empfangen** und an Ihre Kontakte **senden**.";
@@ -1917,10 +1931,6 @@
/* No comment provided by engineer. */
"Your random profile" = "Ihr Zufallsprofil";
-/* rcv group event chat item
- snd group event chat item */
-"your role: %@" = "Meine Rolle: %@";
-
/* No comment provided by engineer. */
"Your settings" = "Meine Einstellungen";
diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings
index 81681901d..926c0a859 100644
--- a/apps/ios/ru.lproj/Localizable.strings
+++ b/apps/ios/ru.lproj/Localizable.strings
@@ -257,6 +257,15 @@
/* No comment provided by engineer. */
"Change member role?" = "Поменять роль члена группы?";
+/* No comment provided by engineer. */
+"Change role" = "Поменять роль";
+
+/* rcv group event chat item */
+"changed role of %@ to %@" = "поменял(а) роль члена %1$@ на: %2$@";
+
+/* rcv group event chat item */
+"changed your role to %@" = "поменял(а) вашу роль на: %@";
+
/* No comment provided by engineer. */
"Chat archive" = "Архив чата";
@@ -1064,10 +1073,6 @@
/* No comment provided by engineer. */
"Member" = "Член группы";
-/* rcv group event chat item
- snd group event chat item */
-"member %@ role: %@" = "роль %1$@: %2$@";
-
/* rcv group event chat item */
"member connected" = "соединен(а)";
@@ -1374,6 +1379,9 @@
/* No comment provided by engineer. */
"Revert" = "Отменить изменения";
+/* No comment provided by engineer. */
+"Role" = "Роль";
+
/* No comment provided by engineer. */
"Run chat" = "Запустить chat";
@@ -1800,6 +1808,12 @@
/* No comment provided by engineer. */
"You can use markdown to format messages:" = "Вы можете форматировать сообщения:";
+/* snd group event chat item */
+"you changed role for yourself to %@" = "вы поменяли роль себе на: %@";
+
+/* snd group event chat item */
+"you changed role of %@ to %@" = "вы поменяли роль члена %1$@ на: %2$@";
+
/* No comment provided by engineer. */
"You control through which server(s) **to receive** the messages, your contacts – the servers you use to message them." = "Вы определяете через какие серверы вы **получаете сообщения**, ваши контакты - серверы, которые вы используете для отправки.";
@@ -1917,10 +1931,6 @@
/* No comment provided by engineer. */
"Your random profile" = "Ваш случайный профиль";
-/* rcv group event chat item
- snd group event chat item */
-"your role: %@" = "ваша роль: %@";
-
/* No comment provided by engineer. */
"Your settings" = "Настройки";
diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs
index a313456b3..ff67c5704 100644
--- a/src/Simplex/Chat/Messages.hs
+++ b/src/Simplex/Chat/Messages.hs
@@ -508,8 +508,8 @@ rcvGroupEventToText = \case
RGEMemberAdded _ p -> "added " <> profileToText p
RGEMemberConnected -> "connected"
RGEMemberLeft -> "left"
- RGEMemberRole _ p r -> "role of " <> profileToText p <> ": " <> safeDecodeUtf8 (strEncode r)
- RGEUserRole r -> "your role: " <> safeDecodeUtf8 (strEncode r)
+ RGEMemberRole _ p r -> "changed role of " <> profileToText p <> " to " <> safeDecodeUtf8 (strEncode r)
+ RGEUserRole r -> "changed your role to " <> safeDecodeUtf8 (strEncode r)
RGEMemberDeleted _ p -> "removed " <> profileToText p
RGEUserDeleted -> "removed you"
RGEGroupDeleted -> "deleted group"
@@ -518,8 +518,8 @@ rcvGroupEventToText = \case
sndGroupEventToText :: SndGroupEvent -> Text
sndGroupEventToText = \case
- SGEMemberRole _ p r -> "role of " <> profileToText p <> ": " <> safeDecodeUtf8 (strEncode r)
- SGEUserRole r -> "your role " <> safeDecodeUtf8 (strEncode r)
+ SGEMemberRole _ p r -> "changed role of " <> profileToText p <> " to " <> safeDecodeUtf8 (strEncode r)
+ SGEUserRole r -> "changed role for yourself to " <> safeDecodeUtf8 (strEncode r)
SGEMemberDeleted _ p -> "removed " <> profileToText p
SGEUserLeft -> "left"
SGEGroupUpdated _ -> "group profile updated"