diff --git a/CHANGELOG.md b/CHANGELOG.md index f9c82f04..e5247a2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +### **0.7.3** (2021-12-03) +* Add PLN (Polish Zloty) to price feed +* Add "Empty wallet" button to send tab +* Allow to send 0 outputs when Metadata is present + ### **0.7.2** (2021-11-25) * Transaction Details: incoming and outgoing Metadata is now displayed * Fix for sending without Metadata (OP_RETURN) diff --git a/assets/translations/en.json b/assets/translations/en.json index fd52c165..d31fb77d 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -93,6 +93,7 @@ "currency_GBP": "Pound sterling", "currency_HRK": "Croatian kuna", "currency_INR": "Indian rupee", + "currency_PLN": "Polish zloty", "currency_RON": "Romanian leu", "currency_RUB": "Russian rouble", "currency_USD": "US Dollar", @@ -147,6 +148,7 @@ "send_confirm_send": "Confirm & Send", "send_confirm_transaction": "Please confirm transaction", "send_dust": "Dust: -$amount $letter_code", + "send_empty": "Empty wallet", "send_enter_address": "Please enter an address", "send_enter_amount": "Please enter an amount", "send_errors_solve": "Please resolve errors …", diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 015b1994..f01346e0 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -132,5 +132,28 @@ "import_seed_error_1": "Musi być 12 słów lub więcej", "no_new_wallet": "Obecnie nie są dostępne żadne nowe portfele.", "setup_continue_alert_title": "Zanim kontynuujesz", - "setup_pin": "Proszę ustawić PIN przed kontunuacją." + "setup_pin": "Proszę ustawić PIN przed kontunuacją.", + "app_settings_notifications": "Powiadomienia", + "app_settings_notifications_heading_manage_wallets": "Zarządzaj powiadomieniami dla portfeli", + "app_settings_notifications_alert_content": "Aktywuje to przyjazne dla prywatności powiadomienia w tle.\nMożna je wyłączyć w dowolnym momencie.", + "app_settings_notifications_hint_sync_2": "Wskazówka: Powiadomienia mogą być znacznie opóźnione, w zależności od tego, jak i czy system operacyjny ogranicza działanie w tle. Urządzenia z systemem iOS mogą spodziewać się dłuższych interwałów.", + "about_developers": "© $year twórcy peercoin_flutter", + "about_illustrations_button": "projekt.AI", + "about_illustrations": "Ilustracje konfiguracyjne dzięki uprzejmości", + "app_settings_price_feed_disable_button": "Wyłącz pobieranie kursów walut", + "app_settings_price_feed_enable_button": "Włącz pobieranie kursów walut", + "app_settings_price_alert_content": "Włączy przyjazne dla prywatności pobieranie kursów.\nMoże być wyłączone w dowolnym momencie.", + "authenticate_retry_warning_text": "Aplikacja przejdzie w stan zablokowany i można ją odblokować tylko po pomyślnym uwierzytelnieniu.", + "authenticate_subtitle_plural": "Łącznie $retriesLeft próby", + "authenticate_subtitle_singular": "Łącznie $retriesLeft próba", + "buy_peercoin": "Zakup Peercoin", + "app_settings_notifications_open_button": "Otwórz ustawienia powiadomień", + "app_settings_notifications_enable_button": "Włącz powiadomienia", + "app_settings_notifications_disable_button": "Wyłącz powiadomienia", + "app_settings_notifications_not_enabled": "Powiadomienia w tle są aktalnie wyłączone.", + "app_settings_notifications_heading_interval": "Interwał synchronizacji", + "app_settings_notifications_hint_sync_1": "Ustawia interwał, w którym aplikacja będzie sprawdzać nowe transakcje w tle.\nAktywny interwał: $minuty.", + "authenticate_biometric_hint": "Zweryfikuj tożsamość", + "authenticate_biometric_reason": "Uwierzytelnij się.", + "authenticate_biometric_title": "Wymagane uwierzytelnienie" } diff --git a/assets/translations/ro.json b/assets/translations/ro.json index c2f1aa52..68ed0aad 100644 --- a/assets/translations/ro.json +++ b/assets/translations/ro.json @@ -211,15 +211,15 @@ "currency_USD": "Dolar american", "not_again": "Nu mai arăta din nou", "wallet_value_alert_title": "Valoare ridicată a monedelor", - "wallet_value_alert_content": "Stocarea acestei valori de monede în portofel mobil este riscantă.\nLuați în considerare mutarea monedelor în depozit rece.", + "wallet_value_alert_content": "Stocarea acestei valori de monede în portofel mobil este riscantă.\nLuați în considerare mutarea monedelor în device-uri Stakebox, Ledger, sau în depozit rece.", "changelog_headline": "Ce mai e nou?", "setup_finish": "Finalizați configurarea", - "setup_price_feed_description": "Aici puteți activa alimentarea noastră opțională cu prețuri externe. Acest lucru va permite ca soldul portofelului dvs. să fie afișat la valoarea de schimb în timp real.", + "setup_price_feed_description": "Aceasta va permite ca soldul portofelului dvs. să fie afișat la valoarea de schimb în timp real.", "changelog_appbar": "Log-ul schimbărilor", - "setup_price_feed_allow": "Permiteți feed-ul API cu preț extern", + "setup_price_feed_allow": "Permiteți feed-ul API cu prețuri", "setup_price_feed_title": "API-uri externe", "store_short": "Portofelul tău mobil pentru Peercoin și Peercoin testnet.", - "store_description": "Trimiteți și primiți Peercoin pe telefon.\n\nPăstrați-vă semințele din portofel protejate. \nAceastă aplicație nu are nicio garanție. \nUtilizați-o pe propriul risc.\n\nCaracteristici:\n- Bazat pe protocolul electrum.\n- Trimiteți și primiți peercoin.\n- Gata de tranzacționare după instalare (fără așteptare).\n- Portofele Peercoin și Peercoin testnet.\n- Gestionare a agendei de adrese.\n- Import de portofele de hârtie.\n- Gestionarea serverului.\n- Suport pentru mai multe limbi.\n- Notificări de fundal\n\nLimitările cunoscute pot fi găsite în depozitul Github.", + "store_description": "Trimiteți și primiți Peercoin pe telefon.\n\nPăstrați-vă semințele din portofel protejate. \nAceastă aplicație nu are nicio garanție. \nUtilizați-o pe propriul risc.\n\nCaracteristici:\n- Bazat pe protocolul electrum.\n- Trimiteți și primiți peercoin.\n- Gata de tranzacționare după instalare (fără așteptare).\n- Portofele Peercoin și Peercoin testnet.\n- Gestionare a agendei de adrese.\n- Import de portofele de hârtie.\n- Gestionarea serverului.\n- Suport pentru mai multe limbi.\n\nLimitările cunoscute pot fi găsite în depozitul Github.", "about_illustrations_button": "design.AI", "about_illustrations": "Ilustrații de configurare mulțumită amabilității lui", "setup_save_text1": "Următoarea listă de cuvinte se numește Seed. Este o parolă complexă care vă va oferi acces complet la portofel și la toate monedele dumneavoastră.", @@ -228,5 +228,21 @@ "setup_subtitle": "în portofelul Peercoin", "setup_text1": "Dacă ați creat deja un portofel și aveți încă fraza de început, alegeți", "setup_text2": "creați noul portofel Peercoin", - "setup_save_title": "Creați portofel" + "setup_save_title": "Creați portofel", + "setup_bg_sync_description": "Aceasta va activa notificările în fundal pentru portmoneele dvs.", + "setup_bg_sync_allow": "Permite API-ul de sincronizare în fundal", + "app_settings_notifications": "Notificări", + "app_settings_notifications_enable_button": "Activați notificările", + "app_settings_notifications_heading_manage_wallets": "Gestionați notificările pentru pormonee", + "app_settings_notifications_hint_sync_1": "Setează intervalul în care aplicația va verifica dacă există tranzacții noi pe fundal.\nInterval activ: $minutes minute.", + "app_settings_notifications_alert_content": "Pe fundal se vor activa notificările noastre confidențiale.\nEle pot fi dezactivate oricând.", + "app_settings_notifications_disable_button": "Dezactivați notificările", + "app_settings_notifications_heading_interval": "Interval de sincronizare", + "app_settings_notifications_not_enabled": "Notificările de fundal au fost dezactivate.", + "app_settings_notifications_open_button": "Deschideți setările notificărilor", + "app_settings_notifications_hint_sync_2": "Sugestie: Notificările pot întârzia semnificativ, în funcție de modul în care sistemul dvs. de operare limitează funcțiile de fundal. La dispozitivele iOS intervale pot fi mai lungi.", + "notification_title": "$walletTitle - Aveți o tranzacție nouă", + "notification_body": "Deschide aplicația pentru a vedea tranzacția", + "send_add_metadata": "Adăugați metadatele", + "send_op_return": "Mesaj OP_RETURN" } diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 098781a7..6201693c 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -120,7 +120,7 @@ "server_add_server_wrong_genesis": "Genesis Хеш не совпадает.\nСервер не поддерживает эту монету.", "server_settings_alert_hardcoded_content": "Жестко закодированные сервера нельзя удалить, их можно только деактивировать.", "about_free": "Это программное обеспечение с открытым исходным кодом, бесплатное и не имеет никаких гарантий.\nИспользуйте на свой страх и риск.", - "setup_import_note": "Введите сид кошелька, которого хотите импортировать.\nНе путать с приватным ключом.", + "setup_import_note": "Введите сид кошелька, которого хотите импортировать. Не путать с приватным ключом.", "about_data_protection": "Это программное обеспечение максимально защищает ваши данные и конфиденциальность.\nЭто приложение хранит все необходимые данные локально на вашем устройстве.\nВнутри нет аналитического или рекламного кода.", "share_app": "Поделиться приложением", "about_foundation": "Этот проект финансируется Peercoin Foundation.\nПожалуйста, рассмотрите возможность пожертвования в фонд для дальнейшего развития этого приложения.", @@ -197,7 +197,7 @@ "currency_BRL": "Бразильский реал", "currency_RON": "Румынский леу", "snack_copied": "Скопировано в буфер обмена", - "wallet_value_alert_content": "Хранить столько монет в мобильном кошельке рискованно.\nПодумайте о том, чтобы переместить свои монеты в холодное хранилище.", + "wallet_value_alert_content": "Хранить столько монет в мобильном кошельке рискованно.\nПодумайте о том чтобы переместить свои монеты в Stakebox, Ledger или холодное хранилище.", "receive_website_faucet": "Вы можете получить бесплатные монеты тестовой сети с этого крана.", "app_settings_price_feed": "Фид Цены & Валюта", "app_settings_price_feed_enable_button": "Включить API: Фид Цены", @@ -212,11 +212,11 @@ "currency_USD": "Доллар США", "not_again": "Больше не показывать", "wallet_value_alert_title": "Высокая стоимость монет", - "store_description": "Отправляйте и получайте Peercoin на свой телефон.\n\nДержите свой кошелек в безопасности.\nЭто приложение поставляется без каких-либо гарантий.\nИспользуйте на свой страх и риск.\n\nФункции:\n- На основе протокола Electrum.\n- Отправлять и получать Peercoin.\n- Готов к сделкам сразу после установки.\n- Кошельки для Peercoin и для тестовой сети.\n- Управление адресной книгой.\n- Импорт бумажных кошельков.\n- Управление сервером.\n- Многоязычная поддержка.\n- Фоновые уведомления.\n\nИзвестные ограничения можно найти в репозитории Github.", + "store_description": "Отправляйте и получайте Peercoin на свой телефон.\n\nДержите свой кошелек в безопасности.\nЭто приложение поставляется без каких-либо гарантий.\nИспользуйте на свой страх и риск.\n\nФункции:\n- На основе протокола Electrum.\n- Отправлять и получать Peercoin.\n- Готов к сделкам сразу после установки.\n- Кошельки для Peercoin и для тестовой сети.\n- Управление адресной книгой.\n- Импорт бумажных кошельков.\n- Управление сервером.\n- Многоязычная поддержка.\n\nИзвестные ограничения можно найти в репозитории Github.", "store_short": "Ваш мобильный кошелек для Peercoin и для тестовой сети.", "setup_finish": "Завершить настройку", - "setup_price_feed_allow": "Разрешить API внешнего фида цен", - "setup_price_feed_description": "Здесь вы можете включить нашу дополнительную информацию о внешних ценах. Это позволит отображать баланс вашего кошелька в режиме реального времени.", + "setup_price_feed_allow": "Разрешить фид API цен", + "setup_price_feed_description": "Это позволит отображать баланс вашего кошелька в режиме реального времени.", "setup_save_text1": "Следующий список слов называется «Сид». Это сложный пароль, который даст полный доступ к вашему кошельку и ко всем вашим монетам.", "changelog_appbar": "Журнал изменений", "changelog_headline": "Какие новости?", @@ -228,5 +228,21 @@ "setup_subtitle": "в кошелек Peercoin", "setup_text1": "Если вы уже создали кошелек и у вас все еще есть сид, выберите", "setup_text2": "создайте новый кошелек Peercoin", - "setup_save_title": "Создать кошелек" + "setup_save_title": "Создать кошелек", + "app_settings_notifications": "Уведомления", + "app_settings_notifications_open_button": "Открыть настройки уведомлений", + "app_settings_notifications_enable_button": "Включить уведомления", + "app_settings_notifications_alert_content": "Это позволит использовать наши фоновые, конфиденциальные уведомления .\nИх можно отключить в любой момент.", + "app_settings_notifications_disable_button": "Отключить уведомления", + "app_settings_notifications_not_enabled": "Фоновые уведомления в настоящее время отключены.", + "notification_title": "$walletTitle - Получена новая транзакция", + "notification_body": "Откройте приложение чтобы увидеть транзакцию", + "send_add_metadata": "Добавить метаданные", + "send_op_return": "OP_RETURN Сообщение", + "setup_bg_sync_description": "Это включит фоновые уведомления ваших кошельков.", + "setup_bg_sync_allow": "Разрешить фоновую синхронизацию API", + "app_settings_notifications_heading_manage_wallets": "Управление уведомлениями кошельков", + "app_settings_notifications_heading_interval": "Интервал синхронизации", + "app_settings_notifications_hint_sync_1": "Устанавливает интервал в течение которого приложение будет проверять наличие новых транзакций в фоновом режиме.\nАктивный интервал: $minutes минут.", + "app_settings_notifications_hint_sync_2": "Подсказка: Уведомления могут быть значительно задержаться, в зависимости от того как ваша операционная система регулирует фоновые операции. Устройства iOS могут рассчитывать на более длительные интервалы." } diff --git a/lib/tools/price_ticker.dart b/lib/tools/price_ticker.dart index a3eef787..443ab3ab 100644 --- a/lib/tools/price_ticker.dart +++ b/lib/tools/price_ticker.dart @@ -30,6 +30,7 @@ class PriceTicker { 'GBP': '£', 'HRK': 'kn', 'INR': '₹', + 'PLN': 'zł', 'RON': 'L', 'RUB': '₽' }; diff --git a/lib/widgets/wallet/send_tab.dart b/lib/widgets/wallet/send_tab.dart index 79c59e7e..0c3fc7f8 100644 --- a/lib/widgets/wallet/send_tab.dart +++ b/lib/widgets/wallet/send_tab.dart @@ -41,7 +41,7 @@ class _SendTabState extends State { final addressController = TextEditingController(); final amountController = TextEditingController(); final labelController = TextEditingController(); - final opreturnController = TextEditingController(); + final opReturnController = TextEditingController(); bool _initial = true; late CoinWallet _wallet; late Coin _availableCoin; @@ -398,7 +398,8 @@ class _SendTabState extends State { return AppLocalizations.instance .translate('send_amount_exceeds'); } - if (txValueInSatoshis < _availableCoin.minimumTxValue) { + if (txValueInSatoshis < _availableCoin.minimumTxValue && + opReturnController.text.isEmpty) { return AppLocalizations.instance.translate( 'send_amount_below_minimum', { 'amount': @@ -419,7 +420,7 @@ class _SendTabState extends State { ? TextFormField( textInputAction: TextInputAction.done, key: _opReturnKey, - controller: opreturnController, + controller: opReturnController, autocorrect: false, maxLength: _availableCoin.networkType.opreturnSize, minLines: 1, @@ -429,7 +430,7 @@ class _SendTabState extends State { onPressed: () async { var data = await Clipboard.getData('text/plain'); - opreturnController.text = data!.text!.trim(); + opReturnController.text = data!.text!.trim(); }, icon: Icon( Icons.paste_rounded, @@ -449,6 +450,7 @@ class _SendTabState extends State { value: _expertMode, onChanged: (a) => setState(() { _expertMode = a; + opReturnController.text = ''; }), title: Text( AppLocalizations.instance.translate( @@ -461,6 +463,16 @@ class _SendTabState extends State { ), ), SizedBox(height: 10), + PeerButtonBorder( + text: AppLocalizations.instance.translate( + 'send_empty', + ), + action: () async { + amountController.text = + (_wallet.balance / 1000000).toString(); + }, + ), + SizedBox(height: 10), PeerButtonBorder( text: AppLocalizations.instance.translate( 'send_qr', diff --git a/pubspec.yaml b/pubspec.yaml index 2029f917..fda4ac01 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: peercoin description: A new Peercoin wallet. -version: 0.7.2+67 +version: 0.7.3+68 environment: sdk: '>=2.12.0 <3.0.0'