mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 16:28:40 +00:00
fix #160
This commit is contained in:
parent
db96157ff5
commit
c95014ae7b
7 changed files with 62 additions and 3 deletions
|
|
@ -38,6 +38,7 @@
|
||||||
"shareImageAllTwonlyWarning": "Twonlies können nur an verifizierte Kontakte gesendet werden!",
|
"shareImageAllTwonlyWarning": "Twonlies können nur an verifizierte Kontakte gesendet werden!",
|
||||||
"shareImageSearchAllContacts": "Alle Kontakte durchsuchen",
|
"shareImageSearchAllContacts": "Alle Kontakte durchsuchen",
|
||||||
"@shareImageSearchAllContacts": {},
|
"@shareImageSearchAllContacts": {},
|
||||||
|
"shareImageShowArchived": "Archivierte Benutzer anzeigen",
|
||||||
"searchUsernameInput": "Benutzername",
|
"searchUsernameInput": "Benutzername",
|
||||||
"searchUsernameTitle": "Benutzernamen suchen",
|
"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!",
|
"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!",
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@
|
||||||
"@shareImageAllUsers": {},
|
"@shareImageAllUsers": {},
|
||||||
"shareImageAllTwonlyWarning": "twonlies can only be send to verified contacts!",
|
"shareImageAllTwonlyWarning": "twonlies can only be send to verified contacts!",
|
||||||
"@shareImageAllTwonlyWarning": {},
|
"@shareImageAllTwonlyWarning": {},
|
||||||
|
"shareImageShowArchived": "Show archived users",
|
||||||
"searchUsernameInput": "Username",
|
"searchUsernameInput": "Username",
|
||||||
"@searchUsernameInput": {},
|
"@searchUsernameInput": {},
|
||||||
"searchUsernameTitle": "Search username",
|
"searchUsernameTitle": "Search username",
|
||||||
|
|
|
||||||
|
|
@ -335,6 +335,12 @@ abstract class AppLocalizations {
|
||||||
/// **'twonlies can only be send to verified contacts!'**
|
/// **'twonlies can only be send to verified contacts!'**
|
||||||
String get shareImageAllTwonlyWarning;
|
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.
|
/// No description provided for @searchUsernameInput.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,9 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||||
@override
|
@override
|
||||||
String get shareImageAllTwonlyWarning => 'Twonlies können nur an verifizierte Kontakte gesendet werden!';
|
String get shareImageAllTwonlyWarning => 'Twonlies können nur an verifizierte Kontakte gesendet werden!';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get shareImageShowArchived => 'Archivierte Benutzer anzeigen';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get searchUsernameInput => 'Benutzername';
|
String get searchUsernameInput => 'Benutzername';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,9 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||||
@override
|
@override
|
||||||
String get shareImageAllTwonlyWarning => 'twonlies can only be send to verified contacts!';
|
String get shareImageAllTwonlyWarning => 'twonlies can only be send to verified contacts!';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get shareImageShowArchived => 'Show archived users';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get searchUsernameInput => 'Username';
|
String get searchUsernameInput => 'Username';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import 'dart:io';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
import 'package:cryptography_plus/cryptography_plus.dart';
|
import 'package:cryptography_plus/cryptography_plus.dart';
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_image_compress/flutter_image_compress.dart';
|
import 'package:flutter_image_compress/flutter_image_compress.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:mutex/mutex.dart';
|
import 'package:mutex/mutex.dart';
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,12 @@ class _ShareImageView extends State<ShareImageView> {
|
||||||
int maxTotalMediaCounter = 0;
|
int maxTotalMediaCounter = 0;
|
||||||
Uint8List? imageBytes;
|
Uint8List? imageBytes;
|
||||||
bool sendingImage = false;
|
bool sendingImage = false;
|
||||||
|
bool hideArchivedUsers = true;
|
||||||
final HashSet<int> _selectedUserIds = HashSet<int>();
|
final HashSet<int> _selectedUserIds = HashSet<int>();
|
||||||
final TextEditingController searchUserName = TextEditingController();
|
final TextEditingController searchUserName = TextEditingController();
|
||||||
bool showRealTwonlyWarning = false;
|
bool showRealTwonlyWarning = false;
|
||||||
late StreamSubscription<List<Contact>> contactSub;
|
late StreamSubscription<List<Contact>> contactSub;
|
||||||
|
String lastQuery = "";
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
|
@ -128,8 +130,14 @@ class _ShareImageView extends State<ShareImageView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future _filterUsers(String query) async {
|
Future _filterUsers(String query) async {
|
||||||
|
lastQuery = query;
|
||||||
if (query.isEmpty) {
|
if (query.isEmpty) {
|
||||||
updateUsers(contacts.where((x) => !x.archived).toList());
|
updateUsers(contacts
|
||||||
|
.where((x) =>
|
||||||
|
!x.archived ||
|
||||||
|
!hideArchivedUsers ||
|
||||||
|
_selectedUserIds.contains(x.userId))
|
||||||
|
.toList());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<Contact> usersFiltered = contacts
|
List<Contact> usersFiltered = contacts
|
||||||
|
|
@ -209,7 +217,45 @@ class _ShareImageView extends State<ShareImageView> {
|
||||||
),
|
),
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
if (_otherUsers.isNotEmpty)
|
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(
|
Expanded(
|
||||||
child: UserList(
|
child: UserList(
|
||||||
List.from(_otherUsers),
|
List.from(_otherUsers),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue