diff --git a/lib/src/localization/app_de.arb b/lib/src/localization/app_de.arb index cd810ad..7bb6430 100644 --- a/lib/src/localization/app_de.arb +++ b/lib/src/localization/app_de.arb @@ -38,6 +38,7 @@ "shareImageAllTwonlyWarning": "Twonlies können nur an verifizierte Kontakte gesendet werden!", "shareImageSearchAllContacts": "Alle Kontakte durchsuchen", "@shareImageSearchAllContacts": {}, + "shareImageShowArchived": "Archivierte Benutzer anzeigen", "searchUsernameInput": "Benutzername", "searchUsernameTitle": "Benutzernamen suchen", "searchUserNamePreview": "Um dich und andere twonly Benutzer vor Spam und Missbrauch zu schützen, ist es nicht möglich, im Preview-Modus nach anderen Personen zu suchen. Andere Benutzer können dich finden und deren Anfragen werden dann hier angezeigt!", diff --git a/lib/src/localization/app_en.arb b/lib/src/localization/app_en.arb index 93b55a8..182a59f 100644 --- a/lib/src/localization/app_en.arb +++ b/lib/src/localization/app_en.arb @@ -78,6 +78,7 @@ "@shareImageAllUsers": {}, "shareImageAllTwonlyWarning": "twonlies can only be send to verified contacts!", "@shareImageAllTwonlyWarning": {}, + "shareImageShowArchived": "Show archived users", "searchUsernameInput": "Username", "@searchUsernameInput": {}, "searchUsernameTitle": "Search username", diff --git a/lib/src/localization/generated/app_localizations.dart b/lib/src/localization/generated/app_localizations.dart index eca2c4d..68ac230 100644 --- a/lib/src/localization/generated/app_localizations.dart +++ b/lib/src/localization/generated/app_localizations.dart @@ -335,6 +335,12 @@ abstract class AppLocalizations { /// **'twonlies can only be send to verified contacts!'** String get shareImageAllTwonlyWarning; + /// No description provided for @shareImageShowArchived. + /// + /// In en, this message translates to: + /// **'Show archived users'** + String get shareImageShowArchived; + /// No description provided for @searchUsernameInput. /// /// In en, this message translates to: diff --git a/lib/src/localization/generated/app_localizations_de.dart b/lib/src/localization/generated/app_localizations_de.dart index d87127d..4779db1 100644 --- a/lib/src/localization/generated/app_localizations_de.dart +++ b/lib/src/localization/generated/app_localizations_de.dart @@ -128,6 +128,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get shareImageAllTwonlyWarning => 'Twonlies können nur an verifizierte Kontakte gesendet werden!'; + @override + String get shareImageShowArchived => 'Archivierte Benutzer anzeigen'; + @override String get searchUsernameInput => 'Benutzername'; diff --git a/lib/src/localization/generated/app_localizations_en.dart b/lib/src/localization/generated/app_localizations_en.dart index be1e1a8..0c4853c 100644 --- a/lib/src/localization/generated/app_localizations_en.dart +++ b/lib/src/localization/generated/app_localizations_en.dart @@ -128,6 +128,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get shareImageAllTwonlyWarning => 'twonlies can only be send to verified contacts!'; + @override + String get shareImageShowArchived => 'Show archived users'; + @override String get searchUsernameInput => 'Username'; diff --git a/lib/src/providers/api/media_send.dart b/lib/src/providers/api/media_send.dart index d520df0..1732f99 100644 --- a/lib/src/providers/api/media_send.dart +++ b/lib/src/providers/api/media_send.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:cryptography_plus/cryptography_plus.dart'; import 'package:drift/drift.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:logging/logging.dart'; import 'package:mutex/mutex.dart'; diff --git a/lib/src/views/camera/share_image_view.dart b/lib/src/views/camera/share_image_view.dart index 58ec1d0..003057c 100644 --- a/lib/src/views/camera/share_image_view.dart +++ b/lib/src/views/camera/share_image_view.dart @@ -47,10 +47,12 @@ class _ShareImageView extends State { int maxTotalMediaCounter = 0; Uint8List? imageBytes; bool sendingImage = false; + bool hideArchivedUsers = true; final HashSet _selectedUserIds = HashSet(); final TextEditingController searchUserName = TextEditingController(); bool showRealTwonlyWarning = false; late StreamSubscription> contactSub; + String lastQuery = ""; @override void initState() { @@ -128,8 +130,14 @@ class _ShareImageView extends State { } Future _filterUsers(String query) async { + lastQuery = query; if (query.isEmpty) { - updateUsers(contacts.where((x) => !x.archived).toList()); + updateUsers(contacts + .where((x) => + !x.archived || + !hideArchivedUsers || + _selectedUserIds.contains(x.userId)) + .toList()); return; } List usersFiltered = contacts @@ -209,7 +217,45 @@ class _ShareImageView extends State { ), const SizedBox(height: 10), if (_otherUsers.isNotEmpty) - HeadLineComponent(context.lang.shareImageAllUsers), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + HeadLineComponent(context.lang.shareImageAllUsers), + if (contacts.any((x) => x.archived)) + Row( + children: [ + Text( + context.lang.shareImageShowArchived, + style: TextStyle(fontSize: 10), + ), + Transform.scale( + scale: 0.75, + child: Checkbox( + value: !hideArchivedUsers, + side: WidgetStateBorderSide.resolveWith( + (Set states) { + if (states.contains(WidgetState.selected)) { + return BorderSide(width: 0); + } + return BorderSide( + width: 1, + color: Theme.of(context) + .colorScheme + .outline); + }, + ), + onChanged: (a) { + setState(() { + hideArchivedUsers = !hideArchivedUsers; + _filterUsers(lastQuery); + }); + }, + ), + ) + ], + ) + ], + ), Expanded( child: UserList( List.from(_otherUsers),