Skip to content

Commit

Permalink
Merge pull request #116 from peercoin/0.7.4_1
Browse files Browse the repository at this point in the history
0.7.4
  • Loading branch information
Willy authored Dec 7, 2021
2 parents 2ac6ba3 + 4d60b52 commit 3dff98f
Show file tree
Hide file tree
Showing 9 changed files with 180 additions and 12 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
### **0.7.4** (2021-12-07)
* Allow sending to P2SH (Multisig)
* Fix issue where inbound transactions would trigger unnecessary notifications
* Byte size will now be counted correctly when sending Metadata

### **0.7.3** (2021-12-03)
* Add PLN (Polish Zloty) to price feed
* Add "Empty wallet" button to send tab
Expand Down
24 changes: 19 additions & 5 deletions assets/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
"label_wallet_seed": "Dein Wallet Seed",
"no_new_wallet": "Derzeit sind keine neuen Wallets verfügbar.",
"notification_title": "$walletTitle - Neue Transaktion empfangen",
"notification_body" : "App öffnen um Transaktion zu sehen",
"notification_body": "App öffnen um Transaktion zu sehen",
"paperwallet_confirm_import": "Bestätigen & importieren",
"paperwallet_error_1": "Wallet leer\noder Betrag unter Mindestbetrag",
"paperwallet_step_1": "Schritt 1",
Expand Down Expand Up @@ -198,7 +198,7 @@
"receive_website_faucet": "Bei diesem Faucet kannst du gratis Testnet Münzen erhalten.",
"snack_copied": "In Zwischenablage kopiert",
"app_settings_price_alert_content": "Dies wird unseren datenschutzfreundlichen Preis Daten Feed aktivieren.\nEr kann jederzeit abgeschaltet werden.",
"wallet_value_alert_content": "Es ist risikoreich diesen Wert von Münzen in einer mobilen Wallet zu lagern.\nZiehe in Betracht deine Münzen in Cold Storage zu verschieben.",
"wallet_value_alert_content": "Es ist risikoreich diesen Wert von Münzen in einer mobilen Wallet zu lagern.\nZiehe in Betracht deine Münzen in Stakebox, Ledger Hadware Wallet oder eine Cold Wallet zu verschieben.",
"app_settings_price_feed": "Preis Feed & Währung",
"app_settings_price_feed_enable_button": "Preis Feed API aktivieren",
"app_settings_price_feed_disable_button": "Preis Feed API deaktivieren",
Expand All @@ -217,8 +217,8 @@
"changelog_appbar": "Änderungshistorie",
"changelog_headline": "Was ist neu?",
"setup_finish": "Einrichtung abschließen",
"setup_price_feed_allow": "Externe Preis-Feed-API erlauben",
"setup_price_feed_description": "Du kannst hier unseren optionalen Preis-Feed aktivieren. Dies ermöglicht deinen Kontostand in Echtzeit in anderen Währungen anzuzeigen.",
"setup_price_feed_allow": "Preis-Feed-API erlauben",
"setup_price_feed_description": "Dies ermöglicht deinen Kontostand in Echtzeit in anderen Währungen anzuzeigen.",
"setup_price_feed_title": "Externe APIs",
"store_short": "Deine mobile Wallet für Peercoin und Peercoin Testnet.",
"store_description": "Sende und empfange Peercoin auf deinem Telefon.\n\nBeschütze deinen Wallet Seed.\nDiese App kommt frei von jedweder Garantie.\nBenutzung auf eigene Gefahr.\n\nEigenschaften:\n-Basiert auf dem Electrum-Protokoll\n-Peercoin senden und empfangen\n-Direkt nach der Installation bereit für Transaktionen (kein warten)\n-Peercoin und Peercoin Testnet Wallets\n-Adressbuch\n-Import von Papier-Wallets \n-Server-Verwaltung\n-Mehrsprachig\n-Hintergrundbenachrichtigungen\n\nBekannte Einschränkungen können im Github Repository eingesehen werden.",
Expand All @@ -230,5 +230,19 @@
"setup_text1": "Wenn du bereits eine Wallet erstellt und deinen Seed zur Hand hast, wähle",
"setup_text2": "erstelle deine neue Peercoin Wallet",
"setup_save_title": "Wallet erstellen",
"setup_save_text1": "Die nachfolgende Wortliste nennt sich Seed. Es ist ein komplexes Passwort das volle Kontrolle über deine Wallet und Münzen erlaubt."
"setup_save_text1": "Die nachfolgende Wortliste nennt sich Seed. Es ist ein komplexes Passwort das volle Kontrolle über deine Wallet und Münzen erlaubt.",
"app_settings_notifications": "Benachrichtigungen",
"app_settings_notifications_open_button": "Benachrichtungseinstellungen öffnen",
"app_settings_notifications_alert_content": "Dies wird unsere datenschutzfreundlichen Benachrichtigungen aktivieren.\nSie können jederzeit deaktiviert werden.",
"app_settings_notifications_hint_sync_2": "Hinweis: Die Benachrichtigungen können, abhängig davon wie dein Betriebssystem Hintergrundaufgaben behandelt, signifikant verzögert sein. iOS-Geräte können längere Intervalle erwarten.",
"setup_bg_sync_description": "Dies wird Hintergrundbenachrichtigungen für deine Wallets aktivieren.",
"app_settings_notifications_enable_button": "Benachrichtigungen aktivieren",
"app_settings_notifications_disable_button": "Benachrichtigungen deaktivieren",
"app_settings_notifications_heading_manage_wallets": "Benachrichtigungen für Wallets verwalten",
"app_settings_notifications_heading_interval": "Synchronisierungsintervall",
"app_settings_notifications_not_enabled": "Hintergrundbenachrichtigungen sind derzeit deaktiviert.",
"app_settings_notifications_hint_sync_1": "Setzt das Intervall in dem die App im Hintergrund neue Transaktionen prüft.\nAktives Intervall: $minutes Minuten.",
"send_add_metadata": "Metadaten hinzufügen",
"send_op_return": "OP_RETURN Nachricht",
"setup_bg_sync_allow": "Hintergrundbenachrichtigungs-API erlauben"
}
6 changes: 3 additions & 3 deletions assets/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
"no_new_wallet": "No new wallets available at this time.",
"not_again": "Don't show again",
"notification_title": "$walletTitle - New transaction received",
"notification_body" : "Open app to see transaction",
"notification_body": "Open app to see transaction",
"paperwallet_confirm_import": "Confirm & Import",
"paperwallet_error_1": "Wallet empty \nor amount below minimum output",
"paperwallet_step_1": "Step 1",
Expand All @@ -131,7 +131,7 @@
"receive_share": "Share",
"receive_website": "Open website",
"receive_website_credit": "Buy with credit card",
"receive_website_description": "You can purchase Peercoin directly with credit card (non US-costumers only) or from various exchanges and services.",
"receive_website_description": "You can purchase Peercoin directly with credit card (non US-customers only) or from various exchanges and services.",
"receive_website_exchandes": "Open list of exchanges",
"receive_website_faucet": "You can receive free testnet coins on this faucet.",
"scan_qr": "Scan QR-Code",
Expand Down Expand Up @@ -236,6 +236,6 @@
"wallets_none": "You have no active wallets",
"wallet_value_alert_title": "High value of coins",
"wallet_value_alert_content": "Storing this value of coins in a mobile wallet is risky.\nConsider moving your coins into Stakebox, Ledger hardware wallet or a cold wallet.",
"store_description": "Send and receive Peercoin on your phone.\n\nKeep your wallet seed protected. \nThis app comes with absolutely no warranty. \nUse at own risk.\n\nFeatures:\n- Based on electrum protocol.\n- Send and receive peercoin.\n- Ready to transact after installation (no waiting).\n- Peercoin and Peercoin testnet wallets.\n- Address book management.\n- Import paper wallets.\n- Server management.\n- Multi-language support.\n\nKnown limitations can be found in the Github repository.",
"store_description": "Send and receive Peercoin on your phone.\n\nKeep your wallet seed protected. \nThis app comes with absolutely no warranty. \nUse at own risk.\n\nFeatures:\n- Based on electrum protocol.\n- Send and receive peercoin.\n- Ready to transact after installation (no waiting).\n- Peercoin and Peercoin testnet wallets.\n- Address book management.\n- Import paper wallets.\n- Server management.\n- Multi-language support.\n- Background notifications.\n\nKnown limitations can be found in the Github repository.",
"store_short": "Your mobile wallet for Peercoin and Peercoin testnet."
}
62 changes: 61 additions & 1 deletion assets/translations/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -115,5 +115,65 @@
"jail_dialog_button": "Ok",
"jail_heading": "App in slotstand voor",
"jail_countdown": "seconden",
"about": "Over"
"about": "Over",
"about_developers": "© $year The peercoin_flutter ontwikkelaars",
"about_license": "Gelicenseerd onder AGPL-3.0",
"about_free": "Deze software is open source, gratis in gebruik en zonder enige garanties.\nGebruik op eigen risico.",
"about_view_source": "Bekijken in broncode",
"about_data_protection": "Deze software beschermt tot op zekere hoogte jouw data en privacy.\nDeze app slaat alle data lokaal op je apparaat.\nEr is geen analytics of andere advertentie code aanwezig.",
"about_data_declaration": "Bekijk privacy en data bescherming verklaring",
"about_foundation": "Dit project wordt financieel ondersteund door de Peercoin Foundation.\nGeef jouw steun met een donatie ter verbetering van deze app.",
"about_foundation_button": "Lees meer over de Peercoin Foundation",
"about_help_or_feedback": "Hulp nodig of enkele suggesties geven?",
"about_translate": "Help mee met de vertaling van deze app in Peercoin Weblate.",
"about_go_weblate": "Weblate openen",
"about_send_mail": "Stuur een e-mail",
"addressbook_add_new": "Nieuw adres toevoegen",
"addressbook_bottom_bar_your_addresses": "Jouw adres",
"addressbook_bottom_bar_sending_addresses": "Verzendadressen",
"addressbook_dialog_remove_title": "Dit adres verwijderen?",
"addressbook_dialog_remove_snack": "Adres succesvol verwijderd",
"addressbook_edit_dialog_title": "Label wijzigen",
"addressbook_edit_dialog_input": "Nieuw label",
"addressbook_no_label": "geen label",
"addressbook_no_sending": "Geen adressen",
"addressbook_swipe_delete": "Verwijderen",
"app_settings_theme": "App thema",
"addressbook_swipe_edit": "Wijzigen",
"addressbook_swipe_share": "Delen",
"addressbook_swipe_send": "Verstuur aan",
"addressbook_title": "$coin Adressen",
"app_settings_default_wallet": "Default Wallet",
"app_settings_language": "Taal",
"app_settings_language_restart": "Herstarten app is vereist.",
"buy_peercoin": "Peercoin kopen",
"buy_peercoin_dialog_title": "Je wordt nu doorgelinkt naar een externe website.",
"buy_peercoin_dialog_content": "De ontwikkelaars van deze app zijn niet verantwoordelijk voor elk content.",
"app_settings_saved_snack": "Je wijzigingen zijn opgeslagen",
"addressbook_search": "Adressen of labels toevoegen",
"app_settings_theme_light": "Licht",
"app_settings_theme_dark": "Donker",
"app_settings_theme_system": "Systeem default",
"app_settings_notifications": "Notificaties",
"app_settings_notifications_enable_button": "Notificaties aan",
"app_settings_notifications_not_enabled": "Notificaties staan uit.",
"app_settings_notifications_hint_sync_2": "Hint: De notificaties kan sterk achterlopen afhankelijk welk OS hier gebruikt wordt. iOS duren in het algemeen wat langer.",
"currency_EUR": "Euro",
"app_settings_price_feed": "Prijs overzicht & valuta",
"app_settings_price_feed_enable_button": "Prijs feed aan",
"app_settings_price_feed_disable_button": "Prijs feed uit",
"changelog_appbar": "Wijzigingen",
"changelog_headline": "Wat is nieuw?",
"currency_ARS": "Argentijnse peso",
"currency_BRL": "Brazilisaans real",
"currency_CNY": "Chineese yuan renminbi",
"about_illustrations_button": "designs.AI",
"about_illustrations": "Animaties zijn tot stand gebracht door",
"app_settings_notifications_open_button": "Notificatiesettings openen",
"app_settings_notifications_alert_content": "Aanzetten van onze privacy vriendelijke notificaties.\nKan ieder moment weer uitgezet worden.",
"app_settings_notifications_disable_button": "Notificaties uit",
"app_settings_notifications_heading_manage_wallets": "Notificaties beheren",
"app_settings_notifications_heading_interval": "Syncronisatie interval",
"app_settings_notifications_hint_sync_1": "Zet de interval om nieuwe transacties te vinden op de achtergrond.\nHuidige interval: $minutes minuten.",
"currency_GBP": "Pound sterling"
}
8 changes: 8 additions & 0 deletions lib/providers/activewallets.dart
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,14 @@ class ActiveWallets with ChangeNotifier {
//address is ours, add new tx
final txValue = (vOut['value'] * 1000000).toInt();

//increase notification value for addr
final addrInWallet = openWallet.addresses
.firstWhere((element) => element.address == addr);
addrInWallet.newNotificationBackendCount =
addrInWallet.notificationBackendCount + 1;
openWallet.save();

//write tx
openWallet.putTransaction(
WalletTransaction(
txid: tx['txid'],
Expand Down
56 changes: 56 additions & 0 deletions lib/tools/utf8TextField.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import 'dart:convert';
import 'dart:math';

import 'package:characters/src/extensions.dart';
import 'package:flutter/services.dart';

class Utf8LengthLimitingTextInputFormatter extends TextInputFormatter {
Utf8LengthLimitingTextInputFormatter(this.maxLength)
: assert(maxLength == -1 || maxLength > 0);

final int maxLength;

@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue,
TextEditingValue newValue,
) {
if (maxLength > 0 && bytesLength(newValue.text) > maxLength) {
// If already at the maximum and tried to enter even more, keep the old value.
if (bytesLength(oldValue.text) == maxLength) {
return oldValue;
}
return truncate(newValue, maxLength);
}
return newValue;
}

static TextEditingValue truncate(TextEditingValue value, int maxLength) {
var newValue = '';
if (bytesLength(value.text) > maxLength) {
var length = 0;

value.text.characters.takeWhile((char) {
var nbBytes = bytesLength(char);
if (length + nbBytes <= maxLength) {
newValue += char;
length += nbBytes;
return true;
}
return false;
});
}
return TextEditingValue(
text: newValue,
selection: value.selection.copyWith(
baseOffset: min(value.selection.start, newValue.length),
extentOffset: min(value.selection.end, newValue.length),
),
composing: TextRange.empty,
);
}

static int bytesLength(String value) {
return utf8.encode(value).length;
}
}
25 changes: 25 additions & 0 deletions lib/widgets/wallet/send_tab.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:convert';
import 'dart:developer';

import 'package:coinslib/coinslib.dart';
Expand All @@ -16,6 +17,7 @@ import 'package:peercoin/providers/activewallets.dart';
import 'package:peercoin/providers/electrumconnection.dart';
import 'package:peercoin/tools/app_routes.dart';
import 'package:peercoin/tools/auth.dart';
import 'package:peercoin/tools/utf8TextField.dart';
import 'package:peercoin/widgets/buttons.dart';
import 'package:peercoin/widgets/service_container.dart';
import 'package:peercoin/widgets/wallet/wallet_balance_header.dart';
Expand Down Expand Up @@ -434,6 +436,29 @@ class _SendTabState extends State<SendTab> {
maxLength: _availableCoin.networkType.opreturnSize,
minLines: 1,
maxLines: 5,
buildCounter: (
context, {
required currentLength,
required isFocused,
maxLength,
}) {
var utf8Length =
utf8.encode(opReturnController.text).length;
return Container(
child: Text(
'$utf8Length/$maxLength',
style: Theme.of(context).textTheme.caption,
),
);
},
inputFormatters: [
Utf8LengthLimitingTextInputFormatter(
_availableCoin.networkType.opreturnSize,
),
],
validator: (value) {
print(value!.length);
},
decoration: InputDecoration(
suffixIcon: IconButton(
onPressed: () async {
Expand Down
2 changes: 1 addition & 1 deletion pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ packages:
name: coinslib
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.3"
version: "3.1.0"
collection:
dependency: "direct main"
description:
Expand Down
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: peercoin
description: A new Peercoin wallet.

version: 0.7.3+69
version: 0.7.4+70

environment:
sdk: '>=2.12.0 <3.0.0'
Expand All @@ -16,7 +16,7 @@ dependencies:
web_socket_channel: ^2.1.0
crypto: ^3.0.1
bip39: ^1.0.6
coinslib: ^3.0.3
coinslib: ^3.1.0
hive: ^2.0.4
hive_flutter: ^1.0.0
hive_generator: ^1.1.0
Expand Down

0 comments on commit 3dff98f

Please sign in to comment.