diff --git a/README.md b/README.md
index fe477448..214c8eff 100644
--- a/README.md
+++ b/README.md
@@ -9,12 +9,12 @@ The Oxen Wallet is a Fork of the Cake Wallet.
flutter pub get
```
-2. Run the build_runner
+2. Run the build_runner to create generated dependency files:
```shell script
- flutter pub run build_runner build
+ flutter pub run build_runner build --delete-conflicting-outputs
```
-3. To download the latest build of the Oxen Dependencies run
+3. To download the latest build of the Oxen Dependencies run:
```
./tool/download-android-deps.sh https://oxen.rocks/oxen-io/oxen-core/oxen-stable-android-deps-LATEST.tar.xz
./tool/download-ios-deps.sh https://oxen.rocks/oxen-io/oxen-core/oxen-stable-ios-deps-LATEST.tar.xz
@@ -42,6 +42,16 @@ The Oxen Wallet is a Fork of the Cake Wallet.
flutter run
```
+ or build APKs with:
+ ```shell script
+ flutter build apk --split-per-abi
+ ```
+
+ or build an .aab (for Google Play Store) with:
+ ```shell script
+ flutter build appbundle
+ ```
+
## Copyright
Copyright (c) 2020 Konstantin Ullrich.\
Copyright (c) 2020 Cake Technologies LLC.
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 3f170e61..663d41f8 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -11,47 +11,48 @@ analyzer:
linter:
rules:
- - always_declare_return_types
- - annotate_overrides
- - avoid_empty_else
- - avoid_init_to_null
- - avoid_return_types_on_setters
- - await_only_futures
- - camel_case_types
- - cancel_subscriptions
- - close_sinks
- - comment_references
- - constant_identifier_names
- - control_flow_in_finally
- - empty_catches
- - empty_constructor_bodies
- - empty_statements
- - hash_and_equals
- - implementation_imports
- - invariant_booleans
- - iterable_contains_unrelated_type
- - library_names
- - library_prefixes
- - list_remove_unrelated_type
- - literal_only_boolean_expressions
- - non_constant_identifier_names
- - one_member_abstracts
- - only_throw_errors
- - overridden_fields
- - package_api_docs
- - package_names
- - package_prefixed_library_names
- - parameter_assignments
- - prefer_final_fields
- - prefer_final_locals
- - prefer_is_not_empty
- - slash_for_doc_comments
- - sort_constructors_first
- - sort_unnamed_constructors_first
- - test_types_in_equals
- - throw_in_finally
- - type_init_formals
- - unawaited_futures
- - unnecessary_getters_setters
- - unrelated_type_equality_checks
- - valid_regexps
\ No newline at end of file
+ always_declare_return_types: true
+ annotate_overrides: true
+ avoid_empty_else: true
+ avoid_init_to_null: true
+ avoid_return_types_on_setters: true
+ await_only_futures: true
+ camel_case_types: true
+ cancel_subscriptions: true
+ close_sinks: true
+ comment_references: true
+ constant_identifier_names: true
+ control_flow_in_finally: true
+ curly_braces_in_flow_control_structures: false
+ empty_catches: true
+ empty_constructor_bodies: true
+ empty_statements: true
+ hash_and_equals: true
+ implementation_imports: true
+ invariant_booleans: true
+ iterable_contains_unrelated_type: true
+ library_names: true
+ library_prefixes: true
+ list_remove_unrelated_type: true
+ literal_only_boolean_expressions: true
+ non_constant_identifier_names: true
+ one_member_abstracts: true
+ only_throw_errors: true
+ overridden_fields: true
+ package_api_docs: true
+ package_names: true
+ package_prefixed_library_names: true
+ parameter_assignments: true
+ prefer_final_fields: true
+ prefer_final_locals: true
+ prefer_is_not_empty: true
+ slash_for_doc_comments: true
+ sort_constructors_first: true
+ sort_unnamed_constructors_first: true
+ test_types_in_equals: true
+ throw_in_finally: true
+ type_init_formals: true
+ unawaited_futures: true
+ unnecessary_getters_setters: true
+ unrelated_type_equality_checks: true
+ valid_regexps: true
\ No newline at end of file
diff --git a/android/app/build.gradle b/android/app/build.gradle
index f0879166..52b6efd7 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -32,7 +32,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion 29
+ compileSdkVersion 31
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -51,11 +51,25 @@ android {
externalNativeBuild {
cmake {
- cppFlags "-std=c++11"
- arguments '-DANDROID_STL=c++_shared', '-DBUILD_TESTING=OFF'
- version "3.10.2"
+ cppFlags "-std=c++17"
+ arguments '-DANDROID_STL=c++_shared'
+ version "3.18.0+"
}
}
+
+ ndk {
+ abiFilters.clear()
+// abiFilters 'x86_64', 'armeabi-v7a', 'arm64-v8a'
+ }
+ }
+
+ splits {
+ abi {
+ enable true //enables the ABIs split mechanism
+ reset() //reset the list of ABIs to be included to an empty string
+ include 'arm64-v8a', 'armeabi-v7a', 'x86_64'
+ universalApk true
+ }
}
signingConfigs {
@@ -73,9 +87,6 @@ android {
signingConfig signingConfigs.release
minifyEnabled true
- useProguard true
-
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
diff --git a/android/build.gradle b/android/build.gradle
index 7087ad19..2ed02f9a 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,12 +1,12 @@
buildscript {
- ext.kotlin_version = '1.4.10'
+ ext.kotlin_version = '1.6.20'
repositories {
google()
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.0'
+ classpath 'com.android.tools.build:gradle:7.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 38c8d454..3a661474 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,4 +1,5 @@
org.gradle.jvmargs=-Xmx1536M
-android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
+android.native.buildOutput=verbose
+android.bundle.enableUncompressedNativeLibs = false
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 296b146b..b776d4b5 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
diff --git a/assets/faq/faq_de.json b/assets/faq/faq_de.json
index 61542016..2bada99f 100644
--- a/assets/faq/faq_de.json
+++ b/assets/faq/faq_de.json
@@ -1,50 +1,50 @@
[
{
"question" : "Was ist der Unterschied zwischen verfügbarem Guthaben und vollständigem Guthaben?",
- "answer" : "Nachdem Sie eine Transaktion getätigt oder Oxen erhalten haben, muss die Transaktion noch bestätigt werden. In ungefähr 20 Minuten sollte Ihr \"verfügbares Guthaben\" aktualisiert werden!\nWenn Sie Oxen senden, verringert sich manchmal Ihr verfügbares Guthaben um mehr als den Betrag, den Sie gesendet haben. Dies ist normal und zum Schutz Ihrer Privatsphäre erforderlich. Ihr \"vollständiges Gleichgewicht\" sollte in 20 Minuten wieder normal sein.\n"
+ "answer" : "Nachdem Sie eine Transaktion getätigt oder Oxen erhalten haben, muss die Transaktion noch bestätigt werden. In ungefähr 20 Minuten sollte Ihr \"verfügbares Guthaben\" aktualisiert werden!\n\nWenn Sie Oxen senden, verringert sich manchmal Ihr verfügbares Guthaben um mehr als den Betrag, den Sie gesendet haben. Dies ist normal und zum Schutz Ihrer Privatsphäre erforderlich. Ihr \"vollständiges Gleichgewicht\" sollte in 20 Minuten wieder normal sein."
},
{
"question" : "Was bedeuten \"Seed\" und \"Schlüssel\"?",
- "answer" : "Ihre Schlüssel verschlüsseln die privaten Informationen in Ihres Wallets und ermöglichen es Ihnen, Coins auszugeben und eingehende Transaktionen anzuzeigen.\nIhr Seed ist nur eine Version Ihres privaten Schlüssels, die so geschrieben wurde, dass Sie sie leichter notieren können. Ihr Seed und Schlüssel sind tatsächlich dasselbe, nur in verschiedenen Formen!\nGeben Sie niemals Ihren Seed oder Schlüssel an jemanden weiter. Ihr Geld wird gestohlen, wenn Sie Ihren Seed oder Schlüssel herausgeben. Bitte notieren Sie sich jedoch Ihren Seed und bewahren Sie ihn an einem sicheren Ort auf (so können Sie Ihr Wallet wiederherstellen, wenn Sie Ihr Telefon verlieren.)\n"
+ "answer" : "Ihre Schlüssel verschlüsseln die privaten Informationen in Ihres Wallets und ermöglichen es Ihnen, Coins auszugeben und eingehende Transaktionen anzuzeigen.\n\nIhr Seed ist nur eine Version Ihres privaten Schlüssels, die so geschrieben wurde, dass Sie sie leichter notieren können. Ihr Seed und Schlüssel sind tatsächlich dasselbe, nur in verschiedenen Formen!\n\nGeben Sie niemals Ihren Seed oder Schlüssel an jemanden weiter. Ihr Geld wird gestohlen, wenn Sie Ihren Seed oder Schlüssel herausgeben. Bitte notieren Sie sich jedoch Ihren Seed und bewahren Sie ihn an einem sicheren Ort auf (so können Sie Ihr Wallet wiederherstellen, wenn Sie Ihr Telefon verlieren.)"
},
{
"question" : "Wie viele Wallets kann ich erstellen?",
- "answer" : "Es gibt keine Grenzen! Sie können so viele Wallets erstellen, wie Sie möchten.\n"
+ "answer" : "Es gibt keine Grenzen! Sie können so viele Wallets erstellen, wie Sie möchten."
},
{
"question" : "Wie kann ich mein Wallet wiederherstellen?",
- "answer" : "Tippen Sie auf das Profil Icon auf ihrem Dashboard (oben rechts), wählen Sie „Wallets“ und dann „Wallet wiederherstellen“. Geben Sie dann Ihren Seed (oder Ihre Schlüssel) und optional ein Datum vor der ersten Transaktion in Ihrer Brieftasche ein (dies beschleunigt den Synchronisierungsvorgang) .) Möglicherweise müssen Sie die App 15 bis 30 Minuten geöffnet lassen, um Ihr Wallet vollständig wiederherzustellen.\n"
+ "answer" : "Tippen Sie auf das Profil Icon auf ihrem Dashboard (oben rechts), wählen Sie „Wallets“ und dann „Wallet wiederherstellen“. Geben Sie dann Ihren Seed (oder Ihre Schlüssel) und optional ein Datum vor der ersten Transaktion in Ihrer Brieftasche ein (dies beschleunigt den Synchronisierungsvorgang) .) Möglicherweise müssen Sie die App 15 bis 30 Minuten geöffnet lassen, um Ihr Wallet vollständig wiederherzustellen."
},
{
"question" : "Was kann ich tun, wenn ich meinen Seed verliere?",
- "answer" : "Wenn Sie Ihren Seed vergessen haben, haben Sie ihn wahrscheinlich irgendwo aufgeschrieben. Bitte überprüfen Sie Ihre Notizen und schauen Sie sich auf Ihrem Computer um. Wenn Sie es nirgendwo finden, haben Sie möglicherweise Oxen Wallet gesichert (in diesem Fall können Sie es aus diesem Backup wiederherstellen.) Wenn keines von beidem der Fall ist, können wir leider nichts tun.\n"
+ "answer" : "Wenn Sie Ihren Seed vergessen haben, haben Sie ihn wahrscheinlich irgendwo aufgeschrieben. Bitte überprüfen Sie Ihre Notizen und schauen Sie sich auf Ihrem Computer um. Wenn Sie es nirgendwo finden, haben Sie möglicherweise Oxen Wallet gesichert (in diesem Fall können Sie es aus diesem Backup wiederherstellen.) Wenn keines von beidem der Fall ist, können wir leider nichts tun."
},
{
"question" : "Sammeln Sie Informationen zu mir oder meinem Wallet?",
- "answer" : "Oxen Wallet sammelt oder zeichnet keine Informationen über Sie oder Ihr Wallet auf. Ihre Privatsphäre ist uns wichtig.\nIhre Privatsphäre kann aber duch die Verbindung zu einem bösarigem Knoten kompromitiert werden. Deshalb empfehlen wir, die Standart Knoten oder ihren eigenen zu verwenden. "
+ "answer" : "Oxen Wallet sammelt oder zeichnet keine Informationen über Sie oder Ihr Wallet auf. Ihre Privatsphäre ist uns wichtig.\n\nIhre Privatsphäre kann aber duch die Verbindung zu einem bösarigem Knoten kompromitiert werden. Deshalb empfehlen wir, die Standart Knoten oder ihren eigenen zu verwenden. "
},
{
"question" : "Woher die Fiat-Daten?",
- "answer" : "Die Fiat-Daten werden durch ein Gateway von CoinGecko geladen.\nDer code des Gateways ist open-source und sammelt oder zeichnet keine Informationen auf, durch das Anfragen der Daten durch das Gateway enthüllen sie Ihre IP und Fiat-Währung.\nDie Fiat Umrechnung ist standartmäßig deaktiviert."
+ "answer" : "Die Fiat-Daten werden durch ein Gateway von CoinGecko geladen.\n\nDer code des Gateways ist open-source und sammelt oder zeichnet keine Informationen auf, durch das Anfragen der Daten durch das Gateway enthüllen sie Ihre IP und Fiat-Währung.\n\nDie Fiat Umrechnung ist standartmäßig deaktiviert."
},
{
"question" : "Kann ich eine Transaktion stornieren?",
- "answer" : "Sobald eine Transaktion an die Blockchain gesendet wurde, kann sie leider nicht mehr rückgängig gemacht werden. Sie können die Transaktion jederzeit abbrechen, bevor sie gesendet wird. Überprüfen Sie die Adresse daher immer, bevor Sie eine Transaktion senden.\n"
+ "answer" : "Sobald eine Transaktion an die Blockchain gesendet wurde, kann sie leider nicht mehr rückgängig gemacht werden. Sie können die Transaktion jederzeit abbrechen, bevor sie gesendet wird. Überprüfen Sie die Adresse daher immer, bevor Sie eine Transaktion senden."
},
{
"question" : "Was sind Subadressen und wie verwende ich sie?",
- "answer" : "Eine Unteradresse ist im Grunde eine eindeutige Adresse, die Sie jederzeit generieren können. An sie gesendete Coins landen weiterhin in Ihrem Wallet, aber die Person, die die Coins sendet, kann Ihre Hauptadresse nicht ermitteln.\nSie können eine neue Unteradresse im Empfangsbildschirm erstellen, indem Sie auf das „+“ neben der Schaltfläche Unteradressen tippen. Geben Sie einen Namen für die Unteradresse ein und tippen Sie auf \"Hinzufügen\". Dann tippen Sie einfach auf den Namen der Subadresse, wenn Sie ihn verwenden möchten!\nWenn Sie paranoid sind, sollten Sie wahrscheinlich jedes Mal, wenn Sie Oxen erhalten, eine neue Unteradresse erstellen.\n"
+ "answer" : "Eine Unteradresse ist im Grunde eine eindeutige Adresse, die Sie jederzeit generieren können. An sie gesendete Coins landen weiterhin in Ihrem Wallet, aber die Person, die die Coins sendet, kann Ihre Hauptadresse nicht ermitteln.\n\nSie können eine neue Unteradresse im Empfangsbildschirm erstellen, indem Sie auf das „+“ neben der Schaltfläche Unteradressen tippen. Geben Sie einen Namen für die Unteradresse ein und tippen Sie auf \"Hinzufügen\". Dann tippen Sie einfach auf den Namen der Subadresse, wenn Sie ihn verwenden möchten!\n\nWenn Sie paranoid sind, sollten Sie wahrscheinlich jedes Mal, wenn Sie Oxen erhalten, eine neue Unteradresse erstellen."
},
{
"question" : "Ich habe meine OXEN nicht erhalten! Was kann ich tun?",
- "answer" : "Wenn Sie Ihr Oxen nicht erhalten haben, möchten Sie möglicherweise auf das Synchonisations Icon auf auf ihrem Dashboard (oben links) tippen und auf Reconnect (Neu verbinden) klicken. Wenn dies nicht funktioniert, gehen Sie in das Einstellungsmenü, tippen Sie auf das Feld \"Aktueller Knoten\" und wählen Sie einen Knoten mit einem grünen Punkt daneben aus.\n"
+ "answer" : "Wenn Sie Ihr Oxen nicht erhalten haben, möchten Sie möglicherweise auf das Synchonisations Icon auf auf ihrem Dashboard (oben links) tippen und auf Reconnect (Neu verbinden) klicken. Wenn dies nicht funktioniert, gehen Sie in das Einstellungsmenü, tippen Sie auf das Feld \"Aktueller Knoten\" und wählen Sie einen Knoten mit einem grünen Punkt daneben aus."
},
{
"question" : "Wie kontaktiere ich den Oxen Wallet-Support?",
- "answer" : "Senden Sie eine E-Mail an team@oxen.io, schließen Sie sich dem Telegram unter @LokiCommunity an oder twittern Sie @Oxen_io!\n"
+ "answer" : "Senden Sie eine E-Mail an team@oxen.io, schließen Sie sich dem Telegram unter @LokiCommunity an oder twittern Sie @Oxen_io!"
},
{
"question" : "Macht mich der Besitz von Oxen zu einem Investor?",
- "answer" : "Nein, macht es nicht. Es macht sie zu einer coolen Person mit Oxen.\n"
+ "answer" : "Nein, macht es nicht. Es macht sie zu einer coolen Person mit Oxen."
}
-]
\ No newline at end of file
+]
diff --git a/assets/faq/faq_en.json b/assets/faq/faq_en.json
index a271e820..37f48484 100644
--- a/assets/faq/faq_en.json
+++ b/assets/faq/faq_en.json
@@ -1,50 +1,50 @@
[
{
"question" : "What’s the difference between Available Balance and Full Balance?",
- "answer" : "After you make a transaction or receive some Oxen, the transaction still needs to be confirmed. In about 20 minutes your available balance should update!\nSometimes, when you send Oxen, your available balance will decrease by more than the amount you’ve sent. This is normal, and it’s necessary in order to protect your privacy. Your full balance should be back to normal in 20 minutes.\n"
+ "answer" : "After you make a transaction or receive some Oxen, the transaction still needs to be confirmed. In about 20 minutes your available balance should update!\n\nSometimes, when you send Oxen, your available balance will decrease by more than the amount you’ve sent. This is normal, and it’s necessary in order to protect your privacy. Your full balance should be back to normal in 20 minutes.\n\nYour Oxen is also locked by the contributed amount when you contribute to a Service Node for the duration of the stake."
},
{
"question" : "What do \"seed\" and \"keys\" mean?",
- "answer" : "Your keys encode the private information in your wallet, and are what allow you to spend coins and see incoming transactions.\nYour seed is just a version of your private key written in a way that’s easier for you to write down. Your seed and keys are actually the same thing, just in different forms!\nDO NOT ever give your seed or keys to anyone. Your funds will be stolen if you give out your seed or keys. Please write down your seed, however, and store it in a safe place (this will allow you to restore your wallet if you lose your phone.)\n"
+ "answer" : "Your keys encode the private information in your wallet, and are what allow you to spend coins and see incoming transactions.\n\nYour seed is just a version of your private key written in a way that’s easier for you to write down. Your seed and keys are actually the same thing, just in different forms!\n\nDO NOT ever give your seed or keys to anyone. Your funds will be stolen if you give out your seed or keys. Please write down your seed, however, and store it in a safe place (this will allow you to restore your wallet if you lose your phone)."
},
{
"question" : "How many wallets can I create?",
- "answer" : "There is no limit! You can create as many wallets as you want.\n"
+ "answer" : "There is no limit! You can create as many wallets as you want."
},
{
"question" : "How can I restore my wallet?",
- "answer" : "Tap the profile icon on your dashboard (upper right), select Wallets, and then choose Restore Wallet. Then enter your seed (or your keys), and optionally enter a date before the first transaction in your wallet (this will speed up the syncing process.) You may need to keep the app open for 15-30 minutes in order to completely restore your wallet.\n"
+ "answer" : "Tap the profile icon on your dashboard (upper right), select Wallets, and then choose Restore Wallet. Then enter your seed (or your keys), and optionally enter a date before the first transaction in your wallet (this will speed up the syncing process.) You may need to keep the app open for 15-30 minutes in order to completely restore your wallet."
},
{
"question" : "What can I do if I lose my seed?",
- "answer" : "If you forgot your seed, you likely wrote it down somewhere. Please check your notes and look around on your computer. If you can’t find it anywhere, you may have backed up Oxen Wallet (in which case you would be able to restore from that backup.) If none of these work, there is unfortunately nothing that we can do.\n"
+ "answer" : "If you forgot your seed, you likely wrote it down somewhere. Please check your notes and look around on your computer. If you can’t find it anywhere, you may have backed up Oxen Wallet (in which case you would be able to restore from that backup.) If none of these work, there is unfortunately nothing that we can do."
},
{
"question" : "Do you collect any information about me or my wallet?",
- "answer" : "Oxen Wallet DOES NOT collect or record any information about you or your wallet. We care about your privacy.\nYour privacy can be compromised by connecting to a malicious node, so we recommend to use either the default nodes or your own.\n"
+ "answer" : "Oxen Wallet DOES NOT collect or record any information about you or your wallet. We care about your privacy.\n\nYour privacy can be compromised by connecting to a malicious node, so we recommend to use either the default nodes or your own."
},
{
"question" : "Where do you get the fiat data from?",
- "answer" : "The fiat data is pulled trough a gateway from CoinGecko.\nThe code of the gateway is open-source and does not collect or record any data, but by requesting data from the gateway you are exposing your IP and Fiat.\nThe Fiat conversation is disabled by default.\n"
+ "answer" : "The fiat data is pulled trough a gateway from CoinGecko.\n\nThe code of the gateway is open-source and does not collect or record any data, but by requesting data from the gateway you are exposing your IP and fiat currency selection.\n\nThe fiat conversation is disabled by default."
},
{
"question" : "Is it possible to reverse a transaction?",
- "answer" : "Unfortunately, as soon as a transaction has been submitted to the blockchain, there is no way to undo it. You can always cancel the transaction before it’s sent though, so always double-check the address before you send a transaction.\n"
+ "answer" : "Unfortunately, as soon as a transaction has been submitted to the blockchain, there is no way to undo it. You can always cancel the transaction before it’s sent though, so always double-check the address before you send a transaction."
},
{
"question" : "What are subaddresses, and how do I use them?",
- "answer" : "A subaddress is basically a unique address that you can generate at any time. Coins sent to it will still arrive in your main wallet, but the person sending the coins can’t tell what your main address is.\nYou can make a new subaddress in the Receive screen by tapping the + next to the Subaddresses button. Enter a name for the subaddress and tap Add. Then just tap on the subaddress name when you want to use it!\nIf you’re paranoid, you should probably create a new subaddress every time you receive Oxen.\n"
+ "answer" : "A subaddress is basically a unique address that you can generate at any time. Coins sent to it will still arrive in your main wallet, but the person sending the coins can’t tell what your main address is.\n\nYou can make a new subaddress in the Receive screen by tapping the + next to the Subaddresses button. Enter a name for the subaddress and tap Add. Then just tap on the subaddress name when you want to use it!\n\nIf you’re paranoid, you should probably create a new subaddress every time you receive Oxen."
},
{
"question" : "I didn't receive my OXEN! What can I do?",
- "answer" : "If you didn't receive your Oxen, you might want to tap the Synchronize Icon on your dashboard (upper left) and hit Reconnect. If that doesn't work, go into the settings menu, tap the 'Current Node' box, and select a node with a green dot next to it.\n"
+ "answer" : "If you didn't receive your Oxen, you might want to tap the Synchronize Icon on your dashboard (upper left) and hit Reconnect. If that doesn't work, go into the settings menu, tap the 'Current Node' box, and select a node with a green dot next to it."
},
{
"question" : "How do I contact Oxen Wallet support?",
- "answer" : "Email team@oxen.io, join the Telegram at @LokiCommunity, or tweet @Oxen_io!\n"
+ "answer" : "Email team@oxen.io, join the Telegram at @LokiCommunity, or tweet @Oxen_io!"
},
{
"question" : "Does owning Oxen make me an Investor?",
- "answer" : "No, it does not. It makes you a cool person, but with Oxen.\n"
+ "answer" : "No, it does not. It makes you a cool person, but with Oxen."
}
-]
\ No newline at end of file
+]
diff --git a/assets/images/2.0x/Session.png b/assets/images/2.0x/Session.png
new file mode 100644
index 00000000..81669b9e
Binary files /dev/null and b/assets/images/2.0x/Session.png differ
diff --git a/assets/images/3.0x/Session.png b/assets/images/3.0x/Session.png
new file mode 100644
index 00000000..1d544a11
Binary files /dev/null and b/assets/images/3.0x/Session.png differ
diff --git a/assets/images/Session.png b/assets/images/Session.png
new file mode 100644
index 00000000..0fb22a9e
Binary files /dev/null and b/assets/images/Session.png differ
diff --git a/assets/node_list.yml b/assets/node_list.yml
index d18d87d7..92a29480 100644
--- a/assets/node_list.yml
+++ b/assets/node_list.yml
@@ -1,12 +1,8 @@
-
uri: public.loki.foundation:22023
- is_default: true
+-
+ uri: freyr.imaginary.stream:22023
-
uri: nodes.hashvault.pro:22023
- is_default: false
-
uri: node.loki-pool.com:18081
- is_default: false
--
- uri: freyr.imaginary.stream:22023
- is_default: false
diff --git a/assets/testnet_node_list.yml b/assets/testnet_node_list.yml
index 85a00653..d48b4aad 100644
--- a/assets/testnet_node_list.yml
+++ b/assets/testnet_node_list.yml
@@ -1,3 +1,2 @@
-
uri: public.loki.foundation:38157
- is_default: true
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index acd4b34e..a47d8839 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1,11 +1,10 @@
PODS:
- - barcode_scan (0.0.1):
+ - barcode_scan2 (0.0.1):
- Flutter
- MTBBarcodeScanner
+ - SwiftProtobuf
- devicelocale (0.0.1):
- Flutter
- - esys_flutter_share (0.0.1):
- - Flutter
- Flutter (1.0.0)
- flutter_secure_storage (3.3.1):
- Flutter
@@ -19,37 +18,39 @@ PODS:
- Flutter
- package_info (0.0.1):
- Flutter
- - path_provider (0.0.1):
+ - path_provider_ios (0.0.1):
+ - Flutter
+ - share_plus (0.0.1):
- Flutter
- - shared_preferences (0.0.1):
+ - shared_preferences_ios (0.0.1):
- Flutter
- - url_launcher (0.0.1):
+ - SwiftProtobuf (1.15.0)
+ - url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- - barcode_scan (from `.symlinks/plugins/barcode_scan/ios`)
+ - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`)
- devicelocale (from `.symlinks/plugins/devicelocale/ios`)
- - esys_flutter_share (from `.symlinks/plugins/esys_flutter_share/ios`)
- Flutter (from `Flutter`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
- oxen_coin (from `.symlinks/plugins/oxen_coin/ios`)
- package_info (from `.symlinks/plugins/package_info/ios`)
- - path_provider (from `.symlinks/plugins/path_provider/ios`)
- - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
+ - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
+ - share_plus (from `.symlinks/plugins/share_plus/ios`)
+ - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
+ - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
trunk:
- MTBBarcodeScanner
+ - SwiftProtobuf
EXTERNAL SOURCES:
- barcode_scan:
- :path: ".symlinks/plugins/barcode_scan/ios"
+ barcode_scan2:
+ :path: ".symlinks/plugins/barcode_scan2/ios"
devicelocale:
:path: ".symlinks/plugins/devicelocale/ios"
- esys_flutter_share:
- :path: ".symlinks/plugins/esys_flutter_share/ios"
Flutter:
:path: Flutter
flutter_secure_storage:
@@ -60,27 +61,30 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/oxen_coin/ios"
package_info:
:path: ".symlinks/plugins/package_info/ios"
- path_provider:
- :path: ".symlinks/plugins/path_provider/ios"
- shared_preferences:
- :path: ".symlinks/plugins/shared_preferences/ios"
- url_launcher:
- :path: ".symlinks/plugins/url_launcher/ios"
+ path_provider_ios:
+ :path: ".symlinks/plugins/path_provider_ios/ios"
+ share_plus:
+ :path: ".symlinks/plugins/share_plus/ios"
+ shared_preferences_ios:
+ :path: ".symlinks/plugins/shared_preferences_ios/ios"
+ url_launcher_ios:
+ :path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
- barcode_scan: 33f586d02270046fc6559135038b34b5754eaa4f
+ barcode_scan2: 0af2bb63c81b4565aab6cd78278e4c0fa136dbb0
devicelocale: b22617f40038496deffba44747101255cee005b0
- esys_flutter_share: 403498dab005b36ce1f8d7aff377e81f0621b0b4
- Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
+ Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
- local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
+ local_auth: 1740f55d7af0a2e2a8684ce225fe79d8931e808c
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
oxen_coin: a5a9e565bab069b0d5670ecb7bfd5d605b1c055a
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
- path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
- shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
- url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
+ path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
+ share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
+ shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
+ SwiftProtobuf: 3320217e9d8fb75f36b40282e78c482640fd75dd
+ url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
PODFILE CHECKSUM: f10c0438b63bc24e6bbc207956dc27d16c4408f2
-COCOAPODS: 1.10.0
+COCOAPODS: 1.11.3
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index a81e9508..95b999a3 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -168,7 +168,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1020;
+ LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16..919434a6 100644
--- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index f9dd4970..d57d2d29 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,6 +1,6 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- $(MARKETING_VERSION)
+ $(FLUTTER_BUILD_NAME)
CFBundleSignature
????
CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
+ $(FLUTTER_BUILD_NUMBER)
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/l10n.yaml b/l10n.yaml
new file mode 100644
index 00000000..4f4c96e2
--- /dev/null
+++ b/l10n.yaml
@@ -0,0 +1,4 @@
+arb-dir: lib/l10n
+template-arb-file: app_en.arb
+output-localization-file: app_localizations.dart
+#output-dir: lib/generated
diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart
deleted file mode 100644
index f6bf2b15..00000000
--- a/lib/generated/intl/messages_all.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
-// This is a library that looks up messages for specific locales by
-// delegating to the appropriate library.
-
-// Ignore issues from commonly used lints in this file.
-// ignore_for_file:implementation_imports, file_names, unnecessary_new
-// ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering
-// ignore_for_file:argument_type_not_assignable, invalid_assignment
-// ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases
-// ignore_for_file:comment_references
-
-import 'dart:async';
-
-import 'package:intl/intl.dart';
-import 'package:intl/message_lookup_by_library.dart';
-import 'package:intl/src/intl_helpers.dart';
-
-import 'messages_de.dart' as messages_de;
-import 'messages_en.dart' as messages_en;
-import 'messages_fr.dart' as messages_fr;
-
-typedef Future LibraryLoader();
-Map _deferredLibraries = {
- 'de': () => new Future.value(null),
- 'en': () => new Future.value(null),
- 'fr': () => new Future.value(null),
-};
-
-MessageLookupByLibrary _findExact(String localeName) {
- switch (localeName) {
- case 'de':
- return messages_de.messages;
- case 'en':
- return messages_en.messages;
- case 'fr':
- return messages_fr.messages;
- default:
- return null;
- }
-}
-
-/// User programs should call this before using [localeName] for messages.
-Future initializeMessages(String localeName) async {
- var availableLocale = Intl.verifiedLocale(
- localeName,
- (locale) => _deferredLibraries[locale] != null,
- onFailure: (_) => null);
- if (availableLocale == null) {
- return new Future.value(false);
- }
- var lib = _deferredLibraries[availableLocale];
- await (lib == null ? new Future.value(false) : lib());
- initializeInternalMessageLookup(() => new CompositeMessageLookup());
- messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor);
- return new Future.value(true);
-}
-
-bool _messagesExistFor(String locale) {
- try {
- return _findExact(locale) != null;
- } catch (e) {
- return false;
- }
-}
-
-MessageLookupByLibrary _findGeneratedMessagesFor(String locale) {
- var actualLocale = Intl.verifiedLocale(locale, _messagesExistFor,
- onFailure: (_) => null);
- if (actualLocale == null) return null;
- return _findExact(actualLocale);
-}
diff --git a/lib/generated/intl/messages_de.dart b/lib/generated/intl/messages_de.dart
deleted file mode 100644
index 9d9e2958..00000000
--- a/lib/generated/intl/messages_de.dart
+++ /dev/null
@@ -1,305 +0,0 @@
-// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
-// This is a library that provides messages for a de locale. All the
-// messages from the main program should be duplicated here with the same
-// function name.
-
-// Ignore issues from commonly used lints in this file.
-// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
-// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
-// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
-// ignore_for_file:unused_import, file_names
-
-import 'package:intl/intl.dart';
-import 'package:intl/message_lookup_by_library.dart';
-
-final messages = new MessageLookup();
-
-typedef String MessageIfAbsent(String messageStr, List args);
-
-class MessageLookup extends MessageLookupByLibrary {
- String get localeName => 'de';
-
- static m0(status) => "${status} verbleibende Blöcke";
-
- static m1(serviceNodeKey) => "Möchtest du wirkklich dein Stake von ${serviceNodeKey} entsperren?";
-
- static m2(node) => "Möchten Sie den aktuellen Knoten wirklich auf ändern? ${node}?";
-
- static m3(language) => "Ändern Sie die Sprache zu ${language}?";
-
- static m4(amount, fee) => "Transaktion festschreiben\nMenge: ${amount}\nGebühr: ${fee}";
-
- static m5(key) => "Kopiert ${key} in die Zwischenablage";
-
- static m6(item, app_store) => "Geben sie NIEMALS ihren Oxen wallet ${item} in einer andere software oder website außer den OFFIZIELLEN Oxen wallets aus dem ${app_store}, der Oxen website, der dem Oxen GitHub.\nMöchtest du wirklich fortfahren?";
-
- static m7(state_error) => "Authentifizierung fehlgeschlagen. ${state_error}";
-
- static m8(item) => "Geben sie NIEMALS ihren Oxen wallet ${item} weiter!";
-
- static m9(recipient_name) => "Sie senden Geld an\n${recipient_name}";
-
- static m10(name) => "Keine Route definiert für ${name}";
-
- static m11(transactionPriority) => "Derzeit ist die Priorität auf ${transactionPriority} festgelegt.\nDie Transaktionspriorität kann in den Einstellungen angepasst werden";
-
- static m12(title) => "${title} in die Zwischenablage kopiert";
-
- static m13(currentVersion) => "Ausführung ${currentVersion}";
-
- static m14(wallet_name, error) => "Laden fehlgeschlagen ${wallet_name} Wallet. ${error}";
-
- static m15(wallet_name, error) => "Fehler beim Entfernen ${wallet_name} Wallet. ${error}";
-
- static m16(wallet_name) => "Wallet ${wallet_name} wird geladen";
-
- static m17(wallet_name) => "Wallet ${wallet_name} entfernen";
-
- final messages = _notInlinedMessages(_notInlinedMessages);
- static _notInlinedMessages(_) => {
- "Blocks_remaining" : m0,
- "account" : MessageLookupByLibrary.simpleMessage("Konto"),
- "accounts" : MessageLookupByLibrary.simpleMessage("Konten"),
- "add" : MessageLookupByLibrary.simpleMessage("Hinzufügen"),
- "add_new_word" : MessageLookupByLibrary.simpleMessage("Neues Wort hinzufügen"),
- "address_book" : MessageLookupByLibrary.simpleMessage("Adressbuch"),
- "address_book_menu" : MessageLookupByLibrary.simpleMessage("Adressbuch"),
- "all" : MessageLookupByLibrary.simpleMessage("ALLE"),
- "amount" : MessageLookupByLibrary.simpleMessage("Menge: "),
- "amount_detail_detailed" : MessageLookupByLibrary.simpleMessage("4 - Detailliert"),
- "amount_detail_none" : MessageLookupByLibrary.simpleMessage("0 - Keine"),
- "amount_detail_normal" : MessageLookupByLibrary.simpleMessage("2 - Normal"),
- "amount_detail_ultra" : MessageLookupByLibrary.simpleMessage("9 - Ultra"),
- "auth_store_ban_timeout" : MessageLookupByLibrary.simpleMessage("Auszeit verbieten"),
- "auth_store_banned_for" : MessageLookupByLibrary.simpleMessage("Gebannt für "),
- "auth_store_banned_minutes" : MessageLookupByLibrary.simpleMessage(" Protokoll"),
- "auth_store_incorrect_password" : MessageLookupByLibrary.simpleMessage("Falsches PIN"),
- "authenticated" : MessageLookupByLibrary.simpleMessage("Authentifiziert"),
- "authentication" : MessageLookupByLibrary.simpleMessage("Authentifizierung"),
- "available_balance" : MessageLookupByLibrary.simpleMessage("Verfügbares Guthaben"),
- "biometric_auth_reason" : MessageLookupByLibrary.simpleMessage("Scannen Sie Ihren Fingerabdruck zur Authentifizierung"),
- "body_confirm_unlock_stake" : m1,
- "cancel" : MessageLookupByLibrary.simpleMessage("Abbrechen"),
- "change" : MessageLookupByLibrary.simpleMessage("Veränderung"),
- "change_current_node" : m2,
- "change_language" : MessageLookupByLibrary.simpleMessage("Sprache ändern"),
- "change_language_to" : m3,
- "changelog" : MessageLookupByLibrary.simpleMessage("Änderungsprotokoll"),
- "clear" : MessageLookupByLibrary.simpleMessage("Löschen"),
- "commit_transaction_amount_fee" : m4,
- "confirm" : MessageLookupByLibrary.simpleMessage("Bestätigen"),
- "confirm_sending" : MessageLookupByLibrary.simpleMessage("Bestätigen Sie das Senden"),
- "contact" : MessageLookupByLibrary.simpleMessage("Kontakt"),
- "contact_name" : MessageLookupByLibrary.simpleMessage("Name des Ansprechpartners"),
- "continue_text" : MessageLookupByLibrary.simpleMessage("Fortsetzen"),
- "copied_key_to_clipboard" : m5,
- "copied_to_clipboard" : MessageLookupByLibrary.simpleMessage("In die Zwischenablage kopiert"),
- "copy" : MessageLookupByLibrary.simpleMessage("Kopieren"),
- "create_new" : MessageLookupByLibrary.simpleMessage("Neu erstellen"),
- "dangerzone" : MessageLookupByLibrary.simpleMessage("Gefahrenzone"),
- "dangerzone_warning" : m6,
- "delete" : MessageLookupByLibrary.simpleMessage("Löschen"),
- "digit_pin" : MessageLookupByLibrary.simpleMessage("-stelliger PIN"),
- "edit" : MessageLookupByLibrary.simpleMessage("Bearbeiten"),
- "enter_your_pin" : MessageLookupByLibrary.simpleMessage("PIN eingeben"),
- "enter_your_pin_again" : MessageLookupByLibrary.simpleMessage("Geben Sie Ihre PIN erneut ein"),
- "error" : MessageLookupByLibrary.simpleMessage("Error"),
- "error_text_account_name" : MessageLookupByLibrary.simpleMessage("Der Kontoname darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein"),
- "error_text_address" : MessageLookupByLibrary.simpleMessage("Die Walletadresse muss dem Typ der Kryptowährung\nentsprechen"),
- "error_text_amount" : MessageLookupByLibrary.simpleMessage("Betrag kann nur Zahlen enthalten"),
- "error_text_contact_name" : MessageLookupByLibrary.simpleMessage("Im Kontaktname könne die Symbole ` , \' \" nicht enthalten sein\nund muss zwischen 1 und 32 Zeichen lang sein"),
- "error_text_crypto_currency" : MessageLookupByLibrary.simpleMessage("Die Anzahl der Nachkommastellen\nmuss kleiner oder gleich 12 sein."),
- "error_text_fiat" : MessageLookupByLibrary.simpleMessage("Der Wert des Betrags darf den verfügbaren Kontostand nicht überschreiten.\nDie Anzahl der Nachkommastellen muss kleiner oder gleich 2 sein"),
- "error_text_keys" : MessageLookupByLibrary.simpleMessage("Walletschlüssel können nur 64 hexadezimale Zeichen enthalten"),
- "error_text_node_address" : MessageLookupByLibrary.simpleMessage("Bitte geben Sie eine iPv4-Adresse ein"),
- "error_text_node_port" : MessageLookupByLibrary.simpleMessage("Der Knotenport kann nur Nummern zwischen 0 und 65535 enthalten"),
- "error_text_oxen" : MessageLookupByLibrary.simpleMessage("Der OXEN-Wert kann das verfügbare Guthaben nicht überschreiten.\nDie Anzahl der Nachkommastellen muss kleiner oder gleich 12 sein"),
- "error_text_payment_id" : MessageLookupByLibrary.simpleMessage("Die Zahlungs-ID kann nur 16 bis 64 hexadezimale Zeichen enthalten"),
- "error_text_service_node" : MessageLookupByLibrary.simpleMessage("Service Node Schlüssel können nur 64 hexadezimale Zeichen enthalten"),
- "error_text_subaddress_name" : MessageLookupByLibrary.simpleMessage("Im Namen der Unteradresse könne die Symbole ` , \' \" nicht enthalten sein\nund muss zwischen 1 und 20 Zeichen lang sein"),
- "error_text_wallet_name" : MessageLookupByLibrary.simpleMessage("Der Walletname darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein"),
- "failed_authentication" : m7,
- "faq" : MessageLookupByLibrary.simpleMessage("FAQ"),
- "fetching" : MessageLookupByLibrary.simpleMessage("aktualisieren"),
- "filters" : MessageLookupByLibrary.simpleMessage("Filter"),
- "first_wallet_text" : MessageLookupByLibrary.simpleMessage("Das tolle Wallet\nfür Oxen"),
- "full_balance" : MessageLookupByLibrary.simpleMessage("Volles Guthaben"),
- "hidden_balance" : MessageLookupByLibrary.simpleMessage("Verstecktes Guthaben"),
- "id" : MessageLookupByLibrary.simpleMessage("ID: "),
- "incoming" : MessageLookupByLibrary.simpleMessage("Eingehend"),
- "incorrect_seed" : MessageLookupByLibrary.simpleMessage("Der eingegebene Text ist ungültig."),
- "keys_title" : MessageLookupByLibrary.simpleMessage("Schlüssel"),
- "loading_your_wallet" : MessageLookupByLibrary.simpleMessage("Wallet wird geladen"),
- "login" : MessageLookupByLibrary.simpleMessage("Einloggen"),
- "never_give_your" : m8,
- "new_subaddress_create" : MessageLookupByLibrary.simpleMessage("Erstellen"),
- "new_subaddress_label_name" : MessageLookupByLibrary.simpleMessage("Name"),
- "new_subaddress_title" : MessageLookupByLibrary.simpleMessage("Neue Unteradresse"),
- "new_wallet" : MessageLookupByLibrary.simpleMessage("Neues Wallet"),
- "node_address" : MessageLookupByLibrary.simpleMessage("Knotenadresse"),
- "node_new" : MessageLookupByLibrary.simpleMessage("Neuer Knoten"),
- "node_port" : MessageLookupByLibrary.simpleMessage("Knotenport"),
- "node_reset_settings_title" : MessageLookupByLibrary.simpleMessage("Einstellungen zurücksetzen"),
- "nodes" : MessageLookupByLibrary.simpleMessage("Knoten"),
- "nodes_list_reset_to_default_message" : MessageLookupByLibrary.simpleMessage("Möchten Sie die Einstellungen wirklich auf die Standardeinstellungen zurücksetzen?"),
- "nothing_staked" : MessageLookupByLibrary.simpleMessage("Noch nichts gestaked"),
- "ok" : MessageLookupByLibrary.simpleMessage("OK"),
- "openalias_alert_content" : m9,
- "openalias_alert_title" : MessageLookupByLibrary.simpleMessage("OXEN-Empfänger erkannt"),
- "outgoing" : MessageLookupByLibrary.simpleMessage("Ausgehend"),
- "oxen_available_balance" : MessageLookupByLibrary.simpleMessage("OXEN verfügbares Guthaben"),
- "oxen_full_balance" : MessageLookupByLibrary.simpleMessage("OXEN volles Guthaben"),
- "oxen_hidden" : MessageLookupByLibrary.simpleMessage("OXEN versteckt"),
- "password" : MessageLookupByLibrary.simpleMessage("Passwort"),
- "paste" : MessageLookupByLibrary.simpleMessage("Einfügen"),
- "pending" : MessageLookupByLibrary.simpleMessage(" (steht aus)"),
- "pin_is_incorrect" : MessageLookupByLibrary.simpleMessage("PIN ist falsch"),
- "please_make_selection" : MessageLookupByLibrary.simpleMessage("Bitte treffen Sie unten eine Auswahl zu\nErstellen oder Wiederherstellen Ihres Wallets."),
- "please_select" : MessageLookupByLibrary.simpleMessage("Bitte auswählen:"),
- "please_try_to_connect_to_another_node" : MessageLookupByLibrary.simpleMessage("Bitte versuchen Sie, eine Verbindung zu einem anderen Knoten herzustellen"),
- "receive" : MessageLookupByLibrary.simpleMessage("Erhalten"),
- "receive_amount" : MessageLookupByLibrary.simpleMessage("Menge"),
- "received" : MessageLookupByLibrary.simpleMessage("Empfangen"),
- "reconnect" : MessageLookupByLibrary.simpleMessage("Erneut verbinden"),
- "reconnect_alert_text" : MessageLookupByLibrary.simpleMessage("Sind Sie sicher, dass Sie die Verbindung wiederherstellen möchten?"),
- "reconnection" : MessageLookupByLibrary.simpleMessage("Wiederverbindung"),
- "reload_fiat" : MessageLookupByLibrary.simpleMessage("Fiat-Kurs neuladen"),
- "remove" : MessageLookupByLibrary.simpleMessage("Löschen"),
- "remove_node" : MessageLookupByLibrary.simpleMessage("Knoten entfernen"),
- "remove_node_message" : MessageLookupByLibrary.simpleMessage("Möchten Sie den ausgewählten Knoten wirklich entfernen?"),
- "rescan" : MessageLookupByLibrary.simpleMessage("Erneut scannen"),
- "reset" : MessageLookupByLibrary.simpleMessage("Zurücksetzen"),
- "restore_address" : MessageLookupByLibrary.simpleMessage("Adresse"),
- "restore_description_from_backup" : MessageLookupByLibrary.simpleMessage("Sie können die gesamte Oxen Wallet-App aus ihrer Sicherungsdatei wiederherstellen."),
- "restore_description_from_keys" : MessageLookupByLibrary.simpleMessage("Stellen Sie Ihr Wallet von generiert wieder her Tastenanschläge, die von Ihren privaten Schlüsseln gespeichert wurden"),
- "restore_description_from_seed" : MessageLookupByLibrary.simpleMessage("Stellen Sie Ihr Wallet aus den 25 Wörtern wieder her oder 13-Wort-Kombinationscode"),
- "restore_description_from_seed_keys" : MessageLookupByLibrary.simpleMessage("Stellen sie Ihr Wallet mit Seed / Schlüsseln, welche Sie an einem sicheren Ort aufbewahrt haben, wieder her"),
- "restore_from_seed_placeholder" : MessageLookupByLibrary.simpleMessage("Bitte geben Sie hier Ihren Code ein"),
- "restore_next" : MessageLookupByLibrary.simpleMessage("Weiter"),
- "restore_recover" : MessageLookupByLibrary.simpleMessage("Wiederherstellen"),
- "restore_restore_wallet" : MessageLookupByLibrary.simpleMessage("Wallet wiederherstellen"),
- "restore_seed_keys_restore" : MessageLookupByLibrary.simpleMessage("Seed / Schlüssel wiederherstellen"),
- "restore_spend_key_private" : MessageLookupByLibrary.simpleMessage("Ausgabe-Schlüssel (geheim)"),
- "restore_title_from_backup" : MessageLookupByLibrary.simpleMessage("Aus einer Sicherungsdatei wiederherstellen"),
- "restore_title_from_keys" : MessageLookupByLibrary.simpleMessage("Wiederherstellen von Schlüsseln"),
- "restore_title_from_seed" : MessageLookupByLibrary.simpleMessage("Aus Seed wiederherstellen"),
- "restore_title_from_seed_keys" : MessageLookupByLibrary.simpleMessage("Vom Seed / Schlüssel wiederherstellen"),
- "restore_view_key_private" : MessageLookupByLibrary.simpleMessage("Anzeige-Schlüssel (geheim)"),
- "restore_wallet" : MessageLookupByLibrary.simpleMessage("Wallet wiederherstellen"),
- "restore_wallet_name" : MessageLookupByLibrary.simpleMessage("Walletname"),
- "restore_wallet_restore_description" : MessageLookupByLibrary.simpleMessage("Beschreibung zur Wiederherstellung des Wallets"),
- "router_no_route" : m10,
- "save" : MessageLookupByLibrary.simpleMessage("Speichern"),
- "seed_language_chinese" : MessageLookupByLibrary.simpleMessage("Chinesisch"),
- "seed_language_choose" : MessageLookupByLibrary.simpleMessage("Bitte wählen Sie die Ausgangssprache"),
- "seed_language_dutch" : MessageLookupByLibrary.simpleMessage("Niederländisch"),
- "seed_language_english" : MessageLookupByLibrary.simpleMessage("Englisch"),
- "seed_language_french" : MessageLookupByLibrary.simpleMessage("Französisch"),
- "seed_language_german" : MessageLookupByLibrary.simpleMessage("Deutsch"),
- "seed_language_italian" : MessageLookupByLibrary.simpleMessage("Italienisch"),
- "seed_language_japanese" : MessageLookupByLibrary.simpleMessage("Japanisch"),
- "seed_language_next" : MessageLookupByLibrary.simpleMessage("Weiter"),
- "seed_language_portuguese" : MessageLookupByLibrary.simpleMessage("Portugiesisch"),
- "seed_language_russian" : MessageLookupByLibrary.simpleMessage("Russisch"),
- "seed_language_spanish" : MessageLookupByLibrary.simpleMessage("Spanisch"),
- "seed_share" : MessageLookupByLibrary.simpleMessage("Teilen Sie Seed"),
- "seed_title" : MessageLookupByLibrary.simpleMessage("Seed"),
- "send" : MessageLookupByLibrary.simpleMessage("Senden"),
- "send_creating_transaction" : MessageLookupByLibrary.simpleMessage("Transaktion erstellen"),
- "send_error_currency" : MessageLookupByLibrary.simpleMessage("Die Währung kann nur Zahlen enthalten"),
- "send_estimated_fee" : MessageLookupByLibrary.simpleMessage("Geschätzte Gebühr:"),
- "send_oxen" : MessageLookupByLibrary.simpleMessage("OXEN Senden"),
- "send_oxen_address" : MessageLookupByLibrary.simpleMessage("Oxen-Adresse"),
- "send_priority" : m11,
- "send_title" : MessageLookupByLibrary.simpleMessage("Senden Sie Oxen"),
- "send_your_wallet" : MessageLookupByLibrary.simpleMessage("Dein Wallet"),
- "sending" : MessageLookupByLibrary.simpleMessage("Senden"),
- "sent" : MessageLookupByLibrary.simpleMessage("Geschickt"),
- "service_node_key" : MessageLookupByLibrary.simpleMessage("Service Node Schlüssel"),
- "settings_all" : MessageLookupByLibrary.simpleMessage("ALLE"),
- "settings_allow_biometric_authentication" : MessageLookupByLibrary.simpleMessage("Biometrische Authentifizierung"),
- "settings_balance_detail" : MessageLookupByLibrary.simpleMessage("Dezimalstellen"),
- "settings_change_language" : MessageLookupByLibrary.simpleMessage("Sprache ändern"),
- "settings_change_pin" : MessageLookupByLibrary.simpleMessage("PIN ändern"),
- "settings_currency" : MessageLookupByLibrary.simpleMessage("Währung"),
- "settings_current_node" : MessageLookupByLibrary.simpleMessage("Aktueller Knoten"),
- "settings_dark_mode" : MessageLookupByLibrary.simpleMessage("Dunkler Modus"),
- "settings_display_balance_as" : MessageLookupByLibrary.simpleMessage("Kontostand anzeigen als"),
- "settings_display_on_dashboard_list" : MessageLookupByLibrary.simpleMessage("Anzeige in der Dashboard-Liste"),
- "settings_enable_fiat_currency" : MessageLookupByLibrary.simpleMessage("In Fiat Währung umrechnen"),
- "settings_fee_priority" : MessageLookupByLibrary.simpleMessage("Gebührenpriorität"),
- "settings_nodes" : MessageLookupByLibrary.simpleMessage("Knoten"),
- "settings_none" : MessageLookupByLibrary.simpleMessage("Keiner"),
- "settings_personal" : MessageLookupByLibrary.simpleMessage("Persönlich"),
- "settings_save_recipient_address" : MessageLookupByLibrary.simpleMessage("Empfängeradresse speichern"),
- "settings_support" : MessageLookupByLibrary.simpleMessage("Unterstützung"),
- "settings_terms_and_conditions" : MessageLookupByLibrary.simpleMessage("Geschäftsbedingungen"),
- "settings_title" : MessageLookupByLibrary.simpleMessage("Einstellungen"),
- "settings_transactions" : MessageLookupByLibrary.simpleMessage("Transaktionen"),
- "settings_wallets" : MessageLookupByLibrary.simpleMessage("Wallets"),
- "setup_pin" : MessageLookupByLibrary.simpleMessage("PIN einrichten"),
- "setup_successful" : MessageLookupByLibrary.simpleMessage("Ihre PIN wurde erfolgreich eingerichtet!"),
- "share_address" : MessageLookupByLibrary.simpleMessage("Adresse teilen "),
- "show_keys" : MessageLookupByLibrary.simpleMessage("Schlüssel anzeigen"),
- "show_seed" : MessageLookupByLibrary.simpleMessage("Seed zeigen"),
- "spend_key_private" : MessageLookupByLibrary.simpleMessage("Ausgabe-Schlüssel (geheim)"),
- "spend_key_public" : MessageLookupByLibrary.simpleMessage("Ausgabe-Schlüssel (öffentlich)"),
- "stake_more" : MessageLookupByLibrary.simpleMessage("Mehr staken"),
- "stake_oxen" : MessageLookupByLibrary.simpleMessage("Oxen staken"),
- "start_staking" : MessageLookupByLibrary.simpleMessage("Starte zu staken"),
- "status" : MessageLookupByLibrary.simpleMessage("Status: "),
- "subaddress_title" : MessageLookupByLibrary.simpleMessage("Unteradressenliste"),
- "subaddresses" : MessageLookupByLibrary.simpleMessage("Unteradressen"),
- "sync_status_connected" : MessageLookupByLibrary.simpleMessage("IN VERBINDUNG GEBRACHT"),
- "sync_status_connecting" : MessageLookupByLibrary.simpleMessage("ANSCHLUSS"),
- "sync_status_failed_connect" : MessageLookupByLibrary.simpleMessage("Verbindung zum Knoten fehlgeschlagen"),
- "sync_status_not_connected" : MessageLookupByLibrary.simpleMessage("NICHT VERBUNDEN"),
- "sync_status_starting_sync" : MessageLookupByLibrary.simpleMessage("STARTEN DER SYNCHRONISIERUNG"),
- "sync_status_synchronized" : MessageLookupByLibrary.simpleMessage("SYNCHRONISIERT"),
- "sync_status_synchronizing" : MessageLookupByLibrary.simpleMessage("SYNCHRONISIERUNG"),
- "title_confirm_unlock_stake" : MessageLookupByLibrary.simpleMessage("Stake entsperren"),
- "title_new_stake" : MessageLookupByLibrary.simpleMessage("Neuer Stake"),
- "title_stakes" : MessageLookupByLibrary.simpleMessage("Stakes"),
- "today" : MessageLookupByLibrary.simpleMessage("Heute"),
- "transaction_details_amount" : MessageLookupByLibrary.simpleMessage("Betrag"),
- "transaction_details_copied" : m12,
- "transaction_details_date" : MessageLookupByLibrary.simpleMessage("Datum"),
- "transaction_details_height" : MessageLookupByLibrary.simpleMessage("Höhe"),
- "transaction_details_recipient_address" : MessageLookupByLibrary.simpleMessage("Empfängeradresse"),
- "transaction_details_title" : MessageLookupByLibrary.simpleMessage("Transaktionsdetails"),
- "transaction_details_transaction_id" : MessageLookupByLibrary.simpleMessage("Transaktions-ID"),
- "transaction_priority_blink" : MessageLookupByLibrary.simpleMessage("Blink"),
- "transaction_priority_slow" : MessageLookupByLibrary.simpleMessage("Langsam"),
- "transaction_sent" : MessageLookupByLibrary.simpleMessage("Transaktion gesendet!"),
- "transactions" : MessageLookupByLibrary.simpleMessage("Transaktionen"),
- "transactions_by_date" : MessageLookupByLibrary.simpleMessage("Transaktionen nach Datum"),
- "unable_unlock_stake" : MessageLookupByLibrary.simpleMessage("Stake Entsperrung nicht möglich"),
- "unlock_stake_requested" : MessageLookupByLibrary.simpleMessage("Stake Entsperrung angefragt"),
- "use" : MessageLookupByLibrary.simpleMessage("Wechseln zu "),
- "version" : m13,
- "view_key_private" : MessageLookupByLibrary.simpleMessage("Anzeige-Schlüssel (geheim)"),
- "view_key_public" : MessageLookupByLibrary.simpleMessage("Anzeige-Schlüssel (öffentlich)"),
- "wallet_keys" : MessageLookupByLibrary.simpleMessage("Wallet Schlüssel"),
- "wallet_list_create_new_wallet" : MessageLookupByLibrary.simpleMessage("Neues Wallet erstellen"),
- "wallet_list_failed_to_load" : m14,
- "wallet_list_failed_to_remove" : m15,
- "wallet_list_load_wallet" : MessageLookupByLibrary.simpleMessage("Wallet laden"),
- "wallet_list_loading_wallet" : m16,
- "wallet_list_removing_wallet" : m17,
- "wallet_list_restore_wallet" : MessageLookupByLibrary.simpleMessage("Wallet wiederherstellen"),
- "wallet_list_title" : MessageLookupByLibrary.simpleMessage("Oxen Wallet"),
- "wallet_menu" : MessageLookupByLibrary.simpleMessage("Wallet-Menü"),
- "wallet_name" : MessageLookupByLibrary.simpleMessage("Walletname"),
- "wallet_restoration_store_incorrect_seed_length" : MessageLookupByLibrary.simpleMessage("Falsche Seed-länge"),
- "wallets" : MessageLookupByLibrary.simpleMessage("Wallets"),
- "welcome" : MessageLookupByLibrary.simpleMessage("Willkommen\nim OXEN WALLET"),
- "widgets_address" : MessageLookupByLibrary.simpleMessage("Adresse"),
- "widgets_or" : MessageLookupByLibrary.simpleMessage("oder"),
- "widgets_restore_from_blockheight" : MessageLookupByLibrary.simpleMessage("Aus Blockhöhe wiederherstellen"),
- "widgets_restore_from_date" : MessageLookupByLibrary.simpleMessage("Vom Datum wiederherstellen"),
- "widgets_seed" : MessageLookupByLibrary.simpleMessage("Seed"),
- "yes_im_sure" : MessageLookupByLibrary.simpleMessage("Ja, Ich bin mir sicher!"),
- "yesterday" : MessageLookupByLibrary.simpleMessage("Gestern"),
- "your_contributions" : MessageLookupByLibrary.simpleMessage("Deine Anteile")
- };
-}
diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart
deleted file mode 100644
index cf290252..00000000
--- a/lib/generated/intl/messages_en.dart
+++ /dev/null
@@ -1,305 +0,0 @@
-// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
-// This is a library that provides messages for a en locale. All the
-// messages from the main program should be duplicated here with the same
-// function name.
-
-// Ignore issues from commonly used lints in this file.
-// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
-// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
-// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
-// ignore_for_file:unused_import, file_names
-
-import 'package:intl/intl.dart';
-import 'package:intl/message_lookup_by_library.dart';
-
-final messages = new MessageLookup();
-
-typedef String MessageIfAbsent(String messageStr, List args);
-
-class MessageLookup extends MessageLookupByLibrary {
- String get localeName => 'en';
-
- static m0(status) => "${status} Blocks Remaining";
-
- static m1(serviceNodeKey) => "Do you really want to unlock your stake from ${serviceNodeKey}?";
-
- static m2(node) => "Are you sure to change current node to ${node}?";
-
- static m3(language) => "Change language to ${language}?";
-
- static m4(amount, fee) => "Commit transaction\nAmount: ${amount}\nFee: ${fee}";
-
- static m5(key) => "Copied ${key} to Clipboard";
-
- static m6(item, app_store) => "NEVER input your Oxen wallet ${item} into any software or website other than the OFFICIAL Oxen wallets downloaded directly from the ${app_store}, the Oxen website, or the Oxen GitHub.\nAre you sure you want to access your wallet ${item}?";
-
- static m7(state_error) => "Failed authentication. ${state_error}";
-
- static m8(item) => "NEVER give your Oxen wallet ${item} to ANYONE!";
-
- static m9(recipient_name) => "You will be sending funds to\n${recipient_name}";
-
- static m10(name) => "No route defined for ${name}";
-
- static m11(transactionPriority) => "Currently the fee is set at ${transactionPriority} priority.\nTransaction priority can be adjusted in the settings";
-
- static m12(title) => "${title} copied to Clipboard";
-
- static m13(currentVersion) => "Version ${currentVersion}";
-
- static m14(wallet_name, error) => "Failed to load ${wallet_name} wallet. ${error}";
-
- static m15(wallet_name, error) => "Failed to remove ${wallet_name} wallet. ${error}";
-
- static m16(wallet_name) => "Loading ${wallet_name} wallet";
-
- static m17(wallet_name) => "Removing ${wallet_name} wallet";
-
- final messages = _notInlinedMessages(_notInlinedMessages);
- static _notInlinedMessages(_) => {
- "Blocks_remaining" : m0,
- "account" : MessageLookupByLibrary.simpleMessage("Account"),
- "accounts" : MessageLookupByLibrary.simpleMessage("Accounts"),
- "add" : MessageLookupByLibrary.simpleMessage("Add"),
- "add_new_word" : MessageLookupByLibrary.simpleMessage("Add new word"),
- "address_book" : MessageLookupByLibrary.simpleMessage("Address Book"),
- "address_book_menu" : MessageLookupByLibrary.simpleMessage("Address book"),
- "all" : MessageLookupByLibrary.simpleMessage("ALL"),
- "amount" : MessageLookupByLibrary.simpleMessage("Amount: "),
- "amount_detail_detailed" : MessageLookupByLibrary.simpleMessage("4 - Detailed"),
- "amount_detail_none" : MessageLookupByLibrary.simpleMessage("0 - None"),
- "amount_detail_normal" : MessageLookupByLibrary.simpleMessage("2 - Normal"),
- "amount_detail_ultra" : MessageLookupByLibrary.simpleMessage("9 - Ultra"),
- "auth_store_ban_timeout" : MessageLookupByLibrary.simpleMessage("ban_timeout"),
- "auth_store_banned_for" : MessageLookupByLibrary.simpleMessage("Banned for "),
- "auth_store_banned_minutes" : MessageLookupByLibrary.simpleMessage(" minutes"),
- "auth_store_incorrect_password" : MessageLookupByLibrary.simpleMessage("Wrong PIN"),
- "authenticated" : MessageLookupByLibrary.simpleMessage("Authenticated"),
- "authentication" : MessageLookupByLibrary.simpleMessage("Authentication"),
- "available_balance" : MessageLookupByLibrary.simpleMessage("Available Balance"),
- "biometric_auth_reason" : MessageLookupByLibrary.simpleMessage("Scan your fingerprint to authenticate"),
- "body_confirm_unlock_stake" : m1,
- "cancel" : MessageLookupByLibrary.simpleMessage("Cancel"),
- "change" : MessageLookupByLibrary.simpleMessage("Change"),
- "change_current_node" : m2,
- "change_language" : MessageLookupByLibrary.simpleMessage("Change language"),
- "change_language_to" : m3,
- "changelog" : MessageLookupByLibrary.simpleMessage("Changelog"),
- "clear" : MessageLookupByLibrary.simpleMessage("Clear"),
- "commit_transaction_amount_fee" : m4,
- "confirm" : MessageLookupByLibrary.simpleMessage("Confirm"),
- "confirm_sending" : MessageLookupByLibrary.simpleMessage("Confirm sending"),
- "contact" : MessageLookupByLibrary.simpleMessage("Contact"),
- "contact_name" : MessageLookupByLibrary.simpleMessage("Contact Name"),
- "continue_text" : MessageLookupByLibrary.simpleMessage("Continue"),
- "copied_key_to_clipboard" : m5,
- "copied_to_clipboard" : MessageLookupByLibrary.simpleMessage("Copied to Clipboard"),
- "copy" : MessageLookupByLibrary.simpleMessage("Copy"),
- "create_new" : MessageLookupByLibrary.simpleMessage("Create new"),
- "dangerzone" : MessageLookupByLibrary.simpleMessage("Dangerzone"),
- "dangerzone_warning" : m6,
- "delete" : MessageLookupByLibrary.simpleMessage("Delete"),
- "digit_pin" : MessageLookupByLibrary.simpleMessage("-digit PIN"),
- "edit" : MessageLookupByLibrary.simpleMessage("Edit"),
- "enter_your_pin" : MessageLookupByLibrary.simpleMessage("Enter your PIN"),
- "enter_your_pin_again" : MessageLookupByLibrary.simpleMessage("Enter your pin again"),
- "error" : MessageLookupByLibrary.simpleMessage("Error"),
- "error_text_account_name" : MessageLookupByLibrary.simpleMessage("Account name can only contain letters, numbers\nand must be between 1 and 15 characters long"),
- "error_text_address" : MessageLookupByLibrary.simpleMessage("Wallet address must correspond to the type\nof cryptocurrency"),
- "error_text_amount" : MessageLookupByLibrary.simpleMessage("Amount can only contain numbers"),
- "error_text_contact_name" : MessageLookupByLibrary.simpleMessage("Contact name can\'t contain ` , \' \" symbols\nand must be between 1 and 32 characters long"),
- "error_text_crypto_currency" : MessageLookupByLibrary.simpleMessage("The number of fraction digits\nmust be less or equal to 12"),
- "error_text_fiat" : MessageLookupByLibrary.simpleMessage("Value of amount can\'t exceed available balance.\nThe number of fraction digits must be less or equal to 2"),
- "error_text_keys" : MessageLookupByLibrary.simpleMessage("Wallet keys can only contain 64 chars in hex"),
- "error_text_node_address" : MessageLookupByLibrary.simpleMessage("Please enter a iPv4 address"),
- "error_text_node_port" : MessageLookupByLibrary.simpleMessage("Node port can only contain numbers between 0 and 65535"),
- "error_text_oxen" : MessageLookupByLibrary.simpleMessage("OXEN value can\'t exceed available balance.\nThe number of fraction digits must be less or equal to 12"),
- "error_text_payment_id" : MessageLookupByLibrary.simpleMessage("Payment ID can only contain from 16 to 64 chars in hex"),
- "error_text_service_node" : MessageLookupByLibrary.simpleMessage("A Service Node key can only contain 64 chars in hex"),
- "error_text_subaddress_name" : MessageLookupByLibrary.simpleMessage("Subaddress name can\'t contain ` , \' \" symbols\nand must be between 1 and 20 characters long"),
- "error_text_wallet_name" : MessageLookupByLibrary.simpleMessage("Wallet name can only contain letters, numbers\nand must be between 1 and 15 characters long"),
- "failed_authentication" : m7,
- "faq" : MessageLookupByLibrary.simpleMessage("FAQ"),
- "fetching" : MessageLookupByLibrary.simpleMessage("Fetching"),
- "filters" : MessageLookupByLibrary.simpleMessage("Filters"),
- "first_wallet_text" : MessageLookupByLibrary.simpleMessage("Awesome wallet\nfor Oxen"),
- "full_balance" : MessageLookupByLibrary.simpleMessage("Full Balance"),
- "hidden_balance" : MessageLookupByLibrary.simpleMessage("Hidden Balance"),
- "id" : MessageLookupByLibrary.simpleMessage("ID: "),
- "incoming" : MessageLookupByLibrary.simpleMessage("Incoming"),
- "incorrect_seed" : MessageLookupByLibrary.simpleMessage("The text entered is not valid."),
- "keys_title" : MessageLookupByLibrary.simpleMessage("Keys"),
- "loading_your_wallet" : MessageLookupByLibrary.simpleMessage("Loading your wallet"),
- "login" : MessageLookupByLibrary.simpleMessage("Login"),
- "never_give_your" : m8,
- "new_subaddress_create" : MessageLookupByLibrary.simpleMessage("Create"),
- "new_subaddress_label_name" : MessageLookupByLibrary.simpleMessage("Label name"),
- "new_subaddress_title" : MessageLookupByLibrary.simpleMessage("New subaddress"),
- "new_wallet" : MessageLookupByLibrary.simpleMessage("New Wallet"),
- "node_address" : MessageLookupByLibrary.simpleMessage("Node Address"),
- "node_new" : MessageLookupByLibrary.simpleMessage("New Node"),
- "node_port" : MessageLookupByLibrary.simpleMessage("Node port"),
- "node_reset_settings_title" : MessageLookupByLibrary.simpleMessage("Reset settings"),
- "nodes" : MessageLookupByLibrary.simpleMessage("Nodes"),
- "nodes_list_reset_to_default_message" : MessageLookupByLibrary.simpleMessage("Are you sure that you want to reset settings to default?"),
- "nothing_staked" : MessageLookupByLibrary.simpleMessage("Nothing staked yet"),
- "ok" : MessageLookupByLibrary.simpleMessage("OK"),
- "openalias_alert_content" : m9,
- "openalias_alert_title" : MessageLookupByLibrary.simpleMessage("OXEN Recipient Detected"),
- "outgoing" : MessageLookupByLibrary.simpleMessage("Outgoing"),
- "oxen_available_balance" : MessageLookupByLibrary.simpleMessage("OXEN Available Balance"),
- "oxen_full_balance" : MessageLookupByLibrary.simpleMessage("OXEN Full Balance"),
- "oxen_hidden" : MessageLookupByLibrary.simpleMessage("OXEN Hidden"),
- "password" : MessageLookupByLibrary.simpleMessage("Password"),
- "paste" : MessageLookupByLibrary.simpleMessage("Paste"),
- "pending" : MessageLookupByLibrary.simpleMessage(" (pending)"),
- "pin_is_incorrect" : MessageLookupByLibrary.simpleMessage("PIN is incorrect"),
- "please_make_selection" : MessageLookupByLibrary.simpleMessage("Please make selection below to\ncreate or recover your wallet."),
- "please_select" : MessageLookupByLibrary.simpleMessage("Please select:"),
- "please_try_to_connect_to_another_node" : MessageLookupByLibrary.simpleMessage("Please try to connect to another node"),
- "receive" : MessageLookupByLibrary.simpleMessage("Receive"),
- "receive_amount" : MessageLookupByLibrary.simpleMessage("Amount"),
- "received" : MessageLookupByLibrary.simpleMessage("Received"),
- "reconnect" : MessageLookupByLibrary.simpleMessage("Reconnect"),
- "reconnect_alert_text" : MessageLookupByLibrary.simpleMessage("Are you sure to reconnect?"),
- "reconnection" : MessageLookupByLibrary.simpleMessage("Reconnection"),
- "reload_fiat" : MessageLookupByLibrary.simpleMessage("Reload Fiat data"),
- "remove" : MessageLookupByLibrary.simpleMessage("Remove"),
- "remove_node" : MessageLookupByLibrary.simpleMessage("Remove node"),
- "remove_node_message" : MessageLookupByLibrary.simpleMessage("Are you sure that you want to remove selected node?"),
- "rescan" : MessageLookupByLibrary.simpleMessage("Rescan"),
- "reset" : MessageLookupByLibrary.simpleMessage("Reset"),
- "restore_address" : MessageLookupByLibrary.simpleMessage("Address"),
- "restore_description_from_backup" : MessageLookupByLibrary.simpleMessage("You can restore the whole Oxen Wallet app from your back-up file"),
- "restore_description_from_keys" : MessageLookupByLibrary.simpleMessage("Restore your wallet from generated keystrokes saved from your private keys"),
- "restore_description_from_seed" : MessageLookupByLibrary.simpleMessage("Restore your wallet from either the 25 word or 13 word combination code"),
- "restore_description_from_seed_keys" : MessageLookupByLibrary.simpleMessage("Get back your wallet from seed/keys that you\'ve saved to secure place"),
- "restore_from_seed_placeholder" : MessageLookupByLibrary.simpleMessage("Please enter or paste your seed here"),
- "restore_next" : MessageLookupByLibrary.simpleMessage("Next"),
- "restore_recover" : MessageLookupByLibrary.simpleMessage("Restore"),
- "restore_restore_wallet" : MessageLookupByLibrary.simpleMessage("Restore Wallet"),
- "restore_seed_keys_restore" : MessageLookupByLibrary.simpleMessage("Seed/Keys Restore"),
- "restore_spend_key_private" : MessageLookupByLibrary.simpleMessage("Spend key (private)"),
- "restore_title_from_backup" : MessageLookupByLibrary.simpleMessage("Restore from a back-up file"),
- "restore_title_from_keys" : MessageLookupByLibrary.simpleMessage("Restore from keys"),
- "restore_title_from_seed" : MessageLookupByLibrary.simpleMessage("Restore from seed"),
- "restore_title_from_seed_keys" : MessageLookupByLibrary.simpleMessage("Restore from seed/keys"),
- "restore_view_key_private" : MessageLookupByLibrary.simpleMessage("View key (private)"),
- "restore_wallet" : MessageLookupByLibrary.simpleMessage("Restore wallet"),
- "restore_wallet_name" : MessageLookupByLibrary.simpleMessage("Wallet name"),
- "restore_wallet_restore_description" : MessageLookupByLibrary.simpleMessage("Wallet restore description"),
- "router_no_route" : m10,
- "save" : MessageLookupByLibrary.simpleMessage("Save"),
- "seed_language_chinese" : MessageLookupByLibrary.simpleMessage("Chinese"),
- "seed_language_choose" : MessageLookupByLibrary.simpleMessage("Please choose seed language"),
- "seed_language_dutch" : MessageLookupByLibrary.simpleMessage("Dutch"),
- "seed_language_english" : MessageLookupByLibrary.simpleMessage("English"),
- "seed_language_french" : MessageLookupByLibrary.simpleMessage("French"),
- "seed_language_german" : MessageLookupByLibrary.simpleMessage("German"),
- "seed_language_italian" : MessageLookupByLibrary.simpleMessage("Italian"),
- "seed_language_japanese" : MessageLookupByLibrary.simpleMessage("Japanese"),
- "seed_language_next" : MessageLookupByLibrary.simpleMessage("Next"),
- "seed_language_portuguese" : MessageLookupByLibrary.simpleMessage("Portuguese"),
- "seed_language_russian" : MessageLookupByLibrary.simpleMessage("Russian"),
- "seed_language_spanish" : MessageLookupByLibrary.simpleMessage("Spanish"),
- "seed_share" : MessageLookupByLibrary.simpleMessage("Share seed"),
- "seed_title" : MessageLookupByLibrary.simpleMessage("Seed"),
- "send" : MessageLookupByLibrary.simpleMessage("Send"),
- "send_creating_transaction" : MessageLookupByLibrary.simpleMessage("Creating transaction"),
- "send_error_currency" : MessageLookupByLibrary.simpleMessage("Currency can only contain numbers"),
- "send_estimated_fee" : MessageLookupByLibrary.simpleMessage("Estimated fee:"),
- "send_oxen" : MessageLookupByLibrary.simpleMessage("Send OXEN"),
- "send_oxen_address" : MessageLookupByLibrary.simpleMessage("Oxen address"),
- "send_priority" : m11,
- "send_title" : MessageLookupByLibrary.simpleMessage("Send Oxen"),
- "send_your_wallet" : MessageLookupByLibrary.simpleMessage("Your wallet"),
- "sending" : MessageLookupByLibrary.simpleMessage("Sending"),
- "sent" : MessageLookupByLibrary.simpleMessage("Sent"),
- "service_node_key" : MessageLookupByLibrary.simpleMessage("Service Node Key"),
- "settings_all" : MessageLookupByLibrary.simpleMessage("ALL"),
- "settings_allow_biometric_authentication" : MessageLookupByLibrary.simpleMessage("Allow biometric authentication"),
- "settings_balance_detail" : MessageLookupByLibrary.simpleMessage("Decimals"),
- "settings_change_language" : MessageLookupByLibrary.simpleMessage("Change language"),
- "settings_change_pin" : MessageLookupByLibrary.simpleMessage("Change PIN"),
- "settings_currency" : MessageLookupByLibrary.simpleMessage("Currency"),
- "settings_current_node" : MessageLookupByLibrary.simpleMessage("Current node"),
- "settings_dark_mode" : MessageLookupByLibrary.simpleMessage("Dark mode"),
- "settings_display_balance_as" : MessageLookupByLibrary.simpleMessage("Display balance as"),
- "settings_display_on_dashboard_list" : MessageLookupByLibrary.simpleMessage("Display on dashboard list"),
- "settings_enable_fiat_currency" : MessageLookupByLibrary.simpleMessage("Enable Fiat Currency conversion"),
- "settings_fee_priority" : MessageLookupByLibrary.simpleMessage("Fee priority"),
- "settings_nodes" : MessageLookupByLibrary.simpleMessage("Nodes"),
- "settings_none" : MessageLookupByLibrary.simpleMessage("None"),
- "settings_personal" : MessageLookupByLibrary.simpleMessage("Personal"),
- "settings_save_recipient_address" : MessageLookupByLibrary.simpleMessage("Save recipient address"),
- "settings_support" : MessageLookupByLibrary.simpleMessage("Support"),
- "settings_terms_and_conditions" : MessageLookupByLibrary.simpleMessage("Terms and conditions"),
- "settings_title" : MessageLookupByLibrary.simpleMessage("Settings"),
- "settings_transactions" : MessageLookupByLibrary.simpleMessage("Transactions"),
- "settings_wallets" : MessageLookupByLibrary.simpleMessage("Wallets"),
- "setup_pin" : MessageLookupByLibrary.simpleMessage("Setup PIN"),
- "setup_successful" : MessageLookupByLibrary.simpleMessage("Your PIN has been set up successfully!"),
- "share_address" : MessageLookupByLibrary.simpleMessage("Share address"),
- "show_keys" : MessageLookupByLibrary.simpleMessage("Show keys"),
- "show_seed" : MessageLookupByLibrary.simpleMessage("Show seed"),
- "spend_key_private" : MessageLookupByLibrary.simpleMessage("Spend key (private)"),
- "spend_key_public" : MessageLookupByLibrary.simpleMessage("Spend key (public)"),
- "stake_more" : MessageLookupByLibrary.simpleMessage("Stake more"),
- "stake_oxen" : MessageLookupByLibrary.simpleMessage("Stake Oxen"),
- "start_staking" : MessageLookupByLibrary.simpleMessage("Start staking"),
- "status" : MessageLookupByLibrary.simpleMessage("Status: "),
- "subaddress_title" : MessageLookupByLibrary.simpleMessage("Subaddress list"),
- "subaddresses" : MessageLookupByLibrary.simpleMessage("Subaddresses"),
- "sync_status_connected" : MessageLookupByLibrary.simpleMessage("CONNECTED"),
- "sync_status_connecting" : MessageLookupByLibrary.simpleMessage("CONNECTING"),
- "sync_status_failed_connect" : MessageLookupByLibrary.simpleMessage("FAILED CONNECT TO THE NODE"),
- "sync_status_not_connected" : MessageLookupByLibrary.simpleMessage("NOT CONNECTED"),
- "sync_status_starting_sync" : MessageLookupByLibrary.simpleMessage("STARTING SYNC"),
- "sync_status_synchronized" : MessageLookupByLibrary.simpleMessage("SYNCHRONIZED"),
- "sync_status_synchronizing" : MessageLookupByLibrary.simpleMessage("SYNCHRONIZING"),
- "title_confirm_unlock_stake" : MessageLookupByLibrary.simpleMessage("Unlock Stake"),
- "title_new_stake" : MessageLookupByLibrary.simpleMessage("New Stake"),
- "title_stakes" : MessageLookupByLibrary.simpleMessage("Stakes"),
- "today" : MessageLookupByLibrary.simpleMessage("Today"),
- "transaction_details_amount" : MessageLookupByLibrary.simpleMessage("Amount"),
- "transaction_details_copied" : m12,
- "transaction_details_date" : MessageLookupByLibrary.simpleMessage("Date"),
- "transaction_details_height" : MessageLookupByLibrary.simpleMessage("Height"),
- "transaction_details_recipient_address" : MessageLookupByLibrary.simpleMessage("Recipient address"),
- "transaction_details_title" : MessageLookupByLibrary.simpleMessage("Transaction Details"),
- "transaction_details_transaction_id" : MessageLookupByLibrary.simpleMessage("Transaction ID"),
- "transaction_priority_blink" : MessageLookupByLibrary.simpleMessage("Blink"),
- "transaction_priority_slow" : MessageLookupByLibrary.simpleMessage("Slow"),
- "transaction_sent" : MessageLookupByLibrary.simpleMessage("Transaction sent!"),
- "transactions" : MessageLookupByLibrary.simpleMessage("Transactions"),
- "transactions_by_date" : MessageLookupByLibrary.simpleMessage("Transactions by date"),
- "unable_unlock_stake" : MessageLookupByLibrary.simpleMessage("Unable to unlock stake"),
- "unlock_stake_requested" : MessageLookupByLibrary.simpleMessage("Stake unlock requested"),
- "use" : MessageLookupByLibrary.simpleMessage("Switch to "),
- "version" : m13,
- "view_key_private" : MessageLookupByLibrary.simpleMessage("View key (private)"),
- "view_key_public" : MessageLookupByLibrary.simpleMessage("View key (public)"),
- "wallet_keys" : MessageLookupByLibrary.simpleMessage("Wallet keys"),
- "wallet_list_create_new_wallet" : MessageLookupByLibrary.simpleMessage("Create New Wallet"),
- "wallet_list_failed_to_load" : m14,
- "wallet_list_failed_to_remove" : m15,
- "wallet_list_load_wallet" : MessageLookupByLibrary.simpleMessage("Load wallet"),
- "wallet_list_loading_wallet" : m16,
- "wallet_list_removing_wallet" : m17,
- "wallet_list_restore_wallet" : MessageLookupByLibrary.simpleMessage("Restore Wallet"),
- "wallet_list_title" : MessageLookupByLibrary.simpleMessage("Oxen Wallet"),
- "wallet_menu" : MessageLookupByLibrary.simpleMessage("Menu"),
- "wallet_name" : MessageLookupByLibrary.simpleMessage("Wallet name"),
- "wallet_restoration_store_incorrect_seed_length" : MessageLookupByLibrary.simpleMessage("Incorrect seed length"),
- "wallets" : MessageLookupByLibrary.simpleMessage("Wallets"),
- "welcome" : MessageLookupByLibrary.simpleMessage("WELCOME\nTO OXEN WALLET"),
- "widgets_address" : MessageLookupByLibrary.simpleMessage("Address"),
- "widgets_or" : MessageLookupByLibrary.simpleMessage("or"),
- "widgets_restore_from_blockheight" : MessageLookupByLibrary.simpleMessage("Restore from blockheight"),
- "widgets_restore_from_date" : MessageLookupByLibrary.simpleMessage("Restore from date"),
- "widgets_seed" : MessageLookupByLibrary.simpleMessage("Seed"),
- "yes_im_sure" : MessageLookupByLibrary.simpleMessage("Yes, I\'m sure!"),
- "yesterday" : MessageLookupByLibrary.simpleMessage("Yesterday"),
- "your_contributions" : MessageLookupByLibrary.simpleMessage("Your Contributions")
- };
-}
diff --git a/lib/generated/intl/messages_fr.dart b/lib/generated/intl/messages_fr.dart
deleted file mode 100644
index c16f9e66..00000000
--- a/lib/generated/intl/messages_fr.dart
+++ /dev/null
@@ -1,305 +0,0 @@
-// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
-// This is a library that provides messages for a fr locale. All the
-// messages from the main program should be duplicated here with the same
-// function name.
-
-// Ignore issues from commonly used lints in this file.
-// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
-// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
-// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
-// ignore_for_file:unused_import, file_names
-
-import 'package:intl/intl.dart';
-import 'package:intl/message_lookup_by_library.dart';
-
-final messages = new MessageLookup();
-
-typedef String MessageIfAbsent(String messageStr, List args);
-
-class MessageLookup extends MessageLookupByLibrary {
- String get localeName => 'fr';
-
- static m0(status) => "${status} blocs restants";
-
- static m1(serviceNodeKey) => "Voulez-vous vraiment débloquer votre mise de${serviceNodeKey}?";
-
- static m2(node) => "Voulez-vous vraiment changer le Node actuel vers ${node}?";
-
- static m3(language) => "Changez la langue en ${language}?";
-
- static m4(amount, fee) => "Valider la transaction\nMontant: ${amount}\nFee: ${fee}";
-
- static m5(key) => "Clé ${key} dans le presse-papiers";
-
- static m6(item, app_store) => "Ne JAMAIS saisir vos identifiants de votre Wallet Oxen ${item} dans tout logiciel ou site Web autre que les portefeuilles OFFICIELS Oxen téléchargés directement à partir du ${app_store}, le site internet Oxen, ou Oxen sur GitHub.\nÊtes-vous sûr de vouloir accéder à votre portefeuille ${item}?";
-
- static m7(state_error) => "Échec de l\'authentification. ${state_error}";
-
- static m8(item) => "Ne donnez JAMAIS votre Wallet Oxen à qui que ce soit! ${item} à qui que ce soit!";
-
- static m9(recipient_name) => "Vous envoyez de l\'argent à\n${recipient_name}";
-
- static m10(name) => "Aucun itinéraire défini pour ${name}";
-
- static m11(transactionPriority) => "Actuellement, la priorité est définie sur ${transactionPriority}.\nLa priorité de transaction peut être ajustée dans les paramètres";
-
- static m12(title) => "${title} copié dans le presse-papiers";
-
- static m13(currentVersion) => "Version ${currentVersion}";
-
- static m14(wallet_name, error) => "Échec du chargement du portefeuille ${wallet_name}. ${error}";
-
- static m15(wallet_name, error) => "Erreur lors de la suppression ${wallet_name} Wallet. ${error}";
-
- static m16(wallet_name) => "chargement du ${wallet_name} wallet";
-
- static m17(wallet_name) => "Wallet ${wallet_name}";
-
- final messages = _notInlinedMessages(_notInlinedMessages);
- static _notInlinedMessages(_) => {
- "Blocks_remaining" : m0,
- "account" : MessageLookupByLibrary.simpleMessage("Compte"),
- "accounts" : MessageLookupByLibrary.simpleMessage("Comptes"),
- "add" : MessageLookupByLibrary.simpleMessage("Ajouter"),
- "add_new_word" : MessageLookupByLibrary.simpleMessage("Ajouter un nouveau mot"),
- "address_book" : MessageLookupByLibrary.simpleMessage("Carnet d\'adresses"),
- "address_book_menu" : MessageLookupByLibrary.simpleMessage("Carnet d\'adresses"),
- "all" : MessageLookupByLibrary.simpleMessage("TOUT"),
- "amount" : MessageLookupByLibrary.simpleMessage("Montant: "),
- "amount_detail_detailed" : MessageLookupByLibrary.simpleMessage("4 - Détaillé"),
- "amount_detail_none" : MessageLookupByLibrary.simpleMessage("0 - Aucun"),
- "amount_detail_normal" : MessageLookupByLibrary.simpleMessage("2 - Normal"),
- "amount_detail_ultra" : MessageLookupByLibrary.simpleMessage("9 - Ultra"),
- "auth_store_ban_timeout" : MessageLookupByLibrary.simpleMessage("Interdire le délai d\'expiration"),
- "auth_store_banned_for" : MessageLookupByLibrary.simpleMessage("Interdit pour "),
- "auth_store_banned_minutes" : MessageLookupByLibrary.simpleMessage(" Protocole"),
- "auth_store_incorrect_password" : MessageLookupByLibrary.simpleMessage("mauvais code PIN"),
- "authenticated" : MessageLookupByLibrary.simpleMessage("Authentifié"),
- "authentication" : MessageLookupByLibrary.simpleMessage("Authentification"),
- "available_balance" : MessageLookupByLibrary.simpleMessage("Solde disponible"),
- "biometric_auth_reason" : MessageLookupByLibrary.simpleMessage("Scannez votre empreinte digitale pour l\'authentification"),
- "body_confirm_unlock_stake" : m1,
- "cancel" : MessageLookupByLibrary.simpleMessage("Annuler"),
- "change" : MessageLookupByLibrary.simpleMessage("Changement"),
- "change_current_node" : m2,
- "change_language" : MessageLookupByLibrary.simpleMessage("changer la langue"),
- "change_language_to" : m3,
- "changelog" : MessageLookupByLibrary.simpleMessage("Journal des modifications"),
- "clear" : MessageLookupByLibrary.simpleMessage("clair"),
- "commit_transaction_amount_fee" : m4,
- "confirm" : MessageLookupByLibrary.simpleMessage("confirmer"),
- "confirm_sending" : MessageLookupByLibrary.simpleMessage("confirmer l\'envoi"),
- "contact" : MessageLookupByLibrary.simpleMessage("Contact"),
- "contact_name" : MessageLookupByLibrary.simpleMessage("Nom du contact"),
- "continue_text" : MessageLookupByLibrary.simpleMessage("Continuez"),
- "copied_key_to_clipboard" : m5,
- "copied_to_clipboard" : MessageLookupByLibrary.simpleMessage("Copié dans le presse-papiers"),
- "copy" : MessageLookupByLibrary.simpleMessage("copier"),
- "create_new" : MessageLookupByLibrary.simpleMessage("Créer un nouveau portefeuille"),
- "dangerzone" : MessageLookupByLibrary.simpleMessage("zone de danger"),
- "dangerzone_warning" : m6,
- "delete" : MessageLookupByLibrary.simpleMessage("effacer"),
- "digit_pin" : MessageLookupByLibrary.simpleMessage("-chiffre PIN"),
- "edit" : MessageLookupByLibrary.simpleMessage("Éditer"),
- "enter_your_pin" : MessageLookupByLibrary.simpleMessage("entrez le code PIN"),
- "enter_your_pin_again" : MessageLookupByLibrary.simpleMessage("Saisissez à nouveau votre code PIN"),
- "error" : MessageLookupByLibrary.simpleMessage("erreur"),
- "error_text_account_name" : MessageLookupByLibrary.simpleMessage("Le nom du compte ne peut contenir que des lettres et des chiffres\net doit comporter entre 1 et 15 caractères"),
- "error_text_address" : MessageLookupByLibrary.simpleMessage("L\'adresse du portefeuille doit correspondre au type de crypto-monnaie"),
- "error_text_amount" : MessageLookupByLibrary.simpleMessage("Le montant ne peut contenir que des nombres"),
- "error_text_contact_name" : MessageLookupByLibrary.simpleMessage("Dans le nom du contact, les symboles ` , \' \" ne doivent pas être inclus\net doit comporter entre 1 et 32 caractères"),
- "error_text_crypto_currency" : MessageLookupByLibrary.simpleMessage("Le nombre de décimales\nm doit être inférieur ou égal à 12."),
- "error_text_fiat" : MessageLookupByLibrary.simpleMessage("La valeur du montant ne peut pas dépasser le solde disponible du compte.\nLe nombre de décimales doit être inférieur ou égal à 2"),
- "error_text_keys" : MessageLookupByLibrary.simpleMessage("Les clés de portefeuille ne peuvent contenir que 64 caractères hexadécimaux"),
- "error_text_node_address" : MessageLookupByLibrary.simpleMessage("Veuillez saisir une adresse iPv4"),
- "error_text_node_port" : MessageLookupByLibrary.simpleMessage("Le port du Node ne peut contenir que des nombres compris entre 0 et 65535"),
- "error_text_oxen" : MessageLookupByLibrary.simpleMessage("La valeur OXEN ne peut pas dépasser le solde disponible.\nLe nombre de décimales doit être inférieur ou égal à 12"),
- "error_text_payment_id" : MessageLookupByLibrary.simpleMessage("L\'ID de paiement ne peut contenir que 16 à 64 caractères hexadécimaux"),
- "error_text_service_node" : MessageLookupByLibrary.simpleMessage("Une clé de nœud de service ne peut contenir que 64 caractères maximum"),
- "error_text_subaddress_name" : MessageLookupByLibrary.simpleMessage("Au nom de la sous-adresse, les symboles ` , \' \" ne pas être inclus\net doit comporter entre 1 et 20 caractères"),
- "error_text_wallet_name" : MessageLookupByLibrary.simpleMessage("Le nom du portefeuille ne peut contenir que des lettres et des chiffres\net doit comporter entre 1 et 15 caractères"),
- "failed_authentication" : m7,
- "faq" : MessageLookupByLibrary.simpleMessage("FAQ"),
- "fetching" : MessageLookupByLibrary.simpleMessage("Récupération"),
- "filters" : MessageLookupByLibrary.simpleMessage("filtres"),
- "first_wallet_text" : MessageLookupByLibrary.simpleMessage("Super Wallet\npour Oxen"),
- "full_balance" : MessageLookupByLibrary.simpleMessage("Solde complet"),
- "hidden_balance" : MessageLookupByLibrary.simpleMessage("solde caché"),
- "id" : MessageLookupByLibrary.simpleMessage("ID: "),
- "incoming" : MessageLookupByLibrary.simpleMessage("entrant"),
- "incorrect_seed" : MessageLookupByLibrary.simpleMessage("Le texte saisi n\'est pas valide."),
- "keys_title" : MessageLookupByLibrary.simpleMessage("Clés"),
- "loading_your_wallet" : MessageLookupByLibrary.simpleMessage("chargement du portefeuille"),
- "login" : MessageLookupByLibrary.simpleMessage("Login"),
- "never_give_your" : m8,
- "new_subaddress_create" : MessageLookupByLibrary.simpleMessage("Créer"),
- "new_subaddress_label_name" : MessageLookupByLibrary.simpleMessage("Nom"),
- "new_subaddress_title" : MessageLookupByLibrary.simpleMessage("Nouvelle sous-adresse"),
- "new_wallet" : MessageLookupByLibrary.simpleMessage("Nouveau portefeuille"),
- "node_address" : MessageLookupByLibrary.simpleMessage("L\'adresse du Node"),
- "node_new" : MessageLookupByLibrary.simpleMessage("Nouveau Node"),
- "node_port" : MessageLookupByLibrary.simpleMessage("Port du Node"),
- "node_reset_settings_title" : MessageLookupByLibrary.simpleMessage("Réinitialiser les paramètres"),
- "nodes" : MessageLookupByLibrary.simpleMessage("Nodes"),
- "nodes_list_reset_to_default_message" : MessageLookupByLibrary.simpleMessage("Êtes-vous sûr de vouloir réinitialiser les paramètres par défaut?"),
- "nothing_staked" : MessageLookupByLibrary.simpleMessage("Aucune contribution pour le moment"),
- "ok" : MessageLookupByLibrary.simpleMessage("OK"),
- "openalias_alert_content" : m9,
- "openalias_alert_title" : MessageLookupByLibrary.simpleMessage("OXEN-destinataire reconnu"),
- "outgoing" : MessageLookupByLibrary.simpleMessage("sortant"),
- "oxen_available_balance" : MessageLookupByLibrary.simpleMessage("OXEN solde disponible"),
- "oxen_full_balance" : MessageLookupByLibrary.simpleMessage("OXEN solde complet"),
- "oxen_hidden" : MessageLookupByLibrary.simpleMessage("OXEN caché"),
- "password" : MessageLookupByLibrary.simpleMessage("Mot de Passe"),
- "paste" : MessageLookupByLibrary.simpleMessage("Coller"),
- "pending" : MessageLookupByLibrary.simpleMessage(" (en attente)"),
- "pin_is_incorrect" : MessageLookupByLibrary.simpleMessage("Le code PIN est faux"),
- "please_make_selection" : MessageLookupByLibrary.simpleMessage("Veuillez faire un choix ci-dessous\nCréez ou restaurez votre portefeuille."),
- "please_select" : MessageLookupByLibrary.simpleMessage("Veuillez sélectionner:"),
- "please_try_to_connect_to_another_node" : MessageLookupByLibrary.simpleMessage("veuillez essayer de vous connecter à un autre node"),
- "receive" : MessageLookupByLibrary.simpleMessage("recevoir"),
- "receive_amount" : MessageLookupByLibrary.simpleMessage("Montant"),
- "received" : MessageLookupByLibrary.simpleMessage("a reçu"),
- "reconnect" : MessageLookupByLibrary.simpleMessage("se reconnecter"),
- "reconnect_alert_text" : MessageLookupByLibrary.simpleMessage("Voulez-vous vraiment vous reconnecter?"),
- "reconnection" : MessageLookupByLibrary.simpleMessage("reconnexion"),
- "reload_fiat" : MessageLookupByLibrary.simpleMessage("Actualiser le taux fiat"),
- "remove" : MessageLookupByLibrary.simpleMessage("supprimer"),
- "remove_node" : MessageLookupByLibrary.simpleMessage("supprimer le Node"),
- "remove_node_message" : MessageLookupByLibrary.simpleMessage("Vous voulez vraiment supprimer le Node sélectionné?"),
- "rescan" : MessageLookupByLibrary.simpleMessage("réanalyser"),
- "reset" : MessageLookupByLibrary.simpleMessage("Réinitialiser"),
- "restore_address" : MessageLookupByLibrary.simpleMessage("Adresse"),
- "restore_description_from_backup" : MessageLookupByLibrary.simpleMessage("Vous pouvez restaurer l\'intégralité de l\'application Oxen Wallet à partir de son fichier de sauvegarde."),
- "restore_description_from_keys" : MessageLookupByLibrary.simpleMessage("Restaurez votre portefeuille à partir du mnemonic généré à partir de vos clés privées"),
- "restore_description_from_seed" : MessageLookupByLibrary.simpleMessage("Récupérez votre portefeuille à partir du code de combinaison de 25 ou 13 mots"),
- "restore_description_from_seed_keys" : MessageLookupByLibrary.simpleMessage("Restaurez votre portefeuille avec le Seed ou les clées que vous avez conservées dans un endroit sûr"),
- "restore_from_seed_placeholder" : MessageLookupByLibrary.simpleMessage("Veuillez entrer votre code ici"),
- "restore_next" : MessageLookupByLibrary.simpleMessage("Continuer"),
- "restore_recover" : MessageLookupByLibrary.simpleMessage("Restaurer"),
- "restore_restore_wallet" : MessageLookupByLibrary.simpleMessage("Restauration du portefeuille"),
- "restore_seed_keys_restore" : MessageLookupByLibrary.simpleMessage("Restaurer depuis le Seed ou les clés"),
- "restore_spend_key_private" : MessageLookupByLibrary.simpleMessage("Clé de dépense (secret)"),
- "restore_title_from_backup" : MessageLookupByLibrary.simpleMessage("Restaurer à partir d\'un fichier de sauvegarde"),
- "restore_title_from_keys" : MessageLookupByLibrary.simpleMessage("Récupération des clés"),
- "restore_title_from_seed" : MessageLookupByLibrary.simpleMessage("Restaurer à partir du Seed"),
- "restore_title_from_seed_keys" : MessageLookupByLibrary.simpleMessage("Restaurer à partir du seed ou des clés"),
- "restore_view_key_private" : MessageLookupByLibrary.simpleMessage("Clé d\'observation (secret)"),
- "restore_wallet" : MessageLookupByLibrary.simpleMessage("Restaurer un portefeuille"),
- "restore_wallet_name" : MessageLookupByLibrary.simpleMessage("Nom du portefeuille"),
- "restore_wallet_restore_description" : MessageLookupByLibrary.simpleMessage("Description de la restauration du portefeuille"),
- "router_no_route" : m10,
- "save" : MessageLookupByLibrary.simpleMessage("Sauvegarder"),
- "seed_language_chinese" : MessageLookupByLibrary.simpleMessage("Chinois"),
- "seed_language_choose" : MessageLookupByLibrary.simpleMessage("Veuillez sélectionner la langue source"),
- "seed_language_dutch" : MessageLookupByLibrary.simpleMessage("Néerlandais"),
- "seed_language_english" : MessageLookupByLibrary.simpleMessage("Anglais"),
- "seed_language_french" : MessageLookupByLibrary.simpleMessage("Français"),
- "seed_language_german" : MessageLookupByLibrary.simpleMessage("Allemand"),
- "seed_language_italian" : MessageLookupByLibrary.simpleMessage("Italien"),
- "seed_language_japanese" : MessageLookupByLibrary.simpleMessage("Japonais"),
- "seed_language_next" : MessageLookupByLibrary.simpleMessage("Continuer"),
- "seed_language_portuguese" : MessageLookupByLibrary.simpleMessage("Portugais"),
- "seed_language_russian" : MessageLookupByLibrary.simpleMessage("Russe"),
- "seed_language_spanish" : MessageLookupByLibrary.simpleMessage("Espagnol"),
- "seed_share" : MessageLookupByLibrary.simpleMessage("Partager Seed"),
- "seed_title" : MessageLookupByLibrary.simpleMessage("Seed"),
- "send" : MessageLookupByLibrary.simpleMessage("envoyer"),
- "send_creating_transaction" : MessageLookupByLibrary.simpleMessage("Créer une transaction"),
- "send_error_currency" : MessageLookupByLibrary.simpleMessage("La devise ne peut contenir que des nombres"),
- "send_estimated_fee" : MessageLookupByLibrary.simpleMessage("Frais estimés:"),
- "send_oxen" : MessageLookupByLibrary.simpleMessage("Envoyer OXEN"),
- "send_oxen_address" : MessageLookupByLibrary.simpleMessage("Adresse Oxen"),
- "send_priority" : m11,
- "send_title" : MessageLookupByLibrary.simpleMessage("Envoyer des OXEN"),
- "send_your_wallet" : MessageLookupByLibrary.simpleMessage("Votre portefeuille"),
- "sending" : MessageLookupByLibrary.simpleMessage("Envoyer"),
- "sent" : MessageLookupByLibrary.simpleMessage("expédié"),
- "service_node_key" : MessageLookupByLibrary.simpleMessage("Clé de nœud de service"),
- "settings_all" : MessageLookupByLibrary.simpleMessage("TOUT"),
- "settings_allow_biometric_authentication" : MessageLookupByLibrary.simpleMessage("Authentification biométrique"),
- "settings_balance_detail" : MessageLookupByLibrary.simpleMessage("Décimales"),
- "settings_change_language" : MessageLookupByLibrary.simpleMessage("changer de langue"),
- "settings_change_pin" : MessageLookupByLibrary.simpleMessage("changer le code PIN"),
- "settings_currency" : MessageLookupByLibrary.simpleMessage("Devise"),
- "settings_current_node" : MessageLookupByLibrary.simpleMessage("Node actuel"),
- "settings_dark_mode" : MessageLookupByLibrary.simpleMessage("Mode Sombre"),
- "settings_display_balance_as" : MessageLookupByLibrary.simpleMessage("Afficher la balance comme"),
- "settings_display_on_dashboard_list" : MessageLookupByLibrary.simpleMessage("Afficher dans la liste du tableau de bord"),
- "settings_enable_fiat_currency" : MessageLookupByLibrary.simpleMessage("Convertir la devise en fiat"),
- "settings_fee_priority" : MessageLookupByLibrary.simpleMessage("Priorité des frais"),
- "settings_nodes" : MessageLookupByLibrary.simpleMessage("Node"),
- "settings_none" : MessageLookupByLibrary.simpleMessage("Rien"),
- "settings_personal" : MessageLookupByLibrary.simpleMessage("personnel"),
- "settings_save_recipient_address" : MessageLookupByLibrary.simpleMessage("Enregistrer l\'adresse du destinataire"),
- "settings_support" : MessageLookupByLibrary.simpleMessage("Soutien"),
- "settings_terms_and_conditions" : MessageLookupByLibrary.simpleMessage("Termes et conditions"),
- "settings_title" : MessageLookupByLibrary.simpleMessage("Paramètres"),
- "settings_transactions" : MessageLookupByLibrary.simpleMessage("Transactions"),
- "settings_wallets" : MessageLookupByLibrary.simpleMessage("Portefeuilles"),
- "setup_pin" : MessageLookupByLibrary.simpleMessage("Configurer le code PIN"),
- "setup_successful" : MessageLookupByLibrary.simpleMessage("Votre code PIN a été configuré avec succès!"),
- "share_address" : MessageLookupByLibrary.simpleMessage("Partager l\'adresse "),
- "show_keys" : MessageLookupByLibrary.simpleMessage("Afficher les clés"),
- "show_seed" : MessageLookupByLibrary.simpleMessage("Afficher le seed"),
- "spend_key_private" : MessageLookupByLibrary.simpleMessage("Clé de dépense (secret)"),
- "spend_key_public" : MessageLookupByLibrary.simpleMessage("Clé de dépense (publique)"),
- "stake_more" : MessageLookupByLibrary.simpleMessage("Staker plus"),
- "stake_oxen" : MessageLookupByLibrary.simpleMessage("Stake Oxen"),
- "start_staking" : MessageLookupByLibrary.simpleMessage("Commencer le staking"),
- "status" : MessageLookupByLibrary.simpleMessage("Statut: "),
- "subaddress_title" : MessageLookupByLibrary.simpleMessage("Liste des sous-adresses"),
- "subaddresses" : MessageLookupByLibrary.simpleMessage("Sous-adresses"),
- "sync_status_connected" : MessageLookupByLibrary.simpleMessage("CONNECTÉ"),
- "sync_status_connecting" : MessageLookupByLibrary.simpleMessage("CONNEXION"),
- "sync_status_failed_connect" : MessageLookupByLibrary.simpleMessage("ÉCHEC DE LA CONNEXION AU NODE"),
- "sync_status_not_connected" : MessageLookupByLibrary.simpleMessage("PAS CONNECTÉ"),
- "sync_status_starting_sync" : MessageLookupByLibrary.simpleMessage("DÉBUT DE LA SYNCHRONISATION"),
- "sync_status_synchronized" : MessageLookupByLibrary.simpleMessage("SYNCHRONISÉ"),
- "sync_status_synchronizing" : MessageLookupByLibrary.simpleMessage("SYNCHRONISATION"),
- "title_confirm_unlock_stake" : MessageLookupByLibrary.simpleMessage("Déverrouiller Stake"),
- "title_new_stake" : MessageLookupByLibrary.simpleMessage("Nouveau Stake"),
- "title_stakes" : MessageLookupByLibrary.simpleMessage("Stakes"),
- "today" : MessageLookupByLibrary.simpleMessage("aujourd\'hui"),
- "transaction_details_amount" : MessageLookupByLibrary.simpleMessage("Montant"),
- "transaction_details_copied" : m12,
- "transaction_details_date" : MessageLookupByLibrary.simpleMessage("Date"),
- "transaction_details_height" : MessageLookupByLibrary.simpleMessage("Taille"),
- "transaction_details_recipient_address" : MessageLookupByLibrary.simpleMessage("Adresse du destinataire"),
- "transaction_details_title" : MessageLookupByLibrary.simpleMessage("détails de la transaction"),
- "transaction_details_transaction_id" : MessageLookupByLibrary.simpleMessage("ID Transaction"),
- "transaction_priority_blink" : MessageLookupByLibrary.simpleMessage("Blink"),
- "transaction_priority_slow" : MessageLookupByLibrary.simpleMessage("Lente"),
- "transaction_sent" : MessageLookupByLibrary.simpleMessage("Transaction envoyé!"),
- "transactions" : MessageLookupByLibrary.simpleMessage("transactions"),
- "transactions_by_date" : MessageLookupByLibrary.simpleMessage("transactions par date"),
- "unable_unlock_stake" : MessageLookupByLibrary.simpleMessage("Impossible de déverrouiller le Stake"),
- "unlock_stake_requested" : MessageLookupByLibrary.simpleMessage("Déverrouillage du Stake demandé"),
- "use" : MessageLookupByLibrary.simpleMessage("Basculer vers "),
- "version" : m13,
- "view_key_private" : MessageLookupByLibrary.simpleMessage("Clé d\'observation (secret)"),
- "view_key_public" : MessageLookupByLibrary.simpleMessage("Clé d\'observation (publique)"),
- "wallet_keys" : MessageLookupByLibrary.simpleMessage("Clés du portefeuille"),
- "wallet_list_create_new_wallet" : MessageLookupByLibrary.simpleMessage("Créer un nouveau portefeuille"),
- "wallet_list_failed_to_load" : m14,
- "wallet_list_failed_to_remove" : m15,
- "wallet_list_load_wallet" : MessageLookupByLibrary.simpleMessage("Charger le portefeuille"),
- "wallet_list_loading_wallet" : m16,
- "wallet_list_removing_wallet" : m17,
- "wallet_list_restore_wallet" : MessageLookupByLibrary.simpleMessage("Restaurer le portefeuille"),
- "wallet_list_title" : MessageLookupByLibrary.simpleMessage("Oxen Wallet"),
- "wallet_menu" : MessageLookupByLibrary.simpleMessage("Menu du portefeuille"),
- "wallet_name" : MessageLookupByLibrary.simpleMessage("Nom du portefeuille"),
- "wallet_restoration_store_incorrect_seed_length" : MessageLookupByLibrary.simpleMessage("mauvaise longueur du Seed"),
- "wallets" : MessageLookupByLibrary.simpleMessage("Wallets"),
- "welcome" : MessageLookupByLibrary.simpleMessage("Bienvenu sur\nOXEN WALLET"),
- "widgets_address" : MessageLookupByLibrary.simpleMessage("Adresse"),
- "widgets_or" : MessageLookupByLibrary.simpleMessage("ou"),
- "widgets_restore_from_blockheight" : MessageLookupByLibrary.simpleMessage("restaurer à partir du blockheight"),
- "widgets_restore_from_date" : MessageLookupByLibrary.simpleMessage("Restaurer à partir de la date"),
- "widgets_seed" : MessageLookupByLibrary.simpleMessage("Seed"),
- "yes_im_sure" : MessageLookupByLibrary.simpleMessage("Oui, je suis sûr!"),
- "yesterday" : MessageLookupByLibrary.simpleMessage("hier"),
- "your_contributions" : MessageLookupByLibrary.simpleMessage("Vos contributions")
- };
-}
diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart
deleted file mode 100644
index 791e85bb..00000000
--- a/lib/generated/l10n.dart
+++ /dev/null
@@ -1,2527 +0,0 @@
-// GENERATED CODE - DO NOT MODIFY BY HAND
-import 'package:flutter/material.dart';
-import 'package:intl/intl.dart';
-import 'intl/messages_all.dart';
-
-// **************************************************************************
-// Generator: Flutter Intl IDE plugin
-// Made by Localizely
-// **************************************************************************
-
-// ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars
-// ignore_for_file: join_return_with_assignment, prefer_final_in_for_each
-// ignore_for_file: avoid_redundant_argument_values
-
-class S {
- S();
-
- static S current;
-
- static const AppLocalizationDelegate delegate =
- AppLocalizationDelegate();
-
- static Future load(Locale locale) {
- final name = (locale.countryCode?.isEmpty ?? false) ? locale.languageCode : locale.toString();
- final localeName = Intl.canonicalizedLocale(name);
- return initializeMessages(localeName).then((_) {
- Intl.defaultLocale = localeName;
- S.current = S();
-
- return S.current;
- });
- }
-
- static S of(BuildContext context) {
- return Localizations.of(context, S);
- }
-
- /// `WELCOME\nTO OXEN WALLET`
- String get welcome {
- return Intl.message(
- 'WELCOME\nTO OXEN WALLET',
- name: 'welcome',
- desc: '',
- args: [],
- );
- }
-
- /// `Awesome wallet\nfor Oxen`
- String get first_wallet_text {
- return Intl.message(
- 'Awesome wallet\nfor Oxen',
- name: 'first_wallet_text',
- desc: '',
- args: [],
- );
- }
-
- /// `Please make selection below to\ncreate or recover your wallet.`
- String get please_make_selection {
- return Intl.message(
- 'Please make selection below to\ncreate or recover your wallet.',
- name: 'please_make_selection',
- desc: '',
- args: [],
- );
- }
-
- /// `Create new`
- String get create_new {
- return Intl.message(
- 'Create new',
- name: 'create_new',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore wallet`
- String get restore_wallet {
- return Intl.message(
- 'Restore wallet',
- name: 'restore_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Accounts`
- String get accounts {
- return Intl.message(
- 'Accounts',
- name: 'accounts',
- desc: '',
- args: [],
- );
- }
-
- /// `Edit`
- String get edit {
- return Intl.message(
- 'Edit',
- name: 'edit',
- desc: '',
- args: [],
- );
- }
-
- /// `Account`
- String get account {
- return Intl.message(
- 'Account',
- name: 'account',
- desc: '',
- args: [],
- );
- }
-
- /// `Add`
- String get add {
- return Intl.message(
- 'Add',
- name: 'add',
- desc: '',
- args: [],
- );
- }
-
- /// `Address Book`
- String get address_book {
- return Intl.message(
- 'Address Book',
- name: 'address_book',
- desc: '',
- args: [],
- );
- }
-
- /// `Contact`
- String get contact {
- return Intl.message(
- 'Contact',
- name: 'contact',
- desc: '',
- args: [],
- );
- }
-
- /// `Please select:`
- String get please_select {
- return Intl.message(
- 'Please select:',
- name: 'please_select',
- desc: '',
- args: [],
- );
- }
-
- /// `Cancel`
- String get cancel {
- return Intl.message(
- 'Cancel',
- name: 'cancel',
- desc: '',
- args: [],
- );
- }
-
- /// `OK`
- String get ok {
- return Intl.message(
- 'OK',
- name: 'ok',
- desc: '',
- args: [],
- );
- }
-
- /// `Contact Name`
- String get contact_name {
- return Intl.message(
- 'Contact Name',
- name: 'contact_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Reset`
- String get reset {
- return Intl.message(
- 'Reset',
- name: 'reset',
- desc: '',
- args: [],
- );
- }
-
- /// `Save`
- String get save {
- return Intl.message(
- 'Save',
- name: 'save',
- desc: '',
- args: [],
- );
- }
-
- /// `Authenticated`
- String get authenticated {
- return Intl.message(
- 'Authenticated',
- name: 'authenticated',
- desc: '',
- args: [],
- );
- }
-
- /// `Authentication`
- String get authentication {
- return Intl.message(
- 'Authentication',
- name: 'authentication',
- desc: '',
- args: [],
- );
- }
-
- /// `Failed authentication. {state_error}`
- String failed_authentication(Object state_error) {
- return Intl.message(
- 'Failed authentication. $state_error',
- name: 'failed_authentication',
- desc: '',
- args: [state_error],
- );
- }
-
- /// `Menu`
- String get wallet_menu {
- return Intl.message(
- 'Menu',
- name: 'wallet_menu',
- desc: '',
- args: [],
- );
- }
-
- /// `{status} Blocks Remaining`
- String Blocks_remaining(Object status) {
- return Intl.message(
- '$status Blocks Remaining',
- name: 'Blocks_remaining',
- desc: '',
- args: [status],
- );
- }
-
- /// `Please try to connect to another node`
- String get please_try_to_connect_to_another_node {
- return Intl.message(
- 'Please try to connect to another node',
- name: 'please_try_to_connect_to_another_node',
- desc: '',
- args: [],
- );
- }
-
- /// `OXEN Hidden`
- String get oxen_hidden {
- return Intl.message(
- 'OXEN Hidden',
- name: 'oxen_hidden',
- desc: '',
- args: [],
- );
- }
-
- /// `OXEN Available Balance`
- String get oxen_available_balance {
- return Intl.message(
- 'OXEN Available Balance',
- name: 'oxen_available_balance',
- desc: '',
- args: [],
- );
- }
-
- /// `OXEN Full Balance`
- String get oxen_full_balance {
- return Intl.message(
- 'OXEN Full Balance',
- name: 'oxen_full_balance',
- desc: '',
- args: [],
- );
- }
-
- /// `Send`
- String get send {
- return Intl.message(
- 'Send',
- name: 'send',
- desc: '',
- args: [],
- );
- }
-
- /// `Receive`
- String get receive {
- return Intl.message(
- 'Receive',
- name: 'receive',
- desc: '',
- args: [],
- );
- }
-
- /// `Transactions`
- String get transactions {
- return Intl.message(
- 'Transactions',
- name: 'transactions',
- desc: '',
- args: [],
- );
- }
-
- /// `Incoming`
- String get incoming {
- return Intl.message(
- 'Incoming',
- name: 'incoming',
- desc: '',
- args: [],
- );
- }
-
- /// `Outgoing`
- String get outgoing {
- return Intl.message(
- 'Outgoing',
- name: 'outgoing',
- desc: '',
- args: [],
- );
- }
-
- /// `Transactions by date`
- String get transactions_by_date {
- return Intl.message(
- 'Transactions by date',
- name: 'transactions_by_date',
- desc: '',
- args: [],
- );
- }
-
- /// `Filters`
- String get filters {
- return Intl.message(
- 'Filters',
- name: 'filters',
- desc: '',
- args: [],
- );
- }
-
- /// `Today`
- String get today {
- return Intl.message(
- 'Today',
- name: 'today',
- desc: '',
- args: [],
- );
- }
-
- /// `Yesterday`
- String get yesterday {
- return Intl.message(
- 'Yesterday',
- name: 'yesterday',
- desc: '',
- args: [],
- );
- }
-
- /// `Received`
- String get received {
- return Intl.message(
- 'Received',
- name: 'received',
- desc: '',
- args: [],
- );
- }
-
- /// `Sent`
- String get sent {
- return Intl.message(
- 'Sent',
- name: 'sent',
- desc: '',
- args: [],
- );
- }
-
- /// ` (pending)`
- String get pending {
- return Intl.message(
- ' (pending)',
- name: 'pending',
- desc: '',
- args: [],
- );
- }
-
- /// `Rescan`
- String get rescan {
- return Intl.message(
- 'Rescan',
- name: 'rescan',
- desc: '',
- args: [],
- );
- }
-
- /// `Reconnect`
- String get reconnect {
- return Intl.message(
- 'Reconnect',
- name: 'reconnect',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallets`
- String get wallets {
- return Intl.message(
- 'Wallets',
- name: 'wallets',
- desc: '',
- args: [],
- );
- }
-
- /// `Show seed`
- String get show_seed {
- return Intl.message(
- 'Show seed',
- name: 'show_seed',
- desc: '',
- args: [],
- );
- }
-
- /// `Show keys`
- String get show_keys {
- return Intl.message(
- 'Show keys',
- name: 'show_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `Address book`
- String get address_book_menu {
- return Intl.message(
- 'Address book',
- name: 'address_book_menu',
- desc: '',
- args: [],
- );
- }
-
- /// `Reconnection`
- String get reconnection {
- return Intl.message(
- 'Reconnection',
- name: 'reconnection',
- desc: '',
- args: [],
- );
- }
-
- /// `Are you sure to reconnect?`
- String get reconnect_alert_text {
- return Intl.message(
- 'Are you sure to reconnect?',
- name: 'reconnect_alert_text',
- desc: '',
- args: [],
- );
- }
-
- /// `Reload Fiat data`
- String get reload_fiat {
- return Intl.message(
- 'Reload Fiat data',
- name: 'reload_fiat',
- desc: '',
- args: [],
- );
- }
-
- /// `Clear`
- String get clear {
- return Intl.message(
- 'Clear',
- name: 'clear',
- desc: '',
- args: [],
- );
- }
-
- /// `Error`
- String get error {
- return Intl.message(
- 'Error',
- name: 'error',
- desc: '',
- args: [],
- );
- }
-
- /// `Copied to Clipboard`
- String get copied_to_clipboard {
- return Intl.message(
- 'Copied to Clipboard',
- name: 'copied_to_clipboard',
- desc: '',
- args: [],
- );
- }
-
- /// `Fetching`
- String get fetching {
- return Intl.message(
- 'Fetching',
- name: 'fetching',
- desc: '',
- args: [],
- );
- }
-
- /// `ID: `
- String get id {
- return Intl.message(
- 'ID: ',
- name: 'id',
- desc: '',
- args: [],
- );
- }
-
- /// `Amount: `
- String get amount {
- return Intl.message(
- 'Amount: ',
- name: 'amount',
- desc: '',
- args: [],
- );
- }
-
- /// `Status: `
- String get status {
- return Intl.message(
- 'Status: ',
- name: 'status',
- desc: '',
- args: [],
- );
- }
-
- /// `Confirm`
- String get confirm {
- return Intl.message(
- 'Confirm',
- name: 'confirm',
- desc: '',
- args: [],
- );
- }
-
- /// `Confirm sending`
- String get confirm_sending {
- return Intl.message(
- 'Confirm sending',
- name: 'confirm_sending',
- desc: '',
- args: [],
- );
- }
-
- /// `Commit transaction\nAmount: {amount}\nFee: {fee}`
- String commit_transaction_amount_fee(Object amount, Object fee) {
- return Intl.message(
- 'Commit transaction\nAmount: $amount\nFee: $fee',
- name: 'commit_transaction_amount_fee',
- desc: '',
- args: [amount, fee],
- );
- }
-
- /// `Sending`
- String get sending {
- return Intl.message(
- 'Sending',
- name: 'sending',
- desc: '',
- args: [],
- );
- }
-
- /// `Transaction sent!`
- String get transaction_sent {
- return Intl.message(
- 'Transaction sent!',
- name: 'transaction_sent',
- desc: '',
- args: [],
- );
- }
-
- /// `Send OXEN`
- String get send_oxen {
- return Intl.message(
- 'Send OXEN',
- name: 'send_oxen',
- desc: '',
- args: [],
- );
- }
-
- /// `FAQ`
- String get faq {
- return Intl.message(
- 'FAQ',
- name: 'faq',
- desc: '',
- args: [],
- );
- }
-
- /// `Changelog`
- String get changelog {
- return Intl.message(
- 'Changelog',
- name: 'changelog',
- desc: '',
- args: [],
- );
- }
-
- /// `Enter your PIN`
- String get enter_your_pin {
- return Intl.message(
- 'Enter your PIN',
- name: 'enter_your_pin',
- desc: '',
- args: [],
- );
- }
-
- /// `Loading your wallet`
- String get loading_your_wallet {
- return Intl.message(
- 'Loading your wallet',
- name: 'loading_your_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `New Wallet`
- String get new_wallet {
- return Intl.message(
- 'New Wallet',
- name: 'new_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet name`
- String get wallet_name {
- return Intl.message(
- 'Wallet name',
- name: 'wallet_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Continue`
- String get continue_text {
- return Intl.message(
- 'Continue',
- name: 'continue_text',
- desc: '',
- args: [],
- );
- }
-
- /// `New Node`
- String get node_new {
- return Intl.message(
- 'New Node',
- name: 'node_new',
- desc: '',
- args: [],
- );
- }
-
- /// `Node Address`
- String get node_address {
- return Intl.message(
- 'Node Address',
- name: 'node_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Node port`
- String get node_port {
- return Intl.message(
- 'Node port',
- name: 'node_port',
- desc: '',
- args: [],
- );
- }
-
- /// `Login`
- String get login {
- return Intl.message(
- 'Login',
- name: 'login',
- desc: '',
- args: [],
- );
- }
-
- /// `Password`
- String get password {
- return Intl.message(
- 'Password',
- name: 'password',
- desc: '',
- args: [],
- );
- }
-
- /// `Nodes`
- String get nodes {
- return Intl.message(
- 'Nodes',
- name: 'nodes',
- desc: '',
- args: [],
- );
- }
-
- /// `Reset settings`
- String get node_reset_settings_title {
- return Intl.message(
- 'Reset settings',
- name: 'node_reset_settings_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Are you sure that you want to reset settings to default?`
- String get nodes_list_reset_to_default_message {
- return Intl.message(
- 'Are you sure that you want to reset settings to default?',
- name: 'nodes_list_reset_to_default_message',
- desc: '',
- args: [],
- );
- }
-
- /// `Are you sure to change current node to {node}?`
- String change_current_node(Object node) {
- return Intl.message(
- 'Are you sure to change current node to $node?',
- name: 'change_current_node',
- desc: '',
- args: [node],
- );
- }
-
- /// `Change`
- String get change {
- return Intl.message(
- 'Change',
- name: 'change',
- desc: '',
- args: [],
- );
- }
-
- /// `Remove node`
- String get remove_node {
- return Intl.message(
- 'Remove node',
- name: 'remove_node',
- desc: '',
- args: [],
- );
- }
-
- /// `Are you sure that you want to remove selected node?`
- String get remove_node_message {
- return Intl.message(
- 'Are you sure that you want to remove selected node?',
- name: 'remove_node_message',
- desc: '',
- args: [],
- );
- }
-
- /// `Remove`
- String get remove {
- return Intl.message(
- 'Remove',
- name: 'remove',
- desc: '',
- args: [],
- );
- }
-
- /// `Delete`
- String get delete {
- return Intl.message(
- 'Delete',
- name: 'delete',
- desc: '',
- args: [],
- );
- }
-
- /// `Switch to `
- String get use {
- return Intl.message(
- 'Switch to ',
- name: 'use',
- desc: '',
- args: [],
- );
- }
-
- /// `-digit PIN`
- String get digit_pin {
- return Intl.message(
- '-digit PIN',
- name: 'digit_pin',
- desc: '',
- args: [],
- );
- }
-
- /// `Share address`
- String get share_address {
- return Intl.message(
- 'Share address',
- name: 'share_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Amount`
- String get receive_amount {
- return Intl.message(
- 'Amount',
- name: 'receive_amount',
- desc: '',
- args: [],
- );
- }
-
- /// `Subaddresses`
- String get subaddresses {
- return Intl.message(
- 'Subaddresses',
- name: 'subaddresses',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore Wallet`
- String get restore_restore_wallet {
- return Intl.message(
- 'Restore Wallet',
- name: 'restore_restore_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore from seed/keys`
- String get restore_title_from_seed_keys {
- return Intl.message(
- 'Restore from seed/keys',
- name: 'restore_title_from_seed_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `Get back your wallet from seed/keys that you've saved to secure place`
- String get restore_description_from_seed_keys {
- return Intl.message(
- 'Get back your wallet from seed/keys that you\'ve saved to secure place',
- name: 'restore_description_from_seed_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `Next`
- String get restore_next {
- return Intl.message(
- 'Next',
- name: 'restore_next',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore from a back-up file`
- String get restore_title_from_backup {
- return Intl.message(
- 'Restore from a back-up file',
- name: 'restore_title_from_backup',
- desc: '',
- args: [],
- );
- }
-
- /// `You can restore the whole Oxen Wallet app from your back-up file`
- String get restore_description_from_backup {
- return Intl.message(
- 'You can restore the whole Oxen Wallet app from your back-up file',
- name: 'restore_description_from_backup',
- desc: '',
- args: [],
- );
- }
-
- /// `Seed/Keys Restore`
- String get restore_seed_keys_restore {
- return Intl.message(
- 'Seed/Keys Restore',
- name: 'restore_seed_keys_restore',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore from seed`
- String get restore_title_from_seed {
- return Intl.message(
- 'Restore from seed',
- name: 'restore_title_from_seed',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore your wallet from either the 25 word or 13 word combination code`
- String get restore_description_from_seed {
- return Intl.message(
- 'Restore your wallet from either the 25 word or 13 word combination code',
- name: 'restore_description_from_seed',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore from keys`
- String get restore_title_from_keys {
- return Intl.message(
- 'Restore from keys',
- name: 'restore_title_from_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore your wallet from generated keystrokes saved from your private keys`
- String get restore_description_from_keys {
- return Intl.message(
- 'Restore your wallet from generated keystrokes saved from your private keys',
- name: 'restore_description_from_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet name`
- String get restore_wallet_name {
- return Intl.message(
- 'Wallet name',
- name: 'restore_wallet_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Address`
- String get restore_address {
- return Intl.message(
- 'Address',
- name: 'restore_address',
- desc: '',
- args: [],
- );
- }
-
- /// `View key (private)`
- String get restore_view_key_private {
- return Intl.message(
- 'View key (private)',
- name: 'restore_view_key_private',
- desc: '',
- args: [],
- );
- }
-
- /// `Spend key (private)`
- String get restore_spend_key_private {
- return Intl.message(
- 'Spend key (private)',
- name: 'restore_spend_key_private',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore`
- String get restore_recover {
- return Intl.message(
- 'Restore',
- name: 'restore_recover',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet restore description`
- String get restore_wallet_restore_description {
- return Intl.message(
- 'Wallet restore description',
- name: 'restore_wallet_restore_description',
- desc: '',
- args: [],
- );
- }
-
- /// `Seed`
- String get seed_title {
- return Intl.message(
- 'Seed',
- name: 'seed_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Share seed`
- String get seed_share {
- return Intl.message(
- 'Share seed',
- name: 'seed_share',
- desc: '',
- args: [],
- );
- }
-
- /// `Copy`
- String get copy {
- return Intl.message(
- 'Copy',
- name: 'copy',
- desc: '',
- args: [],
- );
- }
-
- /// `Please choose seed language`
- String get seed_language_choose {
- return Intl.message(
- 'Please choose seed language',
- name: 'seed_language_choose',
- desc: '',
- args: [],
- );
- }
-
- /// `Next`
- String get seed_language_next {
- return Intl.message(
- 'Next',
- name: 'seed_language_next',
- desc: '',
- args: [],
- );
- }
-
- /// `English`
- String get seed_language_english {
- return Intl.message(
- 'English',
- name: 'seed_language_english',
- desc: '',
- args: [],
- );
- }
-
- /// `Chinese`
- String get seed_language_chinese {
- return Intl.message(
- 'Chinese',
- name: 'seed_language_chinese',
- desc: '',
- args: [],
- );
- }
-
- /// `Dutch`
- String get seed_language_dutch {
- return Intl.message(
- 'Dutch',
- name: 'seed_language_dutch',
- desc: '',
- args: [],
- );
- }
-
- /// `German`
- String get seed_language_german {
- return Intl.message(
- 'German',
- name: 'seed_language_german',
- desc: '',
- args: [],
- );
- }
-
- /// `Japanese`
- String get seed_language_japanese {
- return Intl.message(
- 'Japanese',
- name: 'seed_language_japanese',
- desc: '',
- args: [],
- );
- }
-
- /// `Portuguese`
- String get seed_language_portuguese {
- return Intl.message(
- 'Portuguese',
- name: 'seed_language_portuguese',
- desc: '',
- args: [],
- );
- }
-
- /// `Russian`
- String get seed_language_russian {
- return Intl.message(
- 'Russian',
- name: 'seed_language_russian',
- desc: '',
- args: [],
- );
- }
-
- /// `Spanish`
- String get seed_language_spanish {
- return Intl.message(
- 'Spanish',
- name: 'seed_language_spanish',
- desc: '',
- args: [],
- );
- }
-
- /// `French`
- String get seed_language_french {
- return Intl.message(
- 'French',
- name: 'seed_language_french',
- desc: '',
- args: [],
- );
- }
-
- /// `Italian`
- String get seed_language_italian {
- return Intl.message(
- 'Italian',
- name: 'seed_language_italian',
- desc: '',
- args: [],
- );
- }
-
- /// `Send Oxen`
- String get send_title {
- return Intl.message(
- 'Send Oxen',
- name: 'send_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Your wallet`
- String get send_your_wallet {
- return Intl.message(
- 'Your wallet',
- name: 'send_your_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Oxen address`
- String get send_oxen_address {
- return Intl.message(
- 'Oxen address',
- name: 'send_oxen_address',
- desc: '',
- args: [],
- );
- }
-
- /// `ALL`
- String get all {
- return Intl.message(
- 'ALL',
- name: 'all',
- desc: '',
- args: [],
- );
- }
-
- /// `Currency can only contain numbers`
- String get send_error_currency {
- return Intl.message(
- 'Currency can only contain numbers',
- name: 'send_error_currency',
- desc: '',
- args: [],
- );
- }
-
- /// `Estimated fee:`
- String get send_estimated_fee {
- return Intl.message(
- 'Estimated fee:',
- name: 'send_estimated_fee',
- desc: '',
- args: [],
- );
- }
-
- /// `Currently the fee is set at {transactionPriority} priority.\nTransaction priority can be adjusted in the settings`
- String send_priority(Object transactionPriority) {
- return Intl.message(
- 'Currently the fee is set at $transactionPriority priority.\nTransaction priority can be adjusted in the settings',
- name: 'send_priority',
- desc: '',
- args: [transactionPriority],
- );
- }
-
- /// `Creating transaction`
- String get send_creating_transaction {
- return Intl.message(
- 'Creating transaction',
- name: 'send_creating_transaction',
- desc: '',
- args: [],
- );
- }
-
- /// `Stakes`
- String get title_stakes {
- return Intl.message(
- 'Stakes',
- name: 'title_stakes',
- desc: '',
- args: [],
- );
- }
-
- /// `New Stake`
- String get title_new_stake {
- return Intl.message(
- 'New Stake',
- name: 'title_new_stake',
- desc: '',
- args: [],
- );
- }
-
- /// `Your Contributions`
- String get your_contributions {
- return Intl.message(
- 'Your Contributions',
- name: 'your_contributions',
- desc: '',
- args: [],
- );
- }
-
- /// `Start staking`
- String get start_staking {
- return Intl.message(
- 'Start staking',
- name: 'start_staking',
- desc: '',
- args: [],
- );
- }
-
- /// `Stake more`
- String get stake_more {
- return Intl.message(
- 'Stake more',
- name: 'stake_more',
- desc: '',
- args: [],
- );
- }
-
- /// `Nothing staked yet`
- String get nothing_staked {
- return Intl.message(
- 'Nothing staked yet',
- name: 'nothing_staked',
- desc: '',
- args: [],
- );
- }
-
- /// `Service Node Key`
- String get service_node_key {
- return Intl.message(
- 'Service Node Key',
- name: 'service_node_key',
- desc: '',
- args: [],
- );
- }
-
- /// `Stake Oxen`
- String get stake_oxen {
- return Intl.message(
- 'Stake Oxen',
- name: 'stake_oxen',
- desc: '',
- args: [],
- );
- }
-
- /// `Unlock Stake`
- String get title_confirm_unlock_stake {
- return Intl.message(
- 'Unlock Stake',
- name: 'title_confirm_unlock_stake',
- desc: '',
- args: [],
- );
- }
-
- /// `Do you really want to unlock your stake from {serviceNodeKey}?`
- String body_confirm_unlock_stake(Object serviceNodeKey) {
- return Intl.message(
- 'Do you really want to unlock your stake from $serviceNodeKey?',
- name: 'body_confirm_unlock_stake',
- desc: '',
- args: [serviceNodeKey],
- );
- }
-
- /// `Stake unlock requested`
- String get unlock_stake_requested {
- return Intl.message(
- 'Stake unlock requested',
- name: 'unlock_stake_requested',
- desc: '',
- args: [],
- );
- }
-
- /// `Unable to unlock stake`
- String get unable_unlock_stake {
- return Intl.message(
- 'Unable to unlock stake',
- name: 'unable_unlock_stake',
- desc: '',
- args: [],
- );
- }
-
- /// `Settings`
- String get settings_title {
- return Intl.message(
- 'Settings',
- name: 'settings_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Nodes`
- String get settings_nodes {
- return Intl.message(
- 'Nodes',
- name: 'settings_nodes',
- desc: '',
- args: [],
- );
- }
-
- /// `Current node`
- String get settings_current_node {
- return Intl.message(
- 'Current node',
- name: 'settings_current_node',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallets`
- String get settings_wallets {
- return Intl.message(
- 'Wallets',
- name: 'settings_wallets',
- desc: '',
- args: [],
- );
- }
-
- /// `Display balance as`
- String get settings_display_balance_as {
- return Intl.message(
- 'Display balance as',
- name: 'settings_display_balance_as',
- desc: '',
- args: [],
- );
- }
-
- /// `Decimals`
- String get settings_balance_detail {
- return Intl.message(
- 'Decimals',
- name: 'settings_balance_detail',
- desc: '',
- args: [],
- );
- }
-
- /// `Currency`
- String get settings_currency {
- return Intl.message(
- 'Currency',
- name: 'settings_currency',
- desc: '',
- args: [],
- );
- }
-
- /// `Fee priority`
- String get settings_fee_priority {
- return Intl.message(
- 'Fee priority',
- name: 'settings_fee_priority',
- desc: '',
- args: [],
- );
- }
-
- /// `Save recipient address`
- String get settings_save_recipient_address {
- return Intl.message(
- 'Save recipient address',
- name: 'settings_save_recipient_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Personal`
- String get settings_personal {
- return Intl.message(
- 'Personal',
- name: 'settings_personal',
- desc: '',
- args: [],
- );
- }
-
- /// `Change PIN`
- String get settings_change_pin {
- return Intl.message(
- 'Change PIN',
- name: 'settings_change_pin',
- desc: '',
- args: [],
- );
- }
-
- /// `Change language`
- String get settings_change_language {
- return Intl.message(
- 'Change language',
- name: 'settings_change_language',
- desc: '',
- args: [],
- );
- }
-
- /// `Allow biometric authentication`
- String get settings_allow_biometric_authentication {
- return Intl.message(
- 'Allow biometric authentication',
- name: 'settings_allow_biometric_authentication',
- desc: '',
- args: [],
- );
- }
-
- /// `Dark mode`
- String get settings_dark_mode {
- return Intl.message(
- 'Dark mode',
- name: 'settings_dark_mode',
- desc: '',
- args: [],
- );
- }
-
- /// `Transactions`
- String get settings_transactions {
- return Intl.message(
- 'Transactions',
- name: 'settings_transactions',
- desc: '',
- args: [],
- );
- }
-
- /// `Display on dashboard list`
- String get settings_display_on_dashboard_list {
- return Intl.message(
- 'Display on dashboard list',
- name: 'settings_display_on_dashboard_list',
- desc: '',
- args: [],
- );
- }
-
- /// `ALL`
- String get settings_all {
- return Intl.message(
- 'ALL',
- name: 'settings_all',
- desc: '',
- args: [],
- );
- }
-
- /// `None`
- String get settings_none {
- return Intl.message(
- 'None',
- name: 'settings_none',
- desc: '',
- args: [],
- );
- }
-
- /// `Support`
- String get settings_support {
- return Intl.message(
- 'Support',
- name: 'settings_support',
- desc: '',
- args: [],
- );
- }
-
- /// `Terms and conditions`
- String get settings_terms_and_conditions {
- return Intl.message(
- 'Terms and conditions',
- name: 'settings_terms_and_conditions',
- desc: '',
- args: [],
- );
- }
-
- /// `Enable Fiat Currency conversion`
- String get settings_enable_fiat_currency {
- return Intl.message(
- 'Enable Fiat Currency conversion',
- name: 'settings_enable_fiat_currency',
- desc: '',
- args: [],
- );
- }
-
- /// `PIN is incorrect`
- String get pin_is_incorrect {
- return Intl.message(
- 'PIN is incorrect',
- name: 'pin_is_incorrect',
- desc: '',
- args: [],
- );
- }
-
- /// `9 - Ultra`
- String get amount_detail_ultra {
- return Intl.message(
- '9 - Ultra',
- name: 'amount_detail_ultra',
- desc: '',
- args: [],
- );
- }
-
- /// `0 - None`
- String get amount_detail_none {
- return Intl.message(
- '0 - None',
- name: 'amount_detail_none',
- desc: '',
- args: [],
- );
- }
-
- /// `4 - Detailed`
- String get amount_detail_detailed {
- return Intl.message(
- '4 - Detailed',
- name: 'amount_detail_detailed',
- desc: '',
- args: [],
- );
- }
-
- /// `2 - Normal`
- String get amount_detail_normal {
- return Intl.message(
- '2 - Normal',
- name: 'amount_detail_normal',
- desc: '',
- args: [],
- );
- }
-
- /// `Setup PIN`
- String get setup_pin {
- return Intl.message(
- 'Setup PIN',
- name: 'setup_pin',
- desc: '',
- args: [],
- );
- }
-
- /// `Enter your pin again`
- String get enter_your_pin_again {
- return Intl.message(
- 'Enter your pin again',
- name: 'enter_your_pin_again',
- desc: '',
- args: [],
- );
- }
-
- /// `Your PIN has been set up successfully!`
- String get setup_successful {
- return Intl.message(
- 'Your PIN has been set up successfully!',
- name: 'setup_successful',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet keys`
- String get wallet_keys {
- return Intl.message(
- 'Wallet keys',
- name: 'wallet_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `View key (private)`
- String get view_key_private {
- return Intl.message(
- 'View key (private)',
- name: 'view_key_private',
- desc: '',
- args: [],
- );
- }
-
- /// `View key (public)`
- String get view_key_public {
- return Intl.message(
- 'View key (public)',
- name: 'view_key_public',
- desc: '',
- args: [],
- );
- }
-
- /// `Spend key (private)`
- String get spend_key_private {
- return Intl.message(
- 'Spend key (private)',
- name: 'spend_key_private',
- desc: '',
- args: [],
- );
- }
-
- /// `Spend key (public)`
- String get spend_key_public {
- return Intl.message(
- 'Spend key (public)',
- name: 'spend_key_public',
- desc: '',
- args: [],
- );
- }
-
- /// `Copied {key} to Clipboard`
- String copied_key_to_clipboard(Object key) {
- return Intl.message(
- 'Copied $key to Clipboard',
- name: 'copied_key_to_clipboard',
- desc: '',
- args: [key],
- );
- }
-
- /// `New subaddress`
- String get new_subaddress_title {
- return Intl.message(
- 'New subaddress',
- name: 'new_subaddress_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Label name`
- String get new_subaddress_label_name {
- return Intl.message(
- 'Label name',
- name: 'new_subaddress_label_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Create`
- String get new_subaddress_create {
- return Intl.message(
- 'Create',
- name: 'new_subaddress_create',
- desc: '',
- args: [],
- );
- }
-
- /// `Subaddress list`
- String get subaddress_title {
- return Intl.message(
- 'Subaddress list',
- name: 'subaddress_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Transaction Details`
- String get transaction_details_title {
- return Intl.message(
- 'Transaction Details',
- name: 'transaction_details_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Transaction ID`
- String get transaction_details_transaction_id {
- return Intl.message(
- 'Transaction ID',
- name: 'transaction_details_transaction_id',
- desc: '',
- args: [],
- );
- }
-
- /// `Date`
- String get transaction_details_date {
- return Intl.message(
- 'Date',
- name: 'transaction_details_date',
- desc: '',
- args: [],
- );
- }
-
- /// `Height`
- String get transaction_details_height {
- return Intl.message(
- 'Height',
- name: 'transaction_details_height',
- desc: '',
- args: [],
- );
- }
-
- /// `Amount`
- String get transaction_details_amount {
- return Intl.message(
- 'Amount',
- name: 'transaction_details_amount',
- desc: '',
- args: [],
- );
- }
-
- /// `{title} copied to Clipboard`
- String transaction_details_copied(Object title) {
- return Intl.message(
- '$title copied to Clipboard',
- name: 'transaction_details_copied',
- desc: '',
- args: [title],
- );
- }
-
- /// `Recipient address`
- String get transaction_details_recipient_address {
- return Intl.message(
- 'Recipient address',
- name: 'transaction_details_recipient_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Oxen Wallet`
- String get wallet_list_title {
- return Intl.message(
- 'Oxen Wallet',
- name: 'wallet_list_title',
- desc: '',
- args: [],
- );
- }
-
- /// `Create New Wallet`
- String get wallet_list_create_new_wallet {
- return Intl.message(
- 'Create New Wallet',
- name: 'wallet_list_create_new_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore Wallet`
- String get wallet_list_restore_wallet {
- return Intl.message(
- 'Restore Wallet',
- name: 'wallet_list_restore_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Load wallet`
- String get wallet_list_load_wallet {
- return Intl.message(
- 'Load wallet',
- name: 'wallet_list_load_wallet',
- desc: '',
- args: [],
- );
- }
-
- /// `Loading {wallet_name} wallet`
- String wallet_list_loading_wallet(Object wallet_name) {
- return Intl.message(
- 'Loading $wallet_name wallet',
- name: 'wallet_list_loading_wallet',
- desc: '',
- args: [wallet_name],
- );
- }
-
- /// `Failed to load {wallet_name} wallet. {error}`
- String wallet_list_failed_to_load(Object wallet_name, Object error) {
- return Intl.message(
- 'Failed to load $wallet_name wallet. $error',
- name: 'wallet_list_failed_to_load',
- desc: '',
- args: [wallet_name, error],
- );
- }
-
- /// `Removing {wallet_name} wallet`
- String wallet_list_removing_wallet(Object wallet_name) {
- return Intl.message(
- 'Removing $wallet_name wallet',
- name: 'wallet_list_removing_wallet',
- desc: '',
- args: [wallet_name],
- );
- }
-
- /// `Failed to remove {wallet_name} wallet. {error}`
- String wallet_list_failed_to_remove(Object wallet_name, Object error) {
- return Intl.message(
- 'Failed to remove $wallet_name wallet. $error',
- name: 'wallet_list_failed_to_remove',
- desc: '',
- args: [wallet_name, error],
- );
- }
-
- /// `Address`
- String get widgets_address {
- return Intl.message(
- 'Address',
- name: 'widgets_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore from blockheight`
- String get widgets_restore_from_blockheight {
- return Intl.message(
- 'Restore from blockheight',
- name: 'widgets_restore_from_blockheight',
- desc: '',
- args: [],
- );
- }
-
- /// `Restore from date`
- String get widgets_restore_from_date {
- return Intl.message(
- 'Restore from date',
- name: 'widgets_restore_from_date',
- desc: '',
- args: [],
- );
- }
-
- /// `or`
- String get widgets_or {
- return Intl.message(
- 'or',
- name: 'widgets_or',
- desc: '',
- args: [],
- );
- }
-
- /// `Seed`
- String get widgets_seed {
- return Intl.message(
- 'Seed',
- name: 'widgets_seed',
- desc: '',
- args: [],
- );
- }
-
- /// `No route defined for {name}`
- String router_no_route(Object name) {
- return Intl.message(
- 'No route defined for $name',
- name: 'router_no_route',
- desc: '',
- args: [name],
- );
- }
-
- /// `Account name can only contain letters, numbers\nand must be between 1 and 15 characters long`
- String get error_text_account_name {
- return Intl.message(
- 'Account name can only contain letters, numbers\nand must be between 1 and 15 characters long',
- name: 'error_text_account_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Contact name can't contain ' , ' " symbols\nand must be between 1 and 32 characters long`
- String get error_text_contact_name {
- return Intl.message(
- 'Contact name can\'t contain ` , \' " symbols\nand must be between 1 and 32 characters long',
- name: 'error_text_contact_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet address must correspond to the type\nof cryptocurrency`
- String get error_text_address {
- return Intl.message(
- 'Wallet address must correspond to the type\nof cryptocurrency',
- name: 'error_text_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Please enter a iPv4 address`
- String get error_text_node_address {
- return Intl.message(
- 'Please enter a iPv4 address',
- name: 'error_text_node_address',
- desc: '',
- args: [],
- );
- }
-
- /// `Node port can only contain numbers between 0 and 65535`
- String get error_text_node_port {
- return Intl.message(
- 'Node port can only contain numbers between 0 and 65535',
- name: 'error_text_node_port',
- desc: '',
- args: [],
- );
- }
-
- /// `Payment ID can only contain from 16 to 64 chars in hex`
- String get error_text_payment_id {
- return Intl.message(
- 'Payment ID can only contain from 16 to 64 chars in hex',
- name: 'error_text_payment_id',
- desc: '',
- args: [],
- );
- }
-
- /// `OXEN value can't exceed available balance.\nThe number of fraction digits must be less or equal to 12`
- String get error_text_oxen {
- return Intl.message(
- 'OXEN value can\'t exceed available balance.\nThe number of fraction digits must be less or equal to 12',
- name: 'error_text_oxen',
- desc: '',
- args: [],
- );
- }
-
- /// `Value of amount can't exceed available balance.\nThe number of fraction digits must be less or equal to 2`
- String get error_text_fiat {
- return Intl.message(
- 'Value of amount can\'t exceed available balance.\nThe number of fraction digits must be less or equal to 2',
- name: 'error_text_fiat',
- desc: '',
- args: [],
- );
- }
-
- /// `Subaddress name can't contain ' , ' " symbols\nand must be between 1 and 20 characters long`
- String get error_text_subaddress_name {
- return Intl.message(
- 'Subaddress name can\'t contain ` , \' " symbols\nand must be between 1 and 20 characters long',
- name: 'error_text_subaddress_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Amount can only contain numbers`
- String get error_text_amount {
- return Intl.message(
- 'Amount can only contain numbers',
- name: 'error_text_amount',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet name can only contain letters, numbers\nand must be between 1 and 15 characters long`
- String get error_text_wallet_name {
- return Intl.message(
- 'Wallet name can only contain letters, numbers\nand must be between 1 and 15 characters long',
- name: 'error_text_wallet_name',
- desc: '',
- args: [],
- );
- }
-
- /// `Wallet keys can only contain 64 chars in hex`
- String get error_text_keys {
- return Intl.message(
- 'Wallet keys can only contain 64 chars in hex',
- name: 'error_text_keys',
- desc: '',
- args: [],
- );
- }
-
- /// `The number of fraction digits\nmust be less or equal to 12`
- String get error_text_crypto_currency {
- return Intl.message(
- 'The number of fraction digits\nmust be less or equal to 12',
- name: 'error_text_crypto_currency',
- desc: '',
- args: [],
- );
- }
-
- /// `A Service Node key can only contain 64 chars in hex`
- String get error_text_service_node {
- return Intl.message(
- 'A Service Node key can only contain 64 chars in hex',
- name: 'error_text_service_node',
- desc: '',
- args: [],
- );
- }
-
- /// `ban_timeout`
- String get auth_store_ban_timeout {
- return Intl.message(
- 'ban_timeout',
- name: 'auth_store_ban_timeout',
- desc: '',
- args: [],
- );
- }
-
- /// `Banned for `
- String get auth_store_banned_for {
- return Intl.message(
- 'Banned for ',
- name: 'auth_store_banned_for',
- desc: '',
- args: [],
- );
- }
-
- /// ` minutes`
- String get auth_store_banned_minutes {
- return Intl.message(
- ' minutes',
- name: 'auth_store_banned_minutes',
- desc: '',
- args: [],
- );
- }
-
- /// `Wrong PIN`
- String get auth_store_incorrect_password {
- return Intl.message(
- 'Wrong PIN',
- name: 'auth_store_incorrect_password',
- desc: '',
- args: [],
- );
- }
-
- /// `Incorrect seed length`
- String get wallet_restoration_store_incorrect_seed_length {
- return Intl.message(
- 'Incorrect seed length',
- name: 'wallet_restoration_store_incorrect_seed_length',
- desc: '',
- args: [],
- );
- }
-
- /// `Full Balance`
- String get full_balance {
- return Intl.message(
- 'Full Balance',
- name: 'full_balance',
- desc: '',
- args: [],
- );
- }
-
- /// `Available Balance`
- String get available_balance {
- return Intl.message(
- 'Available Balance',
- name: 'available_balance',
- desc: '',
- args: [],
- );
- }
-
- /// `Hidden Balance`
- String get hidden_balance {
- return Intl.message(
- 'Hidden Balance',
- name: 'hidden_balance',
- desc: '',
- args: [],
- );
- }
-
- /// `SYNCHRONIZING`
- String get sync_status_synchronizing {
- return Intl.message(
- 'SYNCHRONIZING',
- name: 'sync_status_synchronizing',
- desc: '',
- args: [],
- );
- }
-
- /// `SYNCHRONIZED`
- String get sync_status_synchronized {
- return Intl.message(
- 'SYNCHRONIZED',
- name: 'sync_status_synchronized',
- desc: '',
- args: [],
- );
- }
-
- /// `NOT CONNECTED`
- String get sync_status_not_connected {
- return Intl.message(
- 'NOT CONNECTED',
- name: 'sync_status_not_connected',
- desc: '',
- args: [],
- );
- }
-
- /// `STARTING SYNC`
- String get sync_status_starting_sync {
- return Intl.message(
- 'STARTING SYNC',
- name: 'sync_status_starting_sync',
- desc: '',
- args: [],
- );
- }
-
- /// `FAILED CONNECT TO THE NODE`
- String get sync_status_failed_connect {
- return Intl.message(
- 'FAILED CONNECT TO THE NODE',
- name: 'sync_status_failed_connect',
- desc: '',
- args: [],
- );
- }
-
- /// `CONNECTING`
- String get sync_status_connecting {
- return Intl.message(
- 'CONNECTING',
- name: 'sync_status_connecting',
- desc: '',
- args: [],
- );
- }
-
- /// `CONNECTED`
- String get sync_status_connected {
- return Intl.message(
- 'CONNECTED',
- name: 'sync_status_connected',
- desc: '',
- args: [],
- );
- }
-
- /// `Slow`
- String get transaction_priority_slow {
- return Intl.message(
- 'Slow',
- name: 'transaction_priority_slow',
- desc: '',
- args: [],
- );
- }
-
- /// `Blink`
- String get transaction_priority_blink {
- return Intl.message(
- 'Blink',
- name: 'transaction_priority_blink',
- desc: '',
- args: [],
- );
- }
-
- /// `Change language`
- String get change_language {
- return Intl.message(
- 'Change language',
- name: 'change_language',
- desc: '',
- args: [],
- );
- }
-
- /// `Change language to {language}?`
- String change_language_to(Object language) {
- return Intl.message(
- 'Change language to $language?',
- name: 'change_language_to',
- desc: '',
- args: [language],
- );
- }
-
- /// `Paste`
- String get paste {
- return Intl.message(
- 'Paste',
- name: 'paste',
- desc: '',
- args: [],
- );
- }
-
- /// `Please enter or paste your seed here`
- String get restore_from_seed_placeholder {
- return Intl.message(
- 'Please enter or paste your seed here',
- name: 'restore_from_seed_placeholder',
- desc: '',
- args: [],
- );
- }
-
- /// `Add new word`
- String get add_new_word {
- return Intl.message(
- 'Add new word',
- name: 'add_new_word',
- desc: '',
- args: [],
- );
- }
-
- /// `The text entered is not valid.`
- String get incorrect_seed {
- return Intl.message(
- 'The text entered is not valid.',
- name: 'incorrect_seed',
- desc: '',
- args: [],
- );
- }
-
- /// `Scan your fingerprint to authenticate`
- String get biometric_auth_reason {
- return Intl.message(
- 'Scan your fingerprint to authenticate',
- name: 'biometric_auth_reason',
- desc: '',
- args: [],
- );
- }
-
- /// `Version {currentVersion}`
- String version(Object currentVersion) {
- return Intl.message(
- 'Version $currentVersion',
- name: 'version',
- desc: '',
- args: [currentVersion],
- );
- }
-
- /// `OXEN Recipient Detected`
- String get openalias_alert_title {
- return Intl.message(
- 'OXEN Recipient Detected',
- name: 'openalias_alert_title',
- desc: '',
- args: [],
- );
- }
-
- /// `You will be sending funds to\n{recipient_name}`
- String openalias_alert_content(Object recipient_name) {
- return Intl.message(
- 'You will be sending funds to\n$recipient_name',
- name: 'openalias_alert_content',
- desc: '',
- args: [recipient_name],
- );
- }
-
- /// `Dangerzone`
- String get dangerzone {
- return Intl.message(
- 'Dangerzone',
- name: 'dangerzone',
- desc: '',
- args: [],
- );
- }
-
- /// `Yes, I'm sure!`
- String get yes_im_sure {
- return Intl.message(
- 'Yes, I\'m sure!',
- name: 'yes_im_sure',
- desc: '',
- args: [],
- );
- }
-
- /// `NEVER give your Oxen wallet {item} to ANYONE!`
- String never_give_your(Object item) {
- return Intl.message(
- 'NEVER give your Oxen wallet $item to ANYONE!',
- name: 'never_give_your',
- desc: '',
- args: [item],
- );
- }
-
- /// `NEVER input your Oxen wallet {item} into any software or website other than the OFFICIAL Oxen wallets downloaded directly from the {app_store}, the Oxen website, or the Oxen GitHub.\nAre you sure you want to access your wallet {item}?`
- String dangerzone_warning(Object item, Object app_store) {
- return Intl.message(
- 'NEVER input your Oxen wallet $item into any software or website other than the OFFICIAL Oxen wallets downloaded directly from the $app_store, the Oxen website, or the Oxen GitHub.\nAre you sure you want to access your wallet $item?',
- name: 'dangerzone_warning',
- desc: '',
- args: [item, app_store],
- );
- }
-
- /// `Are you sure you want to delete this wallet?`
- String get remove_wallet_confirmation {
- return Intl.message(
- 'Are you sure you want to delete this wallet?',
- name: 'remove_wallet_confirmation',
- desc: '',
- args: [],
- );
- }
-
- /// `Are you sure you want to delete this wallet? If you have not saved your seed phrase then any funds sent to this wallet will be lost forever!`
- String get dangerzone_remove_wallet_warning {
- return Intl.message(
- 'If you have not saved your seed phrase then any funds sent to this wallet will be lost forever!',
- name: 'dangerzone_remove_wallet_warning',
- desc: '',
- args: [],
- );
- }
-
- /// `Keys`
- String get keys_title {
- return Intl.message(
- 'Keys',
- name: 'keys_title',
- desc: '',
- args: [],
- );
- }
-}
-
-class AppLocalizationDelegate extends LocalizationsDelegate {
- const AppLocalizationDelegate();
-
- List get supportedLocales {
- return const [
- Locale.fromSubtags(languageCode: 'en'),
- Locale.fromSubtags(languageCode: 'de'),
- Locale.fromSubtags(languageCode: 'fr'),
- ];
- }
-
- @override
- bool isSupported(Locale locale) => _isSupported(locale);
- @override
- Future load(Locale locale) => S.load(locale);
- @override
- bool shouldReload(AppLocalizationDelegate old) => false;
-
- bool _isSupported(Locale locale) {
- if (locale != null) {
- for (var supportedLocale in supportedLocales) {
- if (supportedLocale.languageCode == locale.languageCode) {
- return true;
- }
- }
- }
- return false;
- }
-}
\ No newline at end of file
diff --git a/lib/l10n.dart b/lib/l10n.dart
new file mode 100644
index 00000000..7aab1bf0
--- /dev/null
+++ b/lib/l10n.dart
@@ -0,0 +1,8 @@
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+import 'package:flutter/material.dart';
+
+export 'package:flutter_gen/gen_l10n/app_localizations.dart' show AppLocalizations;
+
+AppLocalizations tr(BuildContext ctx) {
+ return AppLocalizations.of(ctx) ?? lookupAppLocalizations(Locale('en', ''));
+}
diff --git a/lib/l10n/intl_de.arb b/lib/l10n/app_de.arb
similarity index 91%
rename from lib/l10n/intl_de.arb
rename to lib/l10n/app_de.arb
index f16df0fb..7974a7df 100644
--- a/lib/l10n/intl_de.arb
+++ b/lib/l10n/app_de.arb
@@ -20,6 +20,12 @@
"contact_name" : "Name des Ansprechpartners",
"reset" : "Zurücksetzen",
"save" : "Speichern",
+ "remove_contact" : "Kontakt entfernen",
+ "remove_contact_confirm" : "Bist du sicher dass du den ausgewählten Kontakt entfernen möchtest?",
+
+
+ "remove_wallet_confirmation": "Bist du sicher dass du dieses Wallet löschen möchtest?",
+ "dangerzone_remove_wallet_warning": "Wenn du deine Seed-Phrase nicht gespeichert hast, wird alles Kapital dass zu diesem Wallet gesendet wurde für immer verloren sein.",
"authenticated" : "Authentifiziert",
@@ -28,7 +34,7 @@
"wallet_menu" : "Wallet-Menü",
- "Blocks_remaining" : "{status} verbleibende Blöcke",
+ "blocks_remaining" : "{status} verbleibende Blöcke",
"please_try_to_connect_to_another_node" : "Bitte versuchen Sie, eine Verbindung zu einem anderen Knoten herzustellen",
"oxen_hidden" : "OXEN versteckt",
"oxen_available_balance" : "OXEN verfügbares Guthaben",
@@ -44,6 +50,7 @@
"yesterday" : "Gestern",
"received" : "Empfangen",
"sent" : "Geschickt",
+ "stake" : "Stake",
"pending" : " (steht aus)",
"rescan" : "Erneut scannen",
"reconnect" : "Erneut verbinden",
@@ -67,7 +74,8 @@
"status" : "Status: ",
"confirm" : "Bestätigen",
"confirm_sending" : "Bestätigen Sie das Senden",
- "commit_transaction_amount_fee" : "Transaktion festschreiben\nMenge: {amount}\nGebühr: {fee}",
+ "confirm_stake" : "Bestätigen Sie der Stake",
+ "confirm_transaction_amount_fee" : "Menge: {amount} OXEN\nGebühr: {fee} OXEN",
"sending" : "Senden",
"transaction_sent" : "Transaktion gesendet!",
"send_oxen" : "OXEN Senden",
@@ -101,8 +109,7 @@
"delete" : "Löschen",
- "use" : "Wechseln zu ",
- "digit_pin" : "-stelliger PIN",
+ "use_n_digit_pin" : "Wechseln zu {n}-stelliger PIN",
"share_address" : "Adresse teilen ",
@@ -118,7 +125,7 @@
"restore_description_from_backup" : "Sie können die gesamte Oxen Wallet-App aus ihrer Sicherungsdatei wiederherstellen.",
"restore_seed_keys_restore" : "Seed / Schlüssel wiederherstellen",
"restore_title_from_seed" : "Aus Seed wiederherstellen",
- "restore_description_from_seed" : "Stellen Sie Ihr Wallet aus den 25 Wörtern wieder her oder 13-Wort-Kombinationscode",
+ "restore_description_from_seed" : "Stellen Sie Ihr Wallet aus dem 25-Wörter-Kombinationscode",
"restore_title_from_keys" : "Wiederherstellen von Schlüsseln",
"restore_description_from_keys" : "Stellen Sie Ihr Wallet von generiert wieder her Tastenanschläge, die von Ihren privaten Schlüsseln gespeichert wurden",
"restore_wallet_name" : "Walletname",
@@ -251,25 +258,20 @@
"router_no_route" : "Keine Route definiert für {name}",
- "error_text_account_name" : "Der Kontoname darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein",
- "error_text_contact_name" : "Im Kontaktname könne die Symbole ` , ' \" nicht enthalten sein\nund muss zwischen 1 und 32 Zeichen lang sein",
+ "error_text_empty": "Kann nicht leer sein",
"error_text_address" : "Die Walletadresse muss dem Typ der Kryptowährung\nentsprechen",
- "error_text_node_address" : "Bitte geben Sie eine iPv4-Adresse ein",
+ "error_text_node_address" : "Bitte geben Sie eine IP-Adresse ein",
"error_text_node_port" : "Der Knotenport kann nur Nummern zwischen 0 und 65535 enthalten",
"error_text_payment_id" : "Die Zahlungs-ID kann nur 16 bis 64 hexadezimale Zeichen enthalten",
- "error_text_oxen" : "Der OXEN-Wert kann das verfügbare Guthaben nicht überschreiten.\nDie Anzahl der Nachkommastellen muss kleiner oder gleich 12 sein",
+ "error_text_oxen" : "Der OXEN-Wert kann das verfügbare Guthaben nicht überschreiten.\nDie Anzahl der Nachkommastellen muss kleiner oder gleich 9 sein",
"error_text_fiat" : "Der Wert des Betrags darf den verfügbaren Kontostand nicht überschreiten.\nDie Anzahl der Nachkommastellen muss kleiner oder gleich 2 sein",
- "error_text_subaddress_name" : "Im Namen der Unteradresse könne die Symbole ` , ' \" nicht enthalten sein\nund muss zwischen 1 und 20 Zeichen lang sein",
"error_text_amount" : "Betrag kann nur Zahlen enthalten",
- "error_text_wallet_name" : "Der Walletname darf nur Buchstaben und Zahlen enthalten\nund muss zwischen 1 und 15 Zeichen lang sein",
"error_text_keys" : "Walletschlüssel können nur 64 hexadezimale Zeichen enthalten",
- "error_text_crypto_currency" : "Die Anzahl der Nachkommastellen\nmuss kleiner oder gleich 12 sein.",
+ "error_text_crypto_currency" : "Die Anzahl der Nachkommastellen\nmuss kleiner oder gleich 9 sein.",
"error_text_service_node": "Service Node Schlüssel können nur 64 hexadezimale Zeichen enthalten",
- "auth_store_ban_timeout" : "Auszeit verbieten",
- "auth_store_banned_for" : "Gebannt für ",
- "auth_store_banned_minutes" : " Protokoll",
+ "auth_store_banned_for" : "{mins} Minuten gebannt.",
"auth_store_incorrect_password" : "Falsches PIN",
"wallet_restoration_store_incorrect_seed_length" : "Falsche Seed-länge",
@@ -298,6 +300,7 @@
"restore_from_seed_placeholder" : "Bitte geben Sie hier Ihren Code ein",
"add_new_word" : "Neues Wort hinzufügen",
"incorrect_seed" : "Der eingegebene Text ist ungültig.",
+ "invalid_seed_words": "\nUngültige Wörter: {words}.",
"biometric_auth_reason" : "Scannen Sie Ihren Fingerabdruck zur Authentifizierung",
"version" : "Ausführung {currentVersion}",
diff --git a/lib/l10n/intl_en.arb b/lib/l10n/app_en.arb
similarity index 79%
rename from lib/l10n/intl_en.arb
rename to lib/l10n/app_en.arb
index 72a08498..f38d4a2d 100644
--- a/lib/l10n/intl_en.arb
+++ b/lib/l10n/app_en.arb
@@ -20,15 +20,19 @@
"contact_name" : "Contact Name",
"reset" : "Reset",
"save" : "Save",
+ "remove_contact" : "Remove Contact",
+ "remove_contact_confirm" : "Are you sure that you want to remove the selected contact?",
"authenticated" : "Authenticated",
"authentication" : "Authentication",
"failed_authentication" : "Failed authentication. {state_error}",
+ "@failed_authentication" : { "placeholders": { "state_error": {} } },
"wallet_menu" : "Menu",
- "Blocks_remaining" : "{status} Blocks Remaining",
+ "blocks_remaining" : "{status} Blocks Remaining",
+ "@blocks_remaining" : { "placeholders": { "status": {} } },
"please_try_to_connect_to_another_node" : "Please try to connect to another node",
"oxen_hidden" : "OXEN Hidden",
"oxen_available_balance" : "OXEN Available Balance",
@@ -44,6 +48,7 @@
"yesterday" : "Yesterday",
"received" : "Received",
"sent" : "Sent",
+ "stake" : "Stake",
"pending" : " (pending)",
"rescan" : "Rescan",
"reconnect" : "Reconnect",
@@ -67,7 +72,9 @@
"status" : "Status: ",
"confirm" : "Confirm",
"confirm_sending" : "Confirm sending",
- "commit_transaction_amount_fee" : "Commit transaction\nAmount: {amount}\nFee: {fee}",
+ "confirm_stake" : "Confirm stake",
+ "confirm_transaction_amount_fee" : "Amount: {amount}\nFee: {fee}",
+ "@confirm_transaction_amount_fee" : { "placeholders": { "amount": {}, "fee": {} } },
"sending" : "Sending",
"transaction_sent" : "Transaction sent!",
"send_oxen" : "Send OXEN",
@@ -85,6 +92,10 @@
"continue_text" : "Continue",
+ "remove_wallet_confirmation": "Are you sure you want to delete this wallet?",
+ "dangerzone_remove_wallet_warning": "If you have not saved your seed phrase then any funds sent to this wallet will be lost forever!",
+
+
"node_new" : "New Node",
"node_address" : "Node Address",
"node_port" : "Node port",
@@ -94,6 +105,7 @@
"node_reset_settings_title" : "Reset settings",
"nodes_list_reset_to_default_message" : "Are you sure that you want to reset settings to default?",
"change_current_node" : "Are you sure to change current node to {node}?",
+ "@change_current_node" : { "placeholders": { "node": {} }},
"change" : "Change",
"remove_node" : "Remove node",
"remove_node_message" : "Are you sure that you want to remove selected node?",
@@ -101,8 +113,8 @@
"delete" : "Delete",
- "use" : "Switch to ",
- "digit_pin" : "-digit PIN",
+ "use_n_digit_pin" : "Switch to {n}-digit PIN",
+ "@use_n_digit_pin" : { "placeholders": { "n": {} }},
"share_address" : "Share address",
@@ -118,7 +130,7 @@
"restore_description_from_backup" : "You can restore the whole Oxen Wallet app from your back-up file",
"restore_seed_keys_restore" : "Seed/Keys Restore",
"restore_title_from_seed" : "Restore from seed",
- "restore_description_from_seed" : "Restore your wallet from either the 25 word or 13 word combination code",
+ "restore_description_from_seed" : "Restore your wallet from the 25 word combination code",
"restore_title_from_keys" : "Restore from keys",
"restore_description_from_keys" : "Restore your wallet from generated keystrokes saved from your private keys",
"restore_wallet_name" : "Wallet name",
@@ -155,6 +167,7 @@
"send_error_currency" : "Currency can only contain numbers",
"send_estimated_fee" : "Estimated fee:",
"send_priority" : "Currently the fee is set at {transactionPriority} priority.\nTransaction priority can be adjusted in the settings",
+ "@send_priority" : { "placeholders": { "transactionPriority": {} }},
"send_creating_transaction" : "Creating transaction",
@@ -168,6 +181,7 @@
"stake_oxen": "Stake Oxen",
"title_confirm_unlock_stake": "Unlock Stake",
"body_confirm_unlock_stake": "Do you really want to unlock your stake from {serviceNodeKey}?",
+ "@body_confirm_unlock_stake" : { "placeholders": { "serviceNodeKey": {} }},
"unlock_stake_requested": "Stake unlock requested",
"unable_unlock_stake": "Unable to unlock stake",
@@ -202,7 +216,7 @@
"setup_pin" : "Setup PIN",
- "enter_your_pin_again" : "Enter your pin again",
+ "enter_your_pin_again" : "Enter your PIN again",
"setup_successful" : "Your PIN has been set up successfully!",
@@ -212,6 +226,7 @@
"spend_key_private" : "Spend key (private)",
"spend_key_public" : "Spend key (public)",
"copied_key_to_clipboard" : "Copied {key} to Clipboard",
+ "@copied_key_to_clipboard" : { "placeholders": { "key": {} }},
"new_subaddress_title" : "New subaddress",
@@ -228,6 +243,7 @@
"transaction_details_height" : "Height",
"transaction_details_amount" : "Amount",
"transaction_details_copied" : "{title} copied to Clipboard",
+ "@transaction_details_copied" : { "placeholders": { "title": {} }},
"transaction_details_recipient_address" : "Recipient address",
@@ -236,9 +252,13 @@
"wallet_list_restore_wallet" : "Restore Wallet",
"wallet_list_load_wallet" : "Load wallet",
"wallet_list_loading_wallet" : "Loading {wallet_name} wallet",
+ "@wallet_list_loading_wallet" : { "placeholders": { "wallet_name": {} }},
"wallet_list_failed_to_load" : "Failed to load {wallet_name} wallet. {error}",
+ "@wallet_list_failed_to_load" : { "placeholders": { "wallet_name": {}, "error": {} }},
"wallet_list_removing_wallet" : "Removing {wallet_name} wallet",
- "wallet_list_failed_to_remove" : "Failed to remove {wallet_name} wallet. {error}",
+ "@wallet_list_removing_wallet" : { "placeholders": { "wallet_name": {} }},
+ "wallet_list_failed_to_remove" : "Failed to remove {wallet_name} wallet: {error}",
+ "@wallet_list_failed_to_remove" : { "placeholders": { "wallet_name": {}, "error": {} }},
"widgets_address" : "Address",
@@ -249,27 +269,24 @@
"router_no_route" : "No route defined for {name}",
+ "@router_no_route" : { "placeholders": { "name": {} }},
- "error_text_account_name" : "Account name can only contain letters, numbers\nand must be between 1 and 15 characters long",
- "error_text_contact_name" : "Contact name can't contain ` , ' \" symbols\nand must be between 1 and 32 characters long",
- "error_text_address" : "Wallet address must correspond to the type\nof cryptocurrency",
- "error_text_node_address" : "Please enter a iPv4 address",
- "error_text_node_port" : "Node port can only contain numbers between 0 and 65535",
+ "error_text_empty": "Cannot be empty",
+ "error_text_address" : "Invalid OXEN wallet address!",
+ "error_text_node_address" : "Please enter a valid hostname or IP address",
+ "error_text_node_port" : "Node port can only contain numbers between 1 and 65535",
"error_text_payment_id" : "Payment ID can only contain from 16 to 64 chars in hex",
- "error_text_oxen" : "OXEN value can't exceed available balance.\nThe number of fraction digits must be less or equal to 12",
+ "error_text_oxen" : "OXEN value can't exceed available balance.\nThe number of fraction digits must be less or equal to 9",
"error_text_fiat" : "Value of amount can't exceed available balance.\nThe number of fraction digits must be less or equal to 2",
- "error_text_subaddress_name" : "Subaddress name can't contain ` , ' \" symbols\nand must be between 1 and 20 characters long",
"error_text_amount" : "Amount can only contain numbers",
- "error_text_wallet_name" : "Wallet name can only contain letters, numbers\nand must be between 1 and 15 characters long",
"error_text_keys" : "Wallet keys can only contain 64 chars in hex",
- "error_text_crypto_currency" : "The number of fraction digits\nmust be less or equal to 12",
+ "error_text_crypto_currency" : "The number of fraction digits\nmust be less or equal to 9",
"error_text_service_node" : "A Service Node key can only contain 64 chars in hex",
- "auth_store_ban_timeout" : "ban_timeout",
- "auth_store_banned_for" : "Banned for ",
- "auth_store_banned_minutes" : " minutes",
+ "auth_store_banned_for" : "Banned for {mins} minutes",
+ "@auth_store_banned_for": { "placeholders": {"mins": {}}},
"auth_store_incorrect_password" : "Wrong PIN",
"wallet_restoration_store_incorrect_seed_length" : "Incorrect seed length",
@@ -294,21 +311,28 @@
"change_language" : "Change language",
"change_language_to" : "Change language to {language}?",
+ "@change_language_to" : { "placeholders": { "language": {} }},
"paste" : "Paste",
"restore_from_seed_placeholder" : "Please enter or paste your seed here",
"add_new_word" : "Add new word",
"incorrect_seed" : "The text entered is not valid.",
+ "invalid_seed_words" : "\nInvalid seed words: {words}.",
+ "@invalid_seed_words" : { "placeholders": {"words": {}}},
"biometric_auth_reason" : "Scan your fingerprint to authenticate",
"version" : "Version {currentVersion}",
+ "@version" : { "placeholders": { "currentVersion": {} }},
"openalias_alert_title" : "OXEN Recipient Detected",
"openalias_alert_content" : "You will be sending funds to\n{recipient_name}",
+ "@openalias_alert_content" : { "placeholders": { "recipient_name": {} }},
"dangerzone": "Dangerzone",
"yes_im_sure": "Yes, I'm sure!",
"never_give_your": "NEVER give your Oxen wallet {item} to ANYONE!",
+ "@never_give_your" : { "placeholders": { "item": {} }},
"dangerzone_warning": "NEVER input your Oxen wallet {item} into any software or website other than the OFFICIAL Oxen wallets downloaded directly from the {app_store}, the Oxen website, or the Oxen GitHub.\nAre you sure you want to access your wallet {item}?",
+ "@dangerzone_warning" : { "placeholders": { "item": {}, "app_store": {} }},
"keys_title": "Keys"
}
diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/app_fr.arb
similarity index 90%
rename from lib/l10n/intl_fr.arb
rename to lib/l10n/app_fr.arb
index 907b2db3..db063f6c 100644
--- a/lib/l10n/intl_fr.arb
+++ b/lib/l10n/app_fr.arb
@@ -20,6 +20,8 @@
"contact_name" : "Nom du contact",
"reset" : "Réinitialiser",
"save" : "Sauvegarder",
+ "remove_contact" : "Supprimer le Contact",
+ "remove_contact_confirm" : "Êtes vous sûr de vouloir supprimer le contact sélectionné?",
"authenticated" : "Authentifié",
@@ -28,7 +30,7 @@
"wallet_menu" : "Menu du portefeuille",
- "Blocks_remaining" : "{status} blocs restants",
+ "blocks_remaining" : "{status} blocs restants",
"please_try_to_connect_to_another_node" : "veuillez essayer de vous connecter à un autre node",
"oxen_hidden" : "OXEN caché",
"oxen_available_balance" : "OXEN solde disponible",
@@ -44,6 +46,7 @@
"yesterday" : "hier",
"received" : "a reçu",
"sent" : "expédié",
+ "stake" : "Stake",
"pending" : " (en attente)",
"rescan" : "réanalyser",
"reconnect" : "se reconnecter",
@@ -66,8 +69,9 @@
"amount" : "Montant: ",
"status" : "Statut: ",
"confirm" : "confirmer",
- "confirm_sending" : "confirmer l'envoi",
- "commit_transaction_amount_fee" : "Valider la transaction\nMontant: {amount}\nFee: {fee}",
+ "confirm_sending" : "Confirmer l'envoi",
+ "confirm_stake" : "Confirmer le Stake",
+ "confirm_transaction_amount_fee" : "Montant: {amount} OXEN\nFee: {fee} OXEN",
"sending" : "Envoyer",
"transaction_sent" : "Transaction envoyé!",
"send_oxen" : "Envoyer OXEN",
@@ -85,6 +89,10 @@
"continue_text" : "Continuez",
+ "remove_wallet_confirmation": "Êtes vous sûr de vouloir supprimer ce wallet?",
+ "dangerzone_remove_wallet_warning": "Si vous n'avez pas sauvegardé votre phrase de récupération tous les fonds envoyés sur ce wallet seront perdus pour toujours!",
+
+
"node_new" : "Nouveau Node",
"node_address" : "L'adresse du Node",
"node_port" : "Port du Node",
@@ -101,8 +109,7 @@
"delete" : "effacer",
- "use" : "Basculer vers ",
- "digit_pin" : "-chiffre PIN",
+ "use_n_digit_pin" : "Basculer vers {n}-chiffre PIN",
"share_address" : "Partager l'adresse ",
@@ -118,7 +125,7 @@
"restore_description_from_backup" : "Vous pouvez restaurer l'intégralité de l'application Oxen Wallet à partir de son fichier de sauvegarde.",
"restore_seed_keys_restore" : "Restaurer depuis le Seed ou les clés",
"restore_title_from_seed" : "Restaurer à partir du Seed",
- "restore_description_from_seed" : "Récupérez votre portefeuille à partir du code de combinaison de 25 ou 13 mots",
+ "restore_description_from_seed" : "Récupérez votre portefeuille à partir du code de combinaison de 25 mots",
"restore_title_from_keys" : "Récupération des clés",
"restore_description_from_keys" : "Restaurez votre portefeuille à partir du mnemonic généré à partir de vos clés privées",
"restore_wallet_name" : "Nom du portefeuille",
@@ -251,25 +258,20 @@
"router_no_route" : "Aucun itinéraire défini pour {name}",
- "error_text_account_name" : "Le nom du compte ne peut contenir que des lettres et des chiffres\net doit comporter entre 1 et 15 caractères",
- "error_text_contact_name" : "Dans le nom du contact, les symboles ` , ' \" ne doivent pas être inclus\net doit comporter entre 1 et 32 caractères",
- "error_text_address" : "L'adresse du portefeuille doit correspondre au type de crypto-monnaie",
- "error_text_node_address" : "Veuillez saisir une adresse iPv4",
+ "error_text_empty": "Ne peux pas être vide",
+ "error_text_address" : "Adresse de portefeuille OXEN invalide!",
+ "error_text_node_address" : "Veuillez saisir une adresse IP",
"error_text_node_port" : "Le port du Node ne peut contenir que des nombres compris entre 0 et 65535",
"error_text_payment_id" : "L'ID de paiement ne peut contenir que 16 à 64 caractères hexadécimaux",
- "error_text_oxen" : "La valeur OXEN ne peut pas dépasser le solde disponible.\nLe nombre de décimales doit être inférieur ou égal à 12",
+ "error_text_oxen" : "La valeur OXEN ne peut pas dépasser le solde disponible.\nLe nombre de décimales doit être inférieur ou égal à 9",
"error_text_fiat" : "La valeur du montant ne peut pas dépasser le solde disponible du compte.\nLe nombre de décimales doit être inférieur ou égal à 2",
- "error_text_subaddress_name" : "Au nom de la sous-adresse, les symboles ` , ' \" ne pas être inclus\net doit comporter entre 1 et 20 caractères",
"error_text_amount" : "Le montant ne peut contenir que des nombres",
- "error_text_wallet_name" : "Le nom du portefeuille ne peut contenir que des lettres et des chiffres\net doit comporter entre 1 et 15 caractères",
"error_text_keys" : "Les clés de portefeuille ne peuvent contenir que 64 caractères hexadécimaux",
- "error_text_crypto_currency" : "Le nombre de décimales\nm doit être inférieur ou égal à 12.",
+ "error_text_crypto_currency" : "Le nombre de décimales\nm doit être inférieur ou égal à 9.",
"error_text_service_node" : "Une clé de nœud de service ne peut contenir que 64 caractères maximum",
- "auth_store_ban_timeout" : "Interdire le délai d'expiration",
- "auth_store_banned_for" : "Interdit pour ",
- "auth_store_banned_minutes" : " Protocole",
+ "auth_store_banned_for" : "Interdit pendant {mins} minutes",
"auth_store_incorrect_password" : "mauvais code PIN",
"wallet_restoration_store_incorrect_seed_length" : "mauvaise longueur du Seed",
@@ -299,6 +301,7 @@
"restore_from_seed_placeholder" : "Veuillez entrer votre code ici",
"add_new_word" : "Ajouter un nouveau mot",
"incorrect_seed" : "Le texte saisi n'est pas valide.",
+ "invalid_seed_words": "\nMots invalide: {words}.",
"biometric_auth_reason" : "Scannez votre empreinte digitale pour l'authentification",
"version" : "Version {currentVersion}",
diff --git a/lib/main.dart b/lib/main.dart
index 051a44da..b547f114 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,4 +1,3 @@
-import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:oxen_wallet/src/wallet/oxen/transaction/transaction_priority.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -32,8 +31,7 @@ import 'package:oxen_wallet/src/domain/common/default_settings_migration.dart';
import 'package:oxen_wallet/src/domain/common/fiat_currency.dart';
import 'package:oxen_wallet/src/wallet/wallet_type.dart';
import 'package:oxen_wallet/src/domain/services/wallet_service.dart';
-import 'package:oxen_wallet/generated/l10n.dart';
-import 'package:oxen_wallet/src/domain/common/language.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:oxen_wallet/src/stores/seed_language/seed_language_store.dart';
void main() async {
@@ -57,7 +55,7 @@ void main() async {
final nodes = await Hive.openBox(Node.boxName);
final transactionDescriptions = await Hive.openBox(
TransactionDescription.boxName,
- encryptionKey: transactionDescriptionsBoxKey);
+ encryptionCipher: HiveAesCipher(transactionDescriptionsBoxKey));
final walletInfoSource = await Hive.openBox(WalletInfo.boxName);
final sharedPreferences = await SharedPreferences.getInstance();
@@ -121,7 +119,7 @@ void main() async {
Provider(create: (_) => transactionDescriptions),
Provider(create: (_) => seedLanguageStore)
], child: OxenWalletApp()));
- } catch (e) {
+ } catch (e, trace) {
runApp(MaterialApp(
debugShowCheckedModeBanner: true,
home: Scaffold(
@@ -129,7 +127,7 @@ void main() async {
margin:
EdgeInsets.only(top: 50, left: 20, right: 20, bottom: 20),
child: Text(
- 'Error:\n${e.toString()}',
+ 'Error:\n${e.toString()}\n${trace.toString()}',
style: TextStyle(fontSize: 22),
)
)
@@ -139,13 +137,11 @@ void main() async {
}
Future initialSetup(
- {WalletListService walletListService,
- SharedPreferences sharedPreferences,
- Box nodes,
- AuthenticationStore authStore,
- int initialMigrationVersion = 1,
- WalletType initialWalletType = WalletType.oxen}) async {
- await walletListService.changeWalletManger(walletType: initialWalletType);
+ {required WalletListService walletListService,
+ required SharedPreferences sharedPreferences,
+ required Box nodes,
+ required AuthenticationStore authStore,
+ required int initialMigrationVersion}) async {
await defaultSettingsMigration(
version: initialMigrationVersion,
sharedPreferences: sharedPreferences,
@@ -167,9 +163,7 @@ class OxenWalletApp extends StatelessWidget {
return ChangeNotifierProvider(
create: (_) => ThemeChanger(
settingsStore.isDarkTheme ? Themes.darkTheme : Themes.lightTheme),
- child: ChangeNotifierProvider(
- create: (_) => Language(settingsStore.languageCode),
- child: MaterialAppWithTheme()));
+ child: MaterialAppWithTheme());
}
}
@@ -188,7 +182,6 @@ class MaterialAppWithTheme extends StatelessWidget {
final theme = Provider.of(context);
final statusBarColor =
settingsStore.isDarkTheme ? Colors.black : Colors.white;
- final currentLanguage = Provider.of(context);
final contacts = Provider.of>(context);
final nodes = Provider.of>(context);
final transactionDescriptions =
@@ -200,14 +193,8 @@ class MaterialAppWithTheme extends StatelessWidget {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: theme.getTheme(),
- localizationsDelegates: [
- S.delegate,
- GlobalCupertinoLocalizations.delegate,
- GlobalMaterialLocalizations.delegate,
- GlobalWidgetsLocalizations.delegate,
- ],
- supportedLocales: S.delegate.supportedLocales,
- locale: Locale(currentLanguage.getCurrentLanguage()),
+ localizationsDelegates: AppLocalizations.localizationsDelegates,
+ supportedLocales: AppLocalizations.supportedLocales,
onGenerateRoute: (settings) => oxenroute.Router.generateRoute(
sharedPreferences: sharedPreferences,
walletListService: walletListService,
diff --git a/lib/palette.dart b/lib/palette.dart
index de71f3eb..a1652624 100644
--- a/lib/palette.dart
+++ b/lib/palette.dart
@@ -83,6 +83,7 @@ class OxenPalette {
static const Color black = Color.fromRGBO(0, 0, 0, 1.0); // #000000
// Opacity
+ static const Color navyWithOpacity = Color.fromRGBO(31, 28, 71, 0.8);
static const Color tealWithOpacity = Color.fromRGBO(18, 199, 186, 0.2);
static const Color lightRedWithOpacity = Color.fromRGBO(255, 122, 135, 0.5);
static const Color limeWithOpacity = Color.fromRGBO(195, 245, 58, 0.5);
diff --git a/lib/router.dart b/lib/router.dart
index a5ba9114..3b315284 100644
--- a/lib/router.dart
+++ b/lib/router.dart
@@ -1,9 +1,8 @@
-import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hive/hive.dart';
-import 'package:oxen_wallet/generated/l10n.dart';
import 'package:oxen_wallet/routes.dart';
+import 'package:oxen_wallet/l10n.dart';
// MARK: Import domains
import 'package:oxen_wallet/src/domain/common/contact.dart';
@@ -40,7 +39,6 @@ import 'package:oxen_wallet/src/screens/restore/restore_wallet_options_page.dart
import 'package:oxen_wallet/src/screens/seed/create_seed_page.dart';
import 'package:oxen_wallet/src/screens/seed_language/seed_language_page.dart';
import 'package:oxen_wallet/src/screens/send/send_page.dart';
-import 'package:oxen_wallet/src/screens/settings/change_language.dart';
import 'package:oxen_wallet/src/screens/settings/settings.dart';
import 'package:oxen_wallet/src/screens/setup_pin_code/setup_pin_code.dart';
import 'package:oxen_wallet/src/screens/show_keys/show_keys_page.dart';
@@ -72,7 +70,7 @@ import 'package:oxen_wallet/src/stores/wallet/wallet_store.dart';
import 'package:oxen_wallet/src/stores/wallet_creation/wallet_creation_store.dart';
import 'package:oxen_wallet/src/stores/wallet_list/wallet_list_store.dart';
import 'package:oxen_wallet/src/stores/wallet_restoration/wallet_restoration_store.dart';
-import 'package:oxen_wallet/src/wallet/mnemotic_item.dart';
+import 'package:oxen_wallet/src/wallet/mnemonic_item.dart';
import 'package:oxen_wallet/src/wallet/oxen/account.dart';
import 'package:oxen_wallet/src/wallet/oxen/subaddress.dart';
import 'package:oxen_wallet/src/wallet/oxen/transaction/transaction_description.dart';
@@ -82,19 +80,19 @@ import 'package:shared_preferences/shared_preferences.dart';
class Router {
static Route generateRoute(
- {SharedPreferences sharedPreferences,
- WalletListService walletListService,
- WalletService walletService,
- UserService userService,
- RouteSettings settings,
- PriceStore priceStore,
- WalletStore walletStore,
- SyncStore syncStore,
- BalanceStore balanceStore,
- SettingsStore settingsStore,
- Box contacts,
- Box nodes,
- Box transactionDescriptions}) {
+ {required SharedPreferences sharedPreferences,
+ required WalletListService walletListService,
+ required WalletService walletService,
+ required UserService userService,
+ required RouteSettings settings,
+ required PriceStore priceStore,
+ required WalletStore walletStore,
+ required SyncStore syncStore,
+ required BalanceStore balanceStore,
+ required SettingsStore settingsStore,
+ required Box contacts,
+ required Box nodes,
+ required Box transactionDescriptions}) {
switch (settings.name) {
case Routes.welcome:
return MaterialPageRoute(builder: (_) => WelcomePage());
@@ -125,7 +123,7 @@ class Router {
sharedPreferences: sharedPreferences)));
case Routes.setupPin:
- Function(BuildContext, String) callback;
+ Function(BuildContext, String)? callback;
if (settings.arguments is Function(BuildContext, String)) {
callback = settings.arguments as Function(BuildContext, String);
@@ -164,7 +162,7 @@ class Router {
builder: (_) => createSeedPage(
settingsStore: settingsStore,
walletService: walletService,
- callback: settings.arguments as void Function()));
+ callback: settings.arguments as void Function()?));
case Routes.restoreWalletFromSeed:
return MaterialPageRoute(
@@ -218,6 +216,7 @@ class Router {
create: (_) => SendStore(
walletService: walletService,
priceStore: priceStore,
+ settingsStore: settingsStore,
transactionDescriptions: transactionDescriptions)),
], child: SendPage()));
@@ -324,7 +323,7 @@ class Router {
return MaterialPageRoute(builder: (context) {
return Provider(
create: (_) => AccountListStore(walletService: walletService),
- child: AccountPage(account: settings.arguments as Account));
+ child: AccountPage(account: settings.arguments as Account?));
});
case Routes.addressBook:
@@ -357,12 +356,10 @@ class Router {
return MaterialPageRoute(builder: (context) {
return MultiProvider(
providers: [
- Provider(
- create: (_) =>
- AccountListStore(walletService: walletService)),
+ Provider(create: (_) => AccountListStore(walletService: walletService)),
Provider(create: (_) => AddressBookStore(contacts: contacts))
],
- child: ContactPage(contact: settings.arguments as Contact),
+ child: ContactPage(contact: settings.arguments as Contact?),
);
});
@@ -413,7 +410,7 @@ class Router {
authStore: authStore,
sharedPreferences: sharedPreferences,
walletListService: walletListService,
- seed: settings.arguments as List),
+ seed: settings.arguments as List),
child: RestoreWalletFromSeedDetailsPage()));
case Routes.settings:
@@ -434,9 +431,6 @@ class Router {
case Routes.changelog:
return MaterialPageRoute(builder: (_) => ChangelogPage());
- case Routes.changeLanguage:
- return MaterialPageRoute(builder: (_) => ChangeLanguage());
-
case Routes.profile:
return MaterialPageRoute(builder: (_) => ProfilePage());
@@ -459,15 +453,16 @@ class Router {
Provider(
create: (_) => SendStore(
walletService: walletService,
+ settingsStore: settingsStore,
priceStore: priceStore,
transactionDescriptions: transactionDescriptions)),
], child: NewStakePage()));
default:
return MaterialPageRoute(
- builder: (_) => Scaffold(
+ builder: (context) => Scaffold(
body: Center(
- child: Text(S.current.router_no_route(settings.name))),
+ child: Text(tr(context).router_no_route(settings.name ?? 'null'))),
));
}
}
diff --git a/lib/src/domain/common/balance_display_mode.dart b/lib/src/domain/common/balance_display_mode.dart
index 50c85db1..cd78075f 100644
--- a/lib/src/domain/common/balance_display_mode.dart
+++ b/lib/src/domain/common/balance_display_mode.dart
@@ -1,46 +1,41 @@
-import 'package:flutter/foundation.dart';
-import 'package:oxen_wallet/generated/l10n.dart';
+import 'package:oxen_wallet/l10n.dart';
import 'package:oxen_wallet/src/domain/common/enumerable_item.dart';
class BalanceDisplayMode extends EnumerableItem with Serializable {
- const BalanceDisplayMode({@required String title, @required int raw})
- : super(title: title, raw: raw);
+ const BalanceDisplayMode({required int raw})
+ : super(raw: raw);
static const all = [
BalanceDisplayMode.fullBalance,
BalanceDisplayMode.availableBalance,
BalanceDisplayMode.hiddenBalance
];
- static const fullBalance = BalanceDisplayMode(raw: 0, title: 'Full Balance');
- static const availableBalance =
- BalanceDisplayMode(raw: 1, title: 'Available Balance');
- static const hiddenBalance =
- BalanceDisplayMode(raw: 2, title: 'Hidden Balance');
+ static const fullBalance = BalanceDisplayMode(raw: 0);
+ static const availableBalance = BalanceDisplayMode(raw: 1);
+ static const hiddenBalance = BalanceDisplayMode(raw: 2);
- static BalanceDisplayMode deserialize({int raw}) {
+ static BalanceDisplayMode deserialize({required int? raw}) {
switch (raw) {
case 0:
return fullBalance;
- case 1:
- return availableBalance;
case 2:
return hiddenBalance;
+ case 1:
default:
- return null;
+ return availableBalance;
}
}
@override
- String toString() {
+ String getTitle(AppLocalizations l10n) {
switch (this) {
case BalanceDisplayMode.fullBalance:
- return S.current.oxen_full_balance;
- case BalanceDisplayMode.availableBalance:
- return S.current.oxen_available_balance;
+ return l10n.oxen_full_balance;
case BalanceDisplayMode.hiddenBalance:
- return S.current.oxen_hidden;
+ return l10n.oxen_hidden;
+ case BalanceDisplayMode.availableBalance:
default:
- return '';
+ return l10n.oxen_available_balance;
}
}
}
diff --git a/lib/src/domain/common/biometric_auth.dart b/lib/src/domain/common/biometric_auth.dart
index 01d04c62..b9a351ca 100644
--- a/lib/src/domain/common/biometric_auth.dart
+++ b/lib/src/domain/common/biometric_auth.dart
@@ -1,14 +1,15 @@
import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';
-import 'package:oxen_wallet/generated/l10n.dart';
+import 'package:oxen_wallet/l10n.dart';
class BiometricAuth {
- Future isAuthenticated() async {
+ Future isAuthenticated(AppLocalizations t) async {
final _localAuth = LocalAuthentication();
try {
- return await _localAuth.authenticateWithBiometrics(
- localizedReason: S.current.biometric_auth_reason,
+ return await _localAuth.authenticate(
+ biometricOnly: true,
+ localizedReason: t.biometric_auth_reason,
useErrorDialogs: true,
stickyAuth: false);
} on PlatformException catch (e) {
diff --git a/lib/src/domain/common/calculate_fiat_amount.dart b/lib/src/domain/common/calculate_fiat_amount.dart
index f35844a0..1257d3ff 100644
--- a/lib/src/domain/common/calculate_fiat_amount.dart
+++ b/lib/src/domain/common/calculate_fiat_amount.dart
@@ -1,9 +1,8 @@
import 'package:oxen_wallet/src/wallet/oxen/oxen_amount_format.dart';
-String calculateFiatAmount({double price, int cryptoAmount}) {
- if (price == null || cryptoAmount == null) {
+String calculateFiatAmount({required double price, required int cryptoAmount}) {
+ if (price.isNaN || price <= 0.0 || cryptoAmount <= 0)
return '0.00';
- }
final result = price * oxenAmountToDouble(cryptoAmount);
if (result == 0.0) {
@@ -11,4 +10,4 @@ String calculateFiatAmount({double price, int cryptoAmount}) {
}
return result > 0.01 ? result.toStringAsFixed(2) : '< 0.01';
-}
\ No newline at end of file
+}
diff --git a/lib/src/domain/common/calculate_fiat_amount_raw.dart b/lib/src/domain/common/calculate_fiat_amount_raw.dart
index 30db2af6..1ca93f8b 100644
--- a/lib/src/domain/common/calculate_fiat_amount_raw.dart
+++ b/lib/src/domain/common/calculate_fiat_amount_raw.dart
@@ -1,13 +1,9 @@
-String calculateFiatAmountRaw({double price, double cryptoAmount}) {
- if (price == null) {
- return '0.00';
- }
-
- final result = price * cryptoAmount;
+String calculateFiatAmountRaw({required double? price, required double cryptoAmount}) {
+ final result = (price ?? 0.0) * cryptoAmount;
if (result == 0.0) {
return '0.00';
}
return result > 0.01 ? result.toStringAsFixed(2) : '< 0.01';
-}
\ No newline at end of file
+}
diff --git a/lib/src/domain/common/contact.dart b/lib/src/domain/common/contact.dart
index 8fdaf9fa..55dca4ca 100644
--- a/lib/src/domain/common/contact.dart
+++ b/lib/src/domain/common/contact.dart
@@ -1,13 +1,10 @@
-import 'package:flutter/foundation.dart';
import 'package:hive/hive.dart';
-import 'package:oxen_wallet/src/domain/common/crypto_currency.dart';
part 'contact.g.dart';
@HiveType(typeId: 0)
class Contact extends HiveObject {
- Contact({@required this.name, @required this.address, CryptoCurrency type})
- : raw = type?.raw;
+ Contact({required this.name, required this.address, this.raw = 0});
static const boxName = 'Contacts';
@@ -17,11 +14,7 @@ class Contact extends HiveObject {
@HiveField(1)
String address;
+ // unused
@HiveField(2)
int raw;
-
- CryptoCurrency get type => CryptoCurrency.deserialize(raw: raw);
-
- void updateCryptoCurrency({@required CryptoCurrency currency}) =>
- raw = currency.raw;
}
diff --git a/lib/src/domain/common/crypto_currency.dart b/lib/src/domain/common/crypto_currency.dart
deleted file mode 100644
index 48d99df4..00000000
--- a/lib/src/domain/common/crypto_currency.dart
+++ /dev/null
@@ -1,122 +0,0 @@
-import 'package:oxen_wallet/src/domain/common/enumerable_item.dart';
-import 'package:hive/hive.dart';
-
-part 'crypto_currency.g.dart';
-
-@HiveType(typeId: 0)
-class CryptoCurrency extends EnumerableItem with Serializable {
- const CryptoCurrency({final String title, final int raw})
- : super(title: title, raw: raw);
-
- static const all = [
- CryptoCurrency.oxen,
- CryptoCurrency.ada,
- CryptoCurrency.bch,
- CryptoCurrency.bnb,
- CryptoCurrency.btc,
- CryptoCurrency.dash,
- CryptoCurrency.eos,
- CryptoCurrency.eth,
- CryptoCurrency.ltc,
- CryptoCurrency.nano,
- CryptoCurrency.trx,
- CryptoCurrency.usdt,
- CryptoCurrency.xlm,
- CryptoCurrency.xrp,
- CryptoCurrency.xmr
- ];
-
- static const oxen = CryptoCurrency(title: 'OXEN', raw: 0);
- static const ada = CryptoCurrency(title: 'ADA', raw: 1);
- static const bch = CryptoCurrency(title: 'BCH', raw: 2);
- static const bnb = CryptoCurrency(title: 'BNB', raw: 3);
- static const btc = CryptoCurrency(title: 'BTC', raw: 4);
- static const dash = CryptoCurrency(title: 'DASH', raw: 5);
- static const eos = CryptoCurrency(title: 'EOS', raw: 6);
- static const eth = CryptoCurrency(title: 'ETH', raw: 7);
- static const ltc = CryptoCurrency(title: 'LTC', raw: 8);
- static const nano = CryptoCurrency(title: 'NANO', raw: 9);
- static const trx = CryptoCurrency(title: 'TRX', raw: 10);
- static const usdt = CryptoCurrency(title: 'USDT', raw: 11);
- static const xlm = CryptoCurrency(title: 'XLM', raw: 12);
- static const xrp = CryptoCurrency(title: 'XRP', raw: 13);
- static const xmr = CryptoCurrency(title: 'XMR', raw: 14);
-
-
- static CryptoCurrency deserialize({int raw}) {
- switch (raw) {
- case 0:
- return CryptoCurrency.oxen;
- case 1:
- return CryptoCurrency.ada;
- case 2:
- return CryptoCurrency.bch;
- case 3:
- return CryptoCurrency.bnb;
- case 4:
- return CryptoCurrency.btc;
- case 5:
- return CryptoCurrency.dash;
- case 6:
- return CryptoCurrency.eos;
- case 7:
- return CryptoCurrency.eth;
- case 8:
- return CryptoCurrency.ltc;
- case 9:
- return CryptoCurrency.nano;
- case 10:
- return CryptoCurrency.trx;
- case 11:
- return CryptoCurrency.usdt;
- case 12:
- return CryptoCurrency.xlm;
- case 13:
- return CryptoCurrency.xrp;
- case 14:
- return CryptoCurrency.xmr;
- default:
- return null;
- }
- }
-
- static CryptoCurrency fromString(String raw) {
- switch (raw.toLowerCase()) {
- case 'oxen':
- return CryptoCurrency.oxen;
- case 'xmr':
- return CryptoCurrency.xmr;
- case 'ada':
- return CryptoCurrency.ada;
- case 'bch':
- return CryptoCurrency.bch;
- case 'bnb':
- return CryptoCurrency.bnb;
- case 'btc':
- return CryptoCurrency.btc;
- case 'dash':
- return CryptoCurrency.dash;
- case 'eos':
- return CryptoCurrency.eos;
- case 'eth':
- return CryptoCurrency.eth;
- case 'ltc':
- return CryptoCurrency.ltc;
- case 'nano':
- return CryptoCurrency.nano;
- case 'trx':
- return CryptoCurrency.trx;
- case 'usdt':
- return CryptoCurrency.usdt;
- case 'xlm':
- return CryptoCurrency.xlm;
- case 'xrp':
- return CryptoCurrency.xrp;
- default:
- return null;
- }
- }
-
- @override
- String toString() => title;
-}
diff --git a/lib/src/domain/common/default_settings_migration.dart b/lib/src/domain/common/default_settings_migration.dart
index 905aa3fa..41f08676 100644
--- a/lib/src/domain/common/default_settings_migration.dart
+++ b/lib/src/domain/common/default_settings_migration.dart
@@ -1,4 +1,3 @@
-import 'package:flutter/foundation.dart';
import 'package:hive/hive.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:oxen_wallet/src/node/node.dart';
@@ -8,9 +7,9 @@ import 'package:oxen_wallet/src/node/node_list.dart';
import 'package:oxen_wallet/src/wallet/oxen/transaction/transaction_priority.dart';
Future defaultSettingsMigration(
- {@required int version,
- @required SharedPreferences sharedPreferences,
- @required Box nodes}) async {
+ {required int version,
+ required SharedPreferences sharedPreferences,
+ required Box nodes}) async {
final currentVersion =
sharedPreferences.getInt('current_default_settings_migration_version') ??
0;
@@ -60,13 +59,12 @@ Future defaultSettingsMigration(
'current_default_settings_migration_version', version);
}
-Future replaceNodesMigration({@required Box nodes}) async {
+Future replaceNodesMigration({required Box nodes}) async {
final replaceNodes = {
- 'public.loki.foundation:22023':
- Node(uri: 'public.loki.foundation:22023'),
- 'nodes.hashvault.pro:22023':
- Node(uri: 'nodes.hashvault.pro:22023'),
- 'node.loki-pool.com:18081': Node(uri: 'node.loki-pool.com:18081')
+ /*
+ 'OLD-public.loki.foundation:22023':
+ Node(uri: 'NEW-public.loki.foundation:22023'),
+ */
};
nodes.values.forEach((Node node) async {
@@ -82,42 +80,39 @@ Future replaceNodesMigration({@required Box nodes}) async {
}
Future changeCurrentNodeToDefault(
- {@required SharedPreferences sharedPreferences,
- @required Box nodes}) async {
- final timeZone = DateTime.now().timeZoneOffset.inHours;
- var nodeUri = '';
+ {required SharedPreferences sharedPreferences,
+ required Box nodes}) async {
+ late String nodeUri;
- if (timeZone >= 1) { // Eurasia
+ final timeZone = DateTime.now().timeZoneOffset.inHours;
+ if (timeZone >= -1) { // Europe, Africa, Asia, Australia -- prefer OPTF EU public server
nodeUri = 'public.loki.foundation:22023';
- } else if (timeZone <= -4) { // America
+ } else { // Americas -- prefer OPTF NA public server
nodeUri = 'freyr.imaginary.stream:22023';
}
- final node = nodes.values.firstWhere((Node node) => node.uri == nodeUri) ??
- nodes.values.first;
- final nodeId = node != null ? node.key as int : 0; // 0 - England
+ final node = nodes.values.firstWhere((Node node) => node.uri == nodeUri,
+ orElse: () => nodes.values.first);
- await sharedPreferences.setInt('current_node_id', nodeId);
+ await sharedPreferences.setInt('current_node_id', node.key as int);
}
Future replaceDefaultNode(
- {@required SharedPreferences sharedPreferences,
- @required Box nodes}) async {
+ {required SharedPreferences sharedPreferences,
+ required Box nodes}) async {
const nodesForReplace = [
+ /*
'public.loki.foundation:22023',
- 'nodes.hashvault.pro:22023',
- 'node.loki-pool.com:18081'
+ */
];
final currentNodeId = sharedPreferences.getInt('current_node_id');
- final currentNode =
- nodes.values.firstWhere((Node node) => node.key == currentNodeId);
- final needToReplace =
- currentNode == null ? true : nodesForReplace.contains(currentNode.uri);
-
- if (!needToReplace) {
- return;
+ Node? currentNode;
+ try {
+ currentNode =
+ nodes.values.firstWhere((Node node) => node.key == currentNodeId);
+ } catch (_) {}
+ if (currentNode == null || nodesForReplace.contains(currentNode.uri)) {
+ await changeCurrentNodeToDefault(
+ sharedPreferences: sharedPreferences, nodes: nodes);
}
-
- await changeCurrentNodeToDefault(
- sharedPreferences: sharedPreferences, nodes: nodes);
}
diff --git a/lib/src/domain/common/encrypt.dart b/lib/src/domain/common/encrypt.dart
index 8d83f0fc..cd9d1469 100644
--- a/lib/src/domain/common/encrypt.dart
+++ b/lib/src/domain/common/encrypt.dart
@@ -1,7 +1,7 @@
import 'package:encrypt/encrypt.dart';
import 'package:oxen_wallet/.secrets.g.dart' as secrets;
-String encrypt({String source, String key, int keyLength = 16}) {
+String encrypt({required String source, required String key, int keyLength = 16}) {
final _key = Key.fromUtf8(key);
final iv = IV.fromLength(keyLength);
final encrypter = Encrypter(AES(_key));
@@ -10,7 +10,7 @@ String encrypt({String source, String key, int keyLength = 16}) {
return encrypted.base64;
}
-String decrypt({String source, String key, int keyLength = 16}) {
+String decrypt({required String source, required String key, int keyLength = 16}) {
final _key = Key.fromUtf8(key);
final iv = IV.fromLength(keyLength);
final encrypter = Encrypter(AES(_key));
@@ -19,26 +19,26 @@ String decrypt({String source, String key, int keyLength = 16}) {
return decrypted;
}
-String encodedPinCode({String pin}) {
+String encodedPinCode({required String pin}) {
final source = '${secrets.salt}$pin';
return encrypt(source: source, key: secrets.key);
}
-String decodedPinCode({String pin}) {
+String decodedPinCode({required String pin}) {
final decrypted = decrypt(source: pin, key: secrets.key);
return decrypted.substring(secrets.key.length, decrypted.length);
}
-String encodeWalletPassword({String password}) {
+String encodeWalletPassword({required String password}) {
final source = password;
final _key = secrets.shortKey + secrets.walletSalt;
return encrypt(source: source, key: _key);
}
-String decodeWalletPassword({String password}) {
+String decodeWalletPassword({required String password}) {
final source = password;
final _key = secrets.shortKey + secrets.walletSalt;
diff --git a/lib/src/domain/common/enumerable_item.dart b/lib/src/domain/common/enumerable_item.dart
index f91bff87..f9566a60 100644
--- a/lib/src/domain/common/enumerable_item.dart
+++ b/lib/src/domain/common/enumerable_item.dart
@@ -1,17 +1,15 @@
-import 'package:flutter/foundation.dart';
+import 'package:oxen_wallet/l10n.dart';
abstract class EnumerableItem {
- const EnumerableItem({@required this.title, @required this.raw});
+ const EnumerableItem({required this.raw});
final T raw;
- final String title;
- @override
- String toString() => title;
+ String getTitle(AppLocalizations t);
}
mixin Serializable on EnumerableItem {
- static Serializable deserialize({T raw}) => null;
+ static Serializable? deserialize({required T raw}) => null;
T serialize() => raw;
}
diff --git a/lib/src/domain/common/fetch_price.dart b/lib/src/domain/common/fetch_price.dart
index 688af15d..6a6607a8 100644
--- a/lib/src/domain/common/fetch_price.dart
+++ b/lib/src/domain/common/fetch_price.dart
@@ -1,12 +1,11 @@
import 'dart:convert';
-import 'package:oxen_wallet/src/domain/common/crypto_currency.dart';
import 'package:oxen_wallet/src/domain/common/fiat_currency.dart';
import 'package:http/http.dart';
const fiatApiAuthority = 'oxen.observer';
-Future fetchPriceFor({CryptoCurrency crypto, FiatCurrency fiat}) async {
+Future fetchPriceFor({required FiatCurrency fiat}) async {
var price = 0.0;
try {
diff --git a/lib/src/domain/common/fiat_currency.dart b/lib/src/domain/common/fiat_currency.dart
index 88fff068..124d07c1 100644
--- a/lib/src/domain/common/fiat_currency.dart
+++ b/lib/src/domain/common/fiat_currency.dart
@@ -1,11 +1,18 @@
import 'package:oxen_wallet/src/domain/common/enumerable_item.dart';
+import 'package:oxen_wallet/l10n.dart';
class FiatCurrency extends EnumerableItem with Serializable {
- const FiatCurrency({String symbol}) : super(title: symbol, raw: symbol);
+ const FiatCurrency({required String? symbol}) : super(raw: symbol ?? 'USD');
@override
bool operator ==(Object other) => other is FiatCurrency && other.raw == raw;
+ @override
+ String toString() => raw;
+
+ @override
+ String getTitle(AppLocalizations l10n) => raw;
+
static const all = [
FiatCurrency.aud,
FiatCurrency.bgn,
@@ -77,5 +84,5 @@ class FiatCurrency extends EnumerableItem with Serializable {
static const vef = FiatCurrency(symbol: 'VEF');
@override
- int get hashCode => raw.hashCode ^ title.hashCode;
+ int get hashCode => raw.hashCode;
}
diff --git a/lib/src/domain/common/get_encryption_key.dart b/lib/src/domain/common/get_encryption_key.dart
index 7a940070..3798cfbc 100644
--- a/lib/src/domain/common/get_encryption_key.dart
+++ b/lib/src/domain/common/get_encryption_key.dart
@@ -2,7 +2,7 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hive/hive.dart';
Future> getEncryptionKey(
- {String forKey, FlutterSecureStorage secureStorage}) async {
+ {required String forKey, required FlutterSecureStorage secureStorage}) async {
final keyFromStorage = await secureStorage.read(key: forKey);
List key;
diff --git a/lib/src/domain/common/language.dart b/lib/src/domain/common/language.dart
deleted file mode 100644
index 9a702d8d..00000000
--- a/lib/src/domain/common/language.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:devicelocale/devicelocale.dart';
-import 'package:intl/intl.dart';
-
-const Map languages = {
- 'en': 'English',
- 'de': 'Deutsch (German)',
- 'fr': 'Français (French)',
- // 'es': 'Español (Spanish)',
- // 'hi': 'हिंदी (Hindi)',
- // 'ja': '日本 (Japanese)',
- // 'ko': '한국어 (Korean)',
- // 'nl': 'Nederlands (Dutch)',
- // 'pl': 'Polski (Polish)',
- // 'pt': 'Português (Portuguese)',
- // 'ru': 'Русский (Russian)',
- // 'uk': 'Українська (Ukrainian)',
- // 'zh': '中文 (Chinese)'
-};
-
-class Language with ChangeNotifier {
- Language(this._currentLanguage);
-
- String _currentLanguage;
-
- String getCurrentLanguage() => _currentLanguage;
-
- void setCurrentLanguage(String language) {
- _currentLanguage = language;
- notifyListeners();
- }
-
- static Future localeDetection() async {
- var locale = await Devicelocale.currentLocale;
- locale = Intl.shortLocale(locale);
-
- return languages.keys.contains(locale) ? locale : 'en';
- }
-}
\ No newline at end of file
diff --git a/lib/src/domain/common/openalias_record.dart b/lib/src/domain/common/openalias_record.dart
index ec2fc6ef..28bd2795 100644
--- a/lib/src/domain/common/openalias_record.dart
+++ b/lib/src/domain/common/openalias_record.dart
@@ -2,7 +2,7 @@ import 'package:basic_utils/basic_utils.dart';
class OpenaliasRecord {
- OpenaliasRecord({this.address, this.name});
+ OpenaliasRecord({required this.address, required this.name});
final String name;
final String address;
diff --git a/lib/src/domain/common/qr_scanner.dart b/lib/src/domain/common/qr_scanner.dart
index 4a26bdde..b4d53735 100644
--- a/lib/src/domain/common/qr_scanner.dart
+++ b/lib/src/domain/common/qr_scanner.dart
@@ -1,15 +1,31 @@
-import 'package:barcode_scan/barcode_scan.dart';
+import 'package:barcode_scan2/barcode_scan2.dart';
var isQrScannerShown = false;
-Future presentQRScanner() async {
+class QRScanException implements Exception {
+ QRScanException(this.message);
+
+ String message;
+
+ @override
+ String toString() => message;
+}
+
+/// Shows the QR scanner to the user; this sets the future once the user either scans a QR code (we
+/// return the string value), cancels (we return null), or an error occurs (we throw a
+/// QRScanException).
+Future presentQRScanner() async {
isQrScannerShown = true;
try {
final result = await BarcodeScanner.scan();
isQrScannerShown = false;
- return result;
+ if (result.type == ResultType.Error)
+ throw QRScanException(result.rawContent);
+ if (result.type == ResultType.Cancelled)
+ return null;
+ return result.rawContent;
} catch (e) {
isQrScannerShown = false;
- rethrow;
+ throw QRScanException(e.toString());
}
}
diff --git a/lib/src/domain/common/secret_store_key.dart b/lib/src/domain/common/secret_store_key.dart
index a42d79f1..e0c10377 100644
--- a/lib/src/domain/common/secret_store_key.dart
+++ b/lib/src/domain/common/secret_store_key.dart
@@ -3,7 +3,7 @@ enum SecretStoreKey { moneroWalletPassword, pinCodePassword }
const moneroWalletPassword = 'MONERO_WALLET_PASSWORD';
const pinCodePassword = 'PIN_CODE_PASSWORD';
-String generateStoreKeyFor({SecretStoreKey key, String walletName = '',}) {
+String generateStoreKeyFor({required SecretStoreKey key, String walletName = '',}) {
var _key = '';
switch (key) {
@@ -19,4 +19,4 @@ String generateStoreKeyFor({SecretStoreKey key, String walletName = '',}) {
}
return _key;
-}
\ No newline at end of file
+}
diff --git a/lib/src/domain/services/user_service.dart b/lib/src/domain/services/user_service.dart
index add962c9..ed19c281 100644
--- a/lib/src/domain/services/user_service.dart
+++ b/lib/src/domain/services/user_service.dart
@@ -4,7 +4,7 @@ import 'package:oxen_wallet/src/domain/common/secret_store_key.dart';
import 'package:oxen_wallet/src/domain/common/encrypt.dart';
class UserService {
- UserService({this.sharedPreferences, this.secureStorage});
+ UserService({required this.sharedPreferences, required this.secureStorage});
final FlutterSecureStorage secureStorage;
final SharedPreferences sharedPreferences;
@@ -24,21 +24,24 @@ class UserService {
Future canAuthenticate() async {
final key = generateStoreKeyFor(key: SecretStoreKey.pinCodePassword);
final sharedPreferences = await SharedPreferences.getInstance();
- final walletName = sharedPreferences.getString('current_wallet_name') ?? '';
- var password = '';
+ final walletName = sharedPreferences.getString('current_wallet_name');
+ if (!(walletName?.isNotEmpty ?? false))
+ return false;
+ String? password;
try {
password = await secureStorage.read(key: key);
} catch (e) {
print(e);
}
-
- return walletName.isNotEmpty && password.isNotEmpty;
+ return password?.isNotEmpty ?? false;
}
Future authenticate(String pin) async {
final key = generateStoreKeyFor(key: SecretStoreKey.pinCodePassword);
final encodedPin = await secureStorage.read(key: key);
+ if (encodedPin == null)
+ return false;
final decodedPin = decodedPinCode(pin: encodedPin);
return decodedPin == pin;
diff --git a/lib/src/domain/services/wallet_list_service.dart b/lib/src/domain/services/wallet_list_service.dart
index f23fc4ed..bfb4bc10 100644
--- a/lib/src/domain/services/wallet_list_service.dart
+++ b/lib/src/domain/services/wallet_list_service.dart
@@ -1,6 +1,5 @@
import 'dart:async';
-import 'package:flutter/foundation.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:hive/hive.dart';
import 'package:oxen_wallet/src/domain/common/encrypt.dart';
@@ -10,7 +9,6 @@ import 'package:oxen_wallet/src/wallet/oxen/oxen_wallets_manager.dart';
import 'package:oxen_wallet/src/wallet/wallet.dart';
import 'package:oxen_wallet/src/wallet/wallet_description.dart';
import 'package:oxen_wallet/src/wallet/wallet_info.dart';
-import 'package:oxen_wallet/src/wallet/wallet_type.dart';
import 'package:oxen_wallet/src/wallet/wallets_manager.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:uuid/uuid.dart';
@@ -26,11 +24,12 @@ class WalletIsExistException implements Exception {
class WalletListService {
WalletListService(
- {this.secureStorage,
- this.walletInfoSource,
- this.walletsManager,
- @required this.walletService,
- @required this.sharedPreferences});
+ {required this.secureStorage,
+ required this.walletInfoSource,
+ WalletsManager? walletsManager,
+ required this.walletService,
+ required this.sharedPreferences})
+ : walletsManager = walletsManager ?? OxenWalletsManager(walletInfoSource: walletInfoSource);
final FlutterSecureStorage secureStorage;
final WalletService walletService;
@@ -107,18 +106,6 @@ class WalletListService {
await onWalletChange(wallet);
}
- Future changeWalletManger({WalletType walletType}) async {
- switch (walletType) {
- case WalletType.oxen:
- walletsManager = OxenWalletsManager(walletInfoSource: walletInfoSource);
- break;
- case WalletType.monero:
- case WalletType.none:
- walletsManager = null;
- break;
- }
- }
-
Future onWalletChange(Wallet wallet) async {
walletService.currentWallet = wallet;
final walletName = await wallet.getName();
@@ -128,15 +115,15 @@ class WalletListService {
Future remove(WalletDescription wallet) async =>
await walletsManager.remove(wallet);
- Future getWalletPassword({String walletName}) async {
+ Future getWalletPassword({required String walletName}) async {
final key = generateStoreKeyFor(
key: SecretStoreKey.moneroWalletPassword, walletName: walletName);
final encodedPassword = await secureStorage.read(key: key);
- return decodeWalletPassword(password: encodedPassword);
+ return decodeWalletPassword(password: encodedPassword!);
}
- Future saveWalletPassword({String walletName, String password}) async {
+ Future saveWalletPassword({required String walletName, required String password}) async {
final key = generateStoreKeyFor(
key: SecretStoreKey.moneroWalletPassword, walletName: walletName);
final encodedPassword = encodeWalletPassword(password: password);
diff --git a/lib/src/domain/services/wallet_service.dart b/lib/src/domain/services/wallet_service.dart
index 653fcb44..1d7f8c45 100644
--- a/lib/src/domain/services/wallet_service.dart
+++ b/lib/src/domain/services/wallet_service.dart
@@ -2,7 +2,6 @@ import 'package:oxen_wallet/src/node/node.dart';
import 'package:oxen_wallet/src/node/sync_status.dart';
import 'package:oxen_wallet/src/wallet/balance.dart';
import 'package:oxen_wallet/src/wallet/transaction/pending_transaction.dart';
-import 'package:oxen_wallet/src/wallet/transaction/transaction_creation_credentials.dart';
import 'package:oxen_wallet/src/wallet/transaction/transaction_history.dart';
import 'package:oxen_wallet/src/wallet/wallet.dart';
import 'package:oxen_wallet/src/wallet/wallet_description.dart';
@@ -10,130 +9,132 @@ import 'package:oxen_wallet/src/wallet/wallet_type.dart';
import 'package:rxdart/rxdart.dart';
class WalletService extends Wallet {
- WalletService() {
- _currentWallet = null;
- walletType = WalletType.none;
- _syncStatus = BehaviorSubject();
- _onBalanceChange = BehaviorSubject();
+ WalletService() :
+ _currentWallet = null,
+ _syncStatus = BehaviorSubject(),
+ _onBalanceChange = BehaviorSubject(),
_onWalletChanged = BehaviorSubject();
- }
@override
- Observable get onBalanceChange => _onBalanceChange.stream;
+ Stream get onBalanceChange => _onBalanceChange.stream;
@override
- Observable get syncStatus => _syncStatus.stream;
+ Stream get syncStatus => _syncStatus.stream;
@override
- Observable get onAddressChange => _currentWallet.onAddressChange;
+ Stream get onAddressChange => _currentWallet!.onAddressChange;
@override
- Observable get onNameChange => _currentWallet.onNameChange;
+ Stream get onNameChange => _currentWallet!.onNameChange;
@override
- String get address => _currentWallet.address;
+ String get address => _currentWallet!.address;
@override
- String get name => _currentWallet.name;
+ String get name => _currentWallet!.name;
@override
- WalletType get walletType => _currentWallet.walletType;
+ WalletType get walletType => _currentWallet?.walletType ?? WalletType.none;
- Observable get onWalletChange => _onWalletChanged.stream;
+ Stream get onWalletChange => _onWalletChanged.stream;
SyncStatus get syncStatusValue => _syncStatus.value;
- Wallet get currentWallet => _currentWallet;
+ Wallet? get currentWallet => _currentWallet;
- set currentWallet(Wallet wallet) {
+ set currentWallet(Wallet? wallet) {
_currentWallet = wallet;
if (wallet == null) {
return;
}
- _currentWallet.onBalanceChange
+ _currentWallet!.onBalanceChange
.listen((wallet) => _onBalanceChange.add(wallet));
- _currentWallet.syncStatus.listen((status) => _syncStatus.add(status));
+ _currentWallet!.syncStatus.listen((status) => _syncStatus.add(status));
_onWalletChanged.add(wallet);
- final type = wallet.getType();
+ final type = wallet.walletType;
wallet.getName().then(
(name) => description = WalletDescription(name: name, type: type));
}
- BehaviorSubject _onWalletChanged;
- BehaviorSubject _onBalanceChange;
- BehaviorSubject _syncStatus;
- Wallet _currentWallet;
+ final BehaviorSubject _onWalletChanged;
+ final BehaviorSubject _onBalanceChange;
+ final BehaviorSubject _syncStatus;
+ Wallet? _currentWallet;
- WalletDescription description;
+ WalletDescription? description;
@override
- WalletType getType() => WalletType.monero;
+ Future getFilename() => _currentWallet!.getFilename();
@override
- Future getFilename() => _currentWallet.getFilename();
+ Future getName() => _currentWallet!.getName();
@override
- Future getName() => _currentWallet.getName();
+ Future getAddress() => _currentWallet!.getAddress();
@override
- Future getAddress() => _currentWallet.getAddress();
+ Future getSeed() => _currentWallet!.getSeed();
@override
- Future getSeed() => _currentWallet.getSeed();
+ Future