From 1d4a0bdbeb443ea4a6ae96770acdc220158b83bc Mon Sep 17 00:00:00 2001 From: otsmr Date: Thu, 9 Apr 2026 22:19:36 +0200 Subject: [PATCH] add qr code button --- .../generated/app_localizations.dart | 6 +- .../generated/app_localizations_de.dart | 2 +- .../generated/app_localizations_en.dart | 2 +- .../generated/app_localizations_sv.dart | 2 +- lib/src/views/chats/add_new_user.view.dart | 65 ++++++++++++------- 5 files changed, 49 insertions(+), 28 deletions(-) diff --git a/lib/src/localization/generated/app_localizations.dart b/lib/src/localization/generated/app_localizations.dart index 5f28518..a540115 100644 --- a/lib/src/localization/generated/app_localizations.dart +++ b/lib/src/localization/generated/app_localizations.dart @@ -376,11 +376,11 @@ abstract class AppLocalizations { /// **'Username'** String get searchUsernameInput; - /// No description provided for @searchUsernameTitle. + /// No description provided for @addFriendTitle. /// /// In en, this message translates to: - /// **'Search username'** - String get searchUsernameTitle; + /// **'Add friends'** + String get addFriendTitle; /// No description provided for @searchUserNamePreview. /// diff --git a/lib/src/localization/generated/app_localizations_de.dart b/lib/src/localization/generated/app_localizations_de.dart index f6bafbd..fc89712 100644 --- a/lib/src/localization/generated/app_localizations_de.dart +++ b/lib/src/localization/generated/app_localizations_de.dart @@ -162,7 +162,7 @@ class AppLocalizationsDe extends AppLocalizations { String get searchUsernameInput => 'Benutzername'; @override - String get searchUsernameTitle => 'Benutzernamen suchen'; + String get addFriendTitle => 'Freunde hinzufügen'; @override String get searchUserNamePreview => diff --git a/lib/src/localization/generated/app_localizations_en.dart b/lib/src/localization/generated/app_localizations_en.dart index 535dcaa..93cf645 100644 --- a/lib/src/localization/generated/app_localizations_en.dart +++ b/lib/src/localization/generated/app_localizations_en.dart @@ -161,7 +161,7 @@ class AppLocalizationsEn extends AppLocalizations { String get searchUsernameInput => 'Username'; @override - String get searchUsernameTitle => 'Search username'; + String get addFriendTitle => 'Add friends'; @override String get searchUserNamePreview => diff --git a/lib/src/localization/generated/app_localizations_sv.dart b/lib/src/localization/generated/app_localizations_sv.dart index a41fb8b..230b7d9 100644 --- a/lib/src/localization/generated/app_localizations_sv.dart +++ b/lib/src/localization/generated/app_localizations_sv.dart @@ -161,7 +161,7 @@ class AppLocalizationsSv extends AppLocalizations { String get searchUsernameInput => 'Username'; @override - String get searchUsernameTitle => 'Search username'; + String get addFriendTitle => 'Add friends'; @override String get searchUserNamePreview => diff --git a/lib/src/views/chats/add_new_user.view.dart b/lib/src/views/chats/add_new_user.view.dart index a80ec70..f583136 100644 --- a/lib/src/views/chats/add_new_user.view.dart +++ b/lib/src/views/chats/add_new_user.view.dart @@ -4,7 +4,9 @@ import 'package:drift/drift.dart' hide Column; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:go_router/go_router.dart'; import 'package:twonly/globals.dart'; +import 'package:twonly/src/constants/routes.keys.dart'; import 'package:twonly/src/database/daos/contacts.dao.dart'; import 'package:twonly/src/database/twonly.db.dart'; import 'package:twonly/src/model/protobuf/client/generated/messages.pb.dart'; @@ -41,10 +43,10 @@ class _SearchUsernameView extends State { void initState() { super.initState(); contactsStream = twonlyDB.contactsDao.watchNotAcceptedContacts().listen( - (update) => setState(() { - contacts = update; - }), - ); + (update) => setState(() { + contacts = update; + }), + ); if (widget.username != null) { searchUserName.text = widget.username!; @@ -131,7 +133,7 @@ class _SearchUsernameView extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: Text(context.lang.searchUsernameTitle), + title: Text(context.lang.addFriendTitle), ), body: SafeArea( child: Padding( @@ -140,23 +142,40 @@ class _SearchUsernameView extends State { children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 10), - child: TextField( - onSubmitted: (_) async { - await _addNewUser(context); - }, - onChanged: (value) { - searchUserName.text = value.toLowerCase(); - searchUserName.selection = TextSelection.fromPosition( - TextPosition(offset: searchUserName.text.length), - ); - }, - inputFormatters: [ - LengthLimitingTextInputFormatter(12), - FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z._]')), + child: Row( + children: [ + Expanded( + child: TextField( + onSubmitted: (_) async { + await _addNewUser(context); + }, + onChanged: (value) { + searchUserName.text = value.toLowerCase(); + searchUserName.selection = TextSelection.fromPosition( + TextPosition(offset: searchUserName.text.length), + ); + }, + inputFormatters: [ + LengthLimitingTextInputFormatter(12), + FilteringTextInputFormatter.allow( + RegExp('[a-z0-9A-Z._]'), + ), + ], + controller: searchUserName, + decoration: getInputDecoration( + context.lang.searchUsernameInput, + ), + ), + ), + Align( + alignment: Alignment.centerRight, + child: IconButton( + onPressed: () => + context.push(Routes.settingsPublicProfile), + icon: const FaIcon(FontAwesomeIcons.qrcode), + ), + ), ], - controller: searchUserName, - decoration: - getInputDecoration(context.lang.searchUsernameInput), ), ), const SizedBox(height: 20), @@ -174,7 +193,9 @@ class _SearchUsernameView extends State { floatingActionButton: Padding( padding: const EdgeInsets.only(bottom: 30), child: FloatingActionButton( - onPressed: _isLoading ? null : () async => _addNewUser(context), + onPressed: _isLoading || searchUserName.text.isEmpty + ? null + : () async => _addNewUser(context), child: _isLoading ? const Center(child: CircularProgressIndicator()) : const FaIcon(FontAwesomeIcons.magnifyingGlassPlus),