This commit is contained in:
otsmr 2025-05-11 12:10:47 +02:00
parent db96157ff5
commit c95014ae7b
7 changed files with 62 additions and 3 deletions

View file

@ -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!",

View file

@ -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",

View file

@ -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:

View file

@ -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';

View file

@ -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';

View file

@ -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';

View file

@ -47,10 +47,12 @@ class _ShareImageView extends State<ShareImageView> {
int maxTotalMediaCounter = 0;
Uint8List? imageBytes;
bool sendingImage = false;
bool hideArchivedUsers = true;
final HashSet<int> _selectedUserIds = HashSet<int>();
final TextEditingController searchUserName = TextEditingController();
bool showRealTwonlyWarning = false;
late StreamSubscription<List<Contact>> contactSub;
String lastQuery = "";
@override
void initState() {
@ -128,8 +130,14 @@ class _ShareImageView extends State<ShareImageView> {
}
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<Contact> usersFiltered = contacts
@ -209,7 +217,45 @@ class _ShareImageView extends State<ShareImageView> {
),
const SizedBox(height: 10),
if (_otherUsers.isNotEmpty)
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),