Skip to content

Commit f572033

Browse files
Add member to an existing group (#743)
* feat: add group member management functionality - Added UserProfile.fromUser factory method to convert User objects to UserProfile - Added new "Add Members" screen with search and multi-select capabilities - Implemented group member addition functionality with loading states and error handling - Added new localization strings for member management in 8 languages - Added new route and navigation methods for the add members screen - Updated router configuration to support the new add members screen * refactor: reorganize group member management translations * patch: removed unnecessary text from add members screen * formatting changes * chore: removed unnecessary comments * updated changelog * Update comment in add_group_members_screen.dart Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: update user profile to use npub format for public keys * fix: update error message key for missing active account * formatting changes * refactor: remove unused "clearAll" translation key * patch: refactor user model to use Rust-native types * formatting changes --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent b0d51ef commit f572033

File tree

13 files changed

+556
-13
lines changed

13 files changed

+556
-13
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
- Added background sync service to fetch new messages and invites and show notifications for them
1414
- Added user avatars in group chat messages
1515
- Added localization support with multi-language support (English, German, Spanish, French, Italian, Portuguese, Russian, Turkish)
16+
- Added add member to existing group functionality.
1617

1718
### Changed
1819
- Renamed contact to user profile everywhere [#710](https://github.com/parres-hq/whitenoise_flutter/pull/710)

lib/locales/de.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Mitglieder werden eingeladen:",
295295
"groupNameHint": "Freie Bürger Gruppe",
296296
"groupDescriptionHint": "Schreibe etwas über die Gruppe",
297-
"uploadingImage": "Bild wird hochgeladen..."
297+
"uploadingImage": "Bild wird hochgeladen...",
298+
"addMembers": "Mitglieder hinzufügen",
299+
"membersAddedSuccess": "Mitglieder erfolgreich hinzugefügt",
300+
"failedToAddMembers": "Fehler beim Hinzufügen von Mitgliedern",
301+
"addingMembers": "Mitglieder werden hinzugefügt...",
302+
"selectedCount": "{count} ausgewählt"
298303
},
299304
"errors": {
300305
"errorOccurred": "Ein Fehler ist aufgetreten",

lib/locales/en.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Inviting Members:",
295295
"groupNameHint": "Free Citizen Group",
296296
"groupDescriptionHint": "Write something about the group",
297-
"uploadingImage": "Uploading Image..."
297+
"uploadingImage": "Uploading Image...",
298+
"addMembers": "Add Members",
299+
"membersAddedSuccess": "Members added successfully",
300+
"failedToAddMembers": "Failed to add members",
301+
"addingMembers": "Adding members...",
302+
"selectedCount": "{count} selected"
298303
},
299304
"errors": {
300305
"errorOccurred": "An error occurred",

lib/locales/es.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Invitando Miembros:",
295295
"groupNameHint": "Grupo Ciudadanos Libres",
296296
"groupDescriptionHint": "Escribe algo sobre el grupo",
297-
"uploadingImage": "Subiendo Imagen..."
297+
"uploadingImage": "Subiendo Imagen...",
298+
"addMembers": "Agregar miembros",
299+
"membersAddedSuccess": "Miembros agregados exitosamente",
300+
"failedToAddMembers": "Error al agregar miembros",
301+
"addingMembers": "Agregando miembros...",
302+
"selectedCount": "{count} seleccionados"
298303
},
299304
"errors": {
300305
"errorOccurred": "Ocurrió un error",

lib/locales/fr.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Invitation de Membres :",
295295
"groupNameHint": "Groupe Citoyens Libres",
296296
"groupDescriptionHint": "Écrivez quelque chose sur le groupe",
297-
"uploadingImage": "Téléchargement de l'Image..."
297+
"uploadingImage": "Téléchargement de l'Image...",
298+
"addMembers": "Ajouter des membres",
299+
"membersAddedSuccess": "Membres ajoutés avec succès",
300+
"failedToAddMembers": "Échec de l'ajout des membres",
301+
"addingMembers": "Ajout de membres...",
302+
"selectedCount": "{count} sélectionnés"
298303
},
299304
"errors": {
300305
"errorOccurred": "Une erreur s'est produite",

lib/locales/it.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Invitando Membri:",
295295
"groupNameHint": "Gruppo Cittadini Liberi",
296296
"groupDescriptionHint": "Scrivi qualcosa sul gruppo",
297-
"uploadingImage": "Caricamento Immagine..."
297+
"uploadingImage": "Caricamento Immagine...",
298+
"addMembers": "Aggiungi membri",
299+
"membersAddedSuccess": "Membri aggiunti con successo",
300+
"failedToAddMembers": "Impossibile aggiungere membri",
301+
"addingMembers": "Aggiunta membri...",
302+
"selectedCount": "{count} selezionati"
298303
},
299304
"errors": {
300305
"errorOccurred": "Si è verificato un errore",

lib/locales/pt.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Convidando Membros:",
295295
"groupNameHint": "Grupo Cidadãos Livres",
296296
"groupDescriptionHint": "Escreva algo sobre o grupo",
297-
"uploadingImage": "Enviando Imagem..."
297+
"uploadingImage": "Enviando Imagem...",
298+
"addMembers": "Adicionar membros",
299+
"membersAddedSuccess": "Membros adicionados com sucesso",
300+
"failedToAddMembers": "Falha ao adicionar membros",
301+
"addingMembers": "Adicionando membros...",
302+
"selectedCount": "{count} selecionados"
298303
},
299304
"errors": {
300305
"errorOccurred": "Ocorreu um erro",

lib/locales/ru.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Приглашение Участников:",
295295
"groupNameHint": "Группа Свободных Граждан",
296296
"groupDescriptionHint": "Напишите что-то о группе",
297-
"uploadingImage": "Загрузка Изображения..."
297+
"uploadingImage": "Загрузка Изображения...",
298+
"addMembers": "Добавить участников",
299+
"membersAddedSuccess": "Участники успешно добавлены",
300+
"failedToAddMembers": "Не удалось добавить участников",
301+
"addingMembers": "Добавление участников...",
302+
"selectedCount": "{count} выбрано"
298303
},
299304
"errors": {
300305
"errorOccurred": "Произошла ошибка",

lib/locales/tr.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,12 @@
294294
"invitingMembers": "Üyeler Davet Ediliyor:",
295295
"groupNameHint": "Özgür Vatandaşlar Grubu",
296296
"groupDescriptionHint": "Grup hakkında bir şeyler yazın",
297-
"uploadingImage": "Resim Yükleniyor..."
297+
"uploadingImage": "Resim Yükleniyor...",
298+
"addMembers": "Üyeleri Ekle",
299+
"membersAddedSuccess": "Üyeler başarıyla eklendi",
300+
"failedToAddMembers": "Üye ekleme başarısız",
301+
"addingMembers": "Üyeler ekleniyor...",
302+
"selectedCount": "{count} seçildi"
298303
},
299304
"errors": {
300305
"errorOccurred": "Bir hata oluştu",

lib/routing/router_provider.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:whitenoise/ui/auth_flow/info_screen.dart';
99
import 'package:whitenoise/ui/auth_flow/login_screen.dart';
1010
import 'package:whitenoise/ui/auth_flow/qr_scanner_screen.dart';
1111
import 'package:whitenoise/ui/auth_flow/welcome_screen.dart';
12+
import 'package:whitenoise/ui/chat/chat_info/add_group_members_screen.dart';
1213
import 'package:whitenoise/ui/chat/chat_info/chat_info_screen.dart';
1314
import 'package:whitenoise/ui/chat/chat_info/edit_group_screen.dart';
1415
import 'package:whitenoise/ui/chat/chat_management/add_to_group_screen.dart';
@@ -169,6 +170,17 @@ final routerProvider = Provider<GoRouter>((ref) {
169170
return EditGroupScreen(groupId: groupId);
170171
},
171172
),
173+
GoRoute(
174+
path: 'add-members',
175+
builder: (context, state) {
176+
final groupId = state.pathParameters['id']!;
177+
final existingMemberPubkeys = state.extra as List<String>? ?? [];
178+
return AddGroupMembersScreen(
179+
groupId: groupId,
180+
existingMemberPubkeys: existingMemberPubkeys,
181+
);
182+
},
183+
),
172184
],
173185
),
174186
],

0 commit comments

Comments
 (0)