From e274d28ba2dcd2f02b5c3167928af44da6d34cf3 Mon Sep 17 00:00:00 2001 From: fekt Date: Sat, 10 Dec 2022 22:35:25 -0500 Subject: [PATCH 01/17] Random server support --- .../main/java/cash/z/ecc/android/ext/Const.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/ext/Const.kt b/app/src/main/java/cash/z/ecc/android/ext/Const.kt index 3d5384f..3296e8e 100644 --- a/app/src/main/java/cash/z/ecc/android/ext/Const.kt +++ b/app/src/main/java/cash/z/ecc/android/ext/Const.kt @@ -1,6 +1,7 @@ package cash.z.ecc.android.ext import cash.z.ecc.android.BuildConfig +import kotlin.random.Random object Const { /** @@ -45,8 +46,19 @@ object Const { */ object Default { object Server { - // If you've forked the ECC repo, change this to your hosted lightwalletd instance - const val HOST = BuildConfig.DEFAULT_SERVER_URL + // Select a random server from list + private val serverList = listOf( + "lite.hush.is", + "lite.hushpool.is", + "wtfistheinternet.hush.is", + "lite2.hush.is", + "poop.granitefone.me", + "lite2.hushpool.is" + ) + private val randomIndex = Random.nextInt(serverList.size); + private val randomServer = serverList[randomIndex] + + val HOST = randomServer const val PORT = 443 } } From b7349c3d097af68b3d1ba776136379696beef567 Mon Sep 17 00:00:00 2001 From: fekt Date: Sun, 11 Dec 2022 10:33:30 -0500 Subject: [PATCH 02/17] Bump version, dev wallet birthday, and SDK renaming --- .../cash/z/ecc/android/ui/setup/LandingFragment.kt | 2 +- .../src/main/java/cash/z/ecc/android/Dependencies.kt | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt index fd42124..af12340 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt @@ -142,7 +142,7 @@ class LandingFragment : BaseFragment() { ZcashNetwork.Mainnet -> { seedPhrase = "still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread" - birthday = BlockHeight.new(ZcashNetwork.Mainnet, 1170000) // 663174 + birthday = BlockHeight.new(ZcashNetwork.Mainnet, 1180000) } ZcashNetwork.Testnet -> { seedPhrase = diff --git a/buildSrc/src/main/java/cash/z/ecc/android/Dependencies.kt b/buildSrc/src/main/java/cash/z/ecc/android/Dependencies.kt index 8d987b7..218dc72 100644 --- a/buildSrc/src/main/java/cash/z/ecc/android/Dependencies.kt +++ b/buildSrc/src/main/java/cash/z/ecc/android/Dependencies.kt @@ -6,11 +6,11 @@ object Deps { const val kotlinVersion = "1.7.20" const val navigationVersion = "2.5.2" - const val compileSdkVersion = 33 + const val compileSdkVersion = 31 const val minSdkVersion = 21 - const val targetSdkVersion = 33 - const val versionName = "1.0.0" - const val versionCode = 1_00_00 // last digits are alpha(0XX) beta(2XX) rc(4XX) release(8XX). Ex: 1_08_04_401 is an release candidate build of version 1.8.4 and 1_08_04_800 would be the final release. + const val targetSdkVersion = 30 + const val versionName = "1.0.1" + const val versionCode = 1_01_00 // last digits are alpha(0XX) beta(2XX) rc(4XX) release(8XX). Ex: 1_08_04_401 is an release candidate build of version 1.8.4 and 1_08_04_800 would be the final release. const val packageName = "hush.android" @@ -78,7 +78,7 @@ object Deps { ./gradlew build ./gradlew build publishToMavenLocal */ - const val SDK = "cash.z.ecc.android:zcash-android-sdk:1.9.0-beta01-SNAPSHOT" + const val SDK = "hush.android:hush-android-sdk:1.9.0-beta01-SNAPSHOT" } object Misc { const val LOTTIE = "com.airbnb.android:lottie:3.7.0" From c9ac5239350213508b452ce2e95006cac887e726 Mon Sep 17 00:00:00 2001 From: fekt Date: Sun, 11 Dec 2022 23:13:20 -0500 Subject: [PATCH 03/17] Friendlier error handling for unavailable server --- .../java/cash/z/ecc/android/ext/Dialogs.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/src/main/java/cash/z/ecc/android/ext/Dialogs.kt b/app/src/main/java/cash/z/ecc/android/ext/Dialogs.kt index cb8e755..3a49b93 100644 --- a/app/src/main/java/cash/z/ecc/android/ext/Dialogs.kt +++ b/app/src/main/java/cash/z/ecc/android/ext/Dialogs.kt @@ -4,10 +4,14 @@ import android.app.ActivityManager import android.app.Dialog import android.content.Context import android.text.Html +import android.util.Log import androidx.annotation.StringRes import androidx.core.content.getSystemService import cash.z.ecc.android.R +import cash.z.ecc.android.feedback.Report +import cash.z.ecc.android.ui.scan.ScanFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder +import kotlin.system.exitProcess fun Context.showClearDataConfirmation(onDismiss: () -> Unit = {}, onCancel: () -> Unit = {}): Dialog { return MaterialAlertDialogBuilder(this) @@ -88,6 +92,24 @@ fun Context.showCriticalMessage(@StringRes titleResId: Int, @StringRes messageRe } fun Context.showCriticalMessage(title: String, message: String, onDismiss: () -> Unit = {}): Dialog { + Log.d("SilentDragon", "showCriticalMessage called: $message") + + var delimiter = ":" + val splitError = message.split(delimiter) + var pluckedError = splitError[0] + + if(pluckedError == "UNAVAILABLE"){ + return MaterialAlertDialogBuilder(this) + .setTitle("Server Unavailable") + .setMessage("Please close and restart the app to try another random server.") + .setCancelable(false) + .setNegativeButton("Exit") { dialog, _ -> + dialog.dismiss() + exitProcess(0) + } + .show() + } + return MaterialAlertDialogBuilder(this) .setTitle(title) .setMessage(message) From b2e0f8d71746c43c74d592e9aeb965396e2bdf2a Mon Sep 17 00:00:00 2001 From: fekt Date: Sun, 11 Dec 2022 23:17:54 -0500 Subject: [PATCH 04/17] QR scanning changes --- app/build.gradle | 2 +- .../cash/z/ecc/android/ui/scan/ScanFragment.kt | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f9545d3..8c9fa01 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -144,7 +144,7 @@ dependencies { implementation Deps.AndroidX.PAGING implementation Deps.AndroidX.RECYCLER - def camerax_version = "1.2.0-rc01" + def camerax_version = "1.1.0" implementation "androidx.camera:camera-core:${camerax_version}" implementation "androidx.camera:camera-camera2:${camerax_version}" implementation "androidx.camera:camera-lifecycle:${camerax_version}" diff --git a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt index f853f5d..c145a9e 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt @@ -111,17 +111,14 @@ class ScanFragment : BaseFragment() { private fun bindCameraUseCases() { // Get screen metrics used to setup camera for full screen resolution - /* - val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(requireActivity()).bounds - Log.d("SilentDragon", "Screen metrics: ${metrics.width()} x ${metrics.height()}") - val screenAspectRatio = aspectRatio(metrics.width(), metrics.height()) - */ + val windowMetrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(requireActivity()) + Log.d(TAG, "Screen metrics: ${windowMetrics.bounds.width()} x ${windowMetrics.bounds.height()}") - // Hardcode to square for now otherwise scanning doesn't work - val screenAspectRatio = aspectRatio(1, 1) - Log.d("SilentDragon", "Preview aspect ratio: $screenAspectRatio") + val screenAspectRatio = aspectRatio(windowMetrics.bounds.width(), windowMetrics.bounds.height()) + Log.d(TAG, "Preview aspect ratio: $screenAspectRatio") val rotation = fragmentCameraBinding.viewFinder.display.rotation + Log.d(TAG, "Rotation: $rotation") // CameraProvider val cameraProvider = cameraProvider @@ -298,7 +295,8 @@ class ScanFragment : BaseFragment() { * @return suitable aspect ratio */ private fun aspectRatio(width: Int, height: Int): Int { - val previewRatio = max(width, height).toDouble() / min(width, height) + val previewRatio = width.toDouble() / height + Log.d(TAG, "previewRatio: $previewRatio") if (abs(previewRatio - RATIO_4_3_VALUE) <= abs(previewRatio - RATIO_16_9_VALUE)) { return AspectRatio.RATIO_4_3 } @@ -323,7 +321,6 @@ class ScanFragment : BaseFragment() { } private fun onQrScanned(qrContent: String, image: ImageProxy) { - //Log.d("SilentDragon", "QR scanned: $qrContent") resumedScope.launch { val parsed = viewModel.parse(qrContent) if (parsed == null) { From 613ce03f6d9513466ae45afce226fd4455c7fabb Mon Sep 17 00:00:00 2001 From: fekt Date: Sat, 17 Dec 2022 14:06:15 -0500 Subject: [PATCH 05/17] Deleting Zcash checkpoints Checkpoints are in the SDK. These are junk Zcash checkpoints that aren't referenced anywhere. --- .gitignore | 73 +++++++++++++++++++ .../assets/saplingtree/mainnet/1225600.json | 7 -- .../assets/saplingtree/mainnet/1250000.json | 7 -- .../assets/saplingtree/mainnet/1290000.json | 7 -- .../assets/saplingtree/mainnet/1300000.json | 7 -- .../assets/saplingtree/mainnet/1335000.json | 7 -- .../assets/saplingtree/testnet/1380300.json | 7 -- .../assets/saplingtree/testnet/1450000.json | 7 -- .../assets/saplingtree/testnet/1454000.json | 7 -- 9 files changed, 73 insertions(+), 56 deletions(-) create mode 100644 .gitignore delete mode 100644 app/src/main/assets/saplingtree/mainnet/1225600.json delete mode 100644 app/src/main/assets/saplingtree/mainnet/1250000.json delete mode 100644 app/src/main/assets/saplingtree/mainnet/1290000.json delete mode 100644 app/src/main/assets/saplingtree/mainnet/1300000.json delete mode 100644 app/src/main/assets/saplingtree/mainnet/1335000.json delete mode 100644 app/src/main/assets/saplingtree/testnet/1380300.json delete mode 100644 app/src/main/assets/saplingtree/testnet/1450000.json delete mode 100644 app/src/main/assets/saplingtree/testnet/1454000.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37033b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +# Built application files +*.apk +*.ap_ + +# Built libraries +#*.aar +# *.so + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +target/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties +.DS_Store + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea + +# Keystore files +*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) + +# allow our dummy file to live in the repo to make building easier +#google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# rust +.cargo/ + +# misc. +backup/ +.editorconfig diff --git a/app/src/main/assets/saplingtree/mainnet/1225600.json b/app/src/main/assets/saplingtree/mainnet/1225600.json deleted file mode 100644 index b33872f..0000000 --- a/app/src/main/assets/saplingtree/mainnet/1225600.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "main", - "height": 1225600, - "hash": "0000000000196bafb2472eb7a3b1aa85bccc00904d5650a7952dd437859fc38c", - "time": 1619215931, - "tree": "0128411e8cb2f543c46ca943736c96ab4fa86cab1e3e2e394ed458d56b395bd5050120303bbaf4f19e37a06c1e9ea815567fc23990cc65494c2be29f8e6e4a9d9a6c130001010e9388fdf9bf49e3adf4adb57d83e0b5ba34f63a2681eceb54d3aaaf236b210001c0920d177f77815c4f643c2b331bd6b86d291d6bc2c1c20f6bc501f49adcdb3b000001b7958828206f53c25465943d4173af16de3cee94ae01b2e17a32c51c06fde3630001b31ed2e29d0d894604f0d7bf4735d4bcf25dc9f859c5e296a5689af7ca8c94720134ca9a7c4309349dfe003f3b4b95898b4303631e9be3a25b4e917a4f3472b52f00000121c25bceccda091622bfac1b7973ffaa638abe1f334b3b56f48dc93dc549c9070001ece344ca21dbd3b681f167163d4792165efe8239390afc13378e50d044fee65a01089a1f9d50a037cc66aba4400b1703bcbb66f5f2993fd0dd3bb726e35940916700000118f64df255c9c43db708255e7bf6bffd481e5c2f38fe9ed8f3d189f7f9cf2644" -} diff --git a/app/src/main/assets/saplingtree/mainnet/1250000.json b/app/src/main/assets/saplingtree/mainnet/1250000.json deleted file mode 100644 index 8850e40..0000000 --- a/app/src/main/assets/saplingtree/mainnet/1250000.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "main", - "height": 1250000, - "hash": "0000000000f3d2c352c395d66866032bcb67094228dd4a27e561b1c399ea612e", - "time": 1621056898, - "tree": "01c9a0dd6f6dfaaafe6ae4b432c2d1c41d2a73e564c8cb6d2c5ab637c7001a2456001300000000017da32b486a8ea9f13afb93b99d2b1de69aa969e7c2fd7b9ee958bece70c08d6b000001b3a4486b176dfcedc0b3d9287c0333ff464ecbd02bac7c89bcda7932e6a0a36100010d451c18b56877b8a11cb401ab7024c82b9669ede862a53e461087f57220035001a1c5260bc4dfe010510b8135209c6f64229965f71717f1e693abdcf88a58f36700012f0bf70e372e536fc3b76ecd7e2b69eebf2fbcf71b828c64b0a8b99390fbf754018e7922ca798cd3e26d3369ca2425ec19baa7d79407a979ec1090ae48fdcd094a01ece344ca21dbd3b681f167163d4792165efe8239390afc13378e50d044fee65a01089a1f9d50a037cc66aba4400b1703bcbb66f5f2993fd0dd3bb726e35940916700000118f64df255c9c43db708255e7bf6bffd481e5c2f38fe9ed8f3d189f7f9cf2644" -} diff --git a/app/src/main/assets/saplingtree/mainnet/1290000.json b/app/src/main/assets/saplingtree/mainnet/1290000.json deleted file mode 100644 index f6c8e7c..0000000 --- a/app/src/main/assets/saplingtree/mainnet/1290000.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "main", - "height": 1290000, - "hash": "00000000014836c3cbc011276cbd3702a76a1fea7eb2c0c2c257321220376450", - "time": 1624075741, - "tree": "01accf4fc3dc4233bbe757f94e0d4cd23b4aa2e6ac472601f4f53ca4dc86a8a05901fae977171a6103a0338990e073ffe50e29fc8bf0400dcd3378ebfe7a146ed1481300014f7b33dd5159ac66f2670b7db8925065e7154e0199ff7ee7559b276ba56ad1200173e9881f21357e54027a4275114f0f6ad4ca17143554182f63c77f3288a23a20011d65465ab942440e200d429ef892452b4b05c5b21e9a6e6d968a719c67b5e85b000000000000000150926c74975e2d8ff095defb75a4a6d9f17007e87a74230a65a3265d8f45032900012ffde6dccbef68b60cd7b4e7a8fe7989f5954fa4bacad01b247d16b9bfa5084000000125911f4524469c00ccb1ba69e64f0ee7380c8d17bbfc76ecd238421b86eb6e09000118f64df255c9c43db708255e7bf6bffd481e5c2f38fe9ed8f3d189f7f9cf2644" -} diff --git a/app/src/main/assets/saplingtree/mainnet/1300000.json b/app/src/main/assets/saplingtree/mainnet/1300000.json deleted file mode 100644 index 923b3a8..0000000 --- a/app/src/main/assets/saplingtree/mainnet/1300000.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "main", - "height": 1300000, - "hash": "00000000027222bdbcf9c5f807f851f97312ac6e0dbbc2b93f2be21a69c59d44", - "time": 1624830312, - "tree": "01f5a97e2679a2bb9103caf37b825f92fcd73fff836234844dfcf1815394522b2c01526587b9b9e8aeb0eb572d81fec1f5127b8278ba0f57e451bd6b796596940a2213000131c7ff90fafff6159b8fb6544a2bcbba6c102903158fce8f9a9d3c6654abb23300013555cb7f4f79badeaca9bf2dca5a8704f0929053d50e95c03002f9a4d5286c3a01ad3557e11c1607ec888dc84f5f8899c3c79fb1f50b613946452ec7dd5e53763c0001c4583f4482b949390dba355fc8fa63019c83acd644ddd633cb50211d236f870600000001088da0d78eefd0c222507927e403b972d0890d0c31e08b02268fbe39ac4a6e170001edf82d4e2b4893ea2028ca8c5149e50a4c358b856d73f2de2b9a22034fa78f22012ffde6dccbef68b60cd7b4e7a8fe7989f5954fa4bacad01b247d16b9bfa5084000000125911f4524469c00ccb1ba69e64f0ee7380c8d17bbfc76ecd238421b86eb6e09000118f64df255c9c43db708255e7bf6bffd481e5c2f38fe9ed8f3d189f7f9cf2644" -} diff --git a/app/src/main/assets/saplingtree/mainnet/1335000.json b/app/src/main/assets/saplingtree/mainnet/1335000.json deleted file mode 100644 index 714a3ef..0000000 --- a/app/src/main/assets/saplingtree/mainnet/1335000.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "main", - "height": 1335000, - "hash": "00000000001d428474214f2844ac7adacab9c9b706f89ebb24e1e43189edff2d", - "time": 1627468889, - "tree": "01105d94f868041b1680f862dad6211ab815a30c79a63b839c2b2043ce6530834801e53ee3fef11ddfaef984c8653dffa0354929b79aad7321b00c10cb3b60c8b7111301f5693ff9b17a8fc0b032c192841d1fc08b7ec9fe4fcc2b628a550434af70886a01838a7001b5ed5dcdec7bce1ea4250bbeebe8c22aa27fd69e7baf343458e95c7101030f11dfda75a9e4a63bab19fe3bf92c545a3f58a57ca41ae7609290dad01436018923004af490f5718e834215ef61f2f60aee24685c1c2cffb3c686dff57ab82501eb86680f83fa0f9c47da3875645344a2734d56edcf1d99747ecbf25ea0e86e22000001cf6872911593b4f1af2fd03dce8a48d434af849ad1bc872442e7881bbc04e8610168fbde909e21c25e1a686fac9982ee11fb0d05da3568579bfba8b71f7632d62700012965494015cdab2ce010c1ae4ea88306c286128275de391dcf57d3fa85be7e1b01a090ee174239a34a5d684425d09006d238c6075a61c5842d0fc26043f09ccd7001a2b7ee187c7b8ce18ebda8600bed7695b12f7d35ac971ed6ee67184a7ceebd490001b35fe4a943a47404f68db220c77b0573e13c3378a65c6f2396f93be7609d8f2a000125911f4524469c00ccb1ba69e64f0ee7380c8d17bbfc76ecd238421b86eb6e09000118f64df255c9c43db708255e7bf6bffd481e5c2f38fe9ed8f3d189f7f9cf2644" -} diff --git a/app/src/main/assets/saplingtree/testnet/1380300.json b/app/src/main/assets/saplingtree/testnet/1380300.json deleted file mode 100644 index 183e47d..0000000 --- a/app/src/main/assets/saplingtree/testnet/1380300.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "test", - "height": 1380300, - "hash": "00342c648fb9c5d109df4dd5b7849a4357f27f1dfdb8d3a0071e8254072d1a4a", - "time": 1619216615, - "tree": "01f5b47ef533c9b6240826210d7e66691f36b21ac1ce1e4a231399ff4f8b1286600198dc26bbe8f037c5dbd8a43e94c482bb513898bd1ee1a734c07c57450b9ec01b1000000001b18e52aa826dcf85a08ae15d1bb4c8559166fcd5cffd74b597a8b50bf32d311100018dc0c02e20384fcdc238a6c01a0e4598da69f546646acc177fd91b86a0f8236200000001ba0d7aa9e68417291c63b835fa64114f5899208238de59ee360f594c8b6c1b72018469338dcbdf2f7e54bca5bc3e1c5fad4a656f206040436d3d0433a901218b5e016d559de7a1a382349cf97fe01a2fba41a49bb5e3b306d9ff8c2bcc301c731c00000001f08f39275112dd8905b854170b7f247cf2df18454d4fa94e6e4f9320cca05f24011f8322ef806eb2430dc4a7a41c1b344bea5be946efc7b4349c1c9edb14ff9d39" -} diff --git a/app/src/main/assets/saplingtree/testnet/1450000.json b/app/src/main/assets/saplingtree/testnet/1450000.json deleted file mode 100644 index 9fbb97e..0000000 --- a/app/src/main/assets/saplingtree/testnet/1450000.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "test", - "height": 1450000, - "hash": "000008a97bc133de13ca304e0c6a2a1b3f2facdceac2cde5b4141179f2a743cc", - "time": 1623815069, - "tree": "0175626cf9d8448de98f68fcc585dd7a276c946c11bbc3b192ee08db99c542b86b01acf5a110dc7ab911b534984c46bf56592f0c4cc8cf70dbd6a9cc4a5b47d2c81c1001c91f518ccb74093a217a640c537b69b095de058e0430046c8783f231caa1fa4201f7c982ce76b2c9343fb771e077357322f9a7dabfd7ab93b7adee32806c930d6600000170910ab6355ec614412fae56dad5fdc1747ce1b306a4b8ae03b77513b612b00800000000000000013d2fd009bf8a22d68f720eac19c411c99014ed9c5f85d5942e15d1fc039e28680001f08f39275112dd8905b854170b7f247cf2df18454d4fa94e6e4f9320cca05f24011f8322ef806eb2430dc4a7a41c1b344bea5be946efc7b4349c1c9edb14ff9d39" -} diff --git a/app/src/main/assets/saplingtree/testnet/1454000.json b/app/src/main/assets/saplingtree/testnet/1454000.json deleted file mode 100644 index 87dd546..0000000 --- a/app/src/main/assets/saplingtree/testnet/1454000.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "network": "test", - "height": 1454000, - "hash": "003254b452f221d36ba81d051a1a63edeb203de7ab457500d08b4110bcc86620", - "time": 1624073536, - "tree": "01007501338f9d31446b9c0228b87e81886555100fbb1b5bec7966617559d5400901d830393653a5379f1f071bffa191f9b56d0664859d9b19b9e9ae4e1c76f7d34f1001ca92ad0eeb818c3bb57ca30ed500dd58703fe14c4837f14ac8a1491622f0a8550001a1d6a89c888e46ce950d5af54739e9847fab81f383586ad5dc51dd00f65ed85d0160f01e9c484861b220f5a4650119f192217a89854ada30019fae9ab46ff4c4120001462c8d06a58ddec91ed309dcb041cdedcca73446889496332054d54e1561633b000000000000013d2fd009bf8a22d68f720eac19c411c99014ed9c5f85d5942e15d1fc039e28680001f08f39275112dd8905b854170b7f247cf2df18454d4fa94e6e4f9320cca05f24011f8322ef806eb2430dc4a7a41c1b344bea5be946efc7b4349c1c9edb14ff9d39" -} From 8a0a0216b4eeb3e8e0f1149274146227a91dea96 Mon Sep 17 00:00:00 2001 From: fekt Date: Sat, 17 Dec 2022 14:07:10 -0500 Subject: [PATCH 06/17] Update fragment_settings.xml Adding note about changing server. --- app/src/main/res/layout/fragment_settings.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index b4a4648..44383a0 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -2,6 +2,7 @@ @@ -158,5 +159,17 @@ android:layout_height="wrap_content" app:constraint_referenced_ids="loading_progress,loading_view" /> + + \ No newline at end of file From 565cd84761c8717010fcb8a0556bcf872ce1eca5 Mon Sep 17 00:00:00 2001 From: fekt Date: Wed, 15 Feb 2023 22:46:56 -0500 Subject: [PATCH 07/17] QR code fix for hush: --- .../main/java/cash/z/ecc/android/di/DependenciesHolder.kt | 4 ---- .../main/java/cash/z/ecc/android/ui/scan/ScanViewModel.kt | 4 +++- .../cash/z/ecc/android/ui/setup/WalletSetupViewModel.kt | 6 ++++++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/di/DependenciesHolder.kt b/app/src/main/java/cash/z/ecc/android/di/DependenciesHolder.kt index 5dcfce4..da1f057 100644 --- a/app/src/main/java/cash/z/ecc/android/di/DependenciesHolder.kt +++ b/app/src/main/java/cash/z/ecc/android/di/DependenciesHolder.kt @@ -36,9 +36,5 @@ object DependenciesHolder { } } - val feedbackFile by lazy { FeedbackFile() } - - val feedbackConsole by lazy { FeedbackConsole() } - val mnemonics by lazy { Mnemonics() } } diff --git a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanViewModel.kt b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanViewModel.kt index 1ceef91..3000ace 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanViewModel.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanViewModel.kt @@ -1,5 +1,6 @@ package cash.z.ecc.android.ui.scan +import android.util.Log import androidx.lifecycle.ViewModel import cash.z.ecc.android.di.DependenciesHolder import cash.z.ecc.android.sdk.Synchronizer @@ -15,10 +16,11 @@ class ScanViewModel : ViewModel() { // temporary parse code to allow both plain addresses and those that start with hush: // TODO: replace with more robust ZIP-321 handling of QR codes val address = if (qrCode.startsWith("hush:")) { - qrCode.substring(6, qrCode.indexOf("?").takeUnless { it == -1 } ?: qrCode.length) + qrCode.substring(5, qrCode.indexOf("?").takeUnless { it == -1 } ?: qrCode.length) } else { qrCode } + Log.d("SilentDragon", "address: $address") return if (synchronizer.validateAddress(address).isNotValid) null else address } diff --git a/app/src/main/java/cash/z/ecc/android/ui/setup/WalletSetupViewModel.kt b/app/src/main/java/cash/z/ecc/android/ui/setup/WalletSetupViewModel.kt index aae3768..4351529 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/setup/WalletSetupViewModel.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/setup/WalletSetupViewModel.kt @@ -1,6 +1,7 @@ package cash.z.ecc.android.ui.setup import android.content.Context +import android.util.Log import androidx.lifecycle.ViewModel import cash.z.ecc.android.ZcashWalletApp import cash.z.ecc.android.di.DependenciesHolder @@ -91,6 +92,7 @@ class WalletSetupViewModel : ViewModel() { * known by this point. */ private suspend fun loadConfig(): Initializer.Config { + twig("Loading config variables") var overwriteVks = false val network = ZcashWalletApp.instance.defaultNetwork @@ -100,6 +102,10 @@ class WalletSetupViewModel : ViewModel() { val host = prefs[Const.Pref.SERVER_HOST] ?: Const.Default.Server.HOST val port = prefs[Const.Pref.SERVER_PORT] ?: Const.Default.Server.PORT + Log.d("SilentDragon", "host: $host") + + // TODO: Maybe check server availability here + twig("Done loading config variables") return Initializer.Config { it.importWallet(vk, birthdayHeight, network, LightWalletEndpoint(host, port, true)) From e6fd1d1e23bce3ebb4db3875873f49cdbfeab4eb Mon Sep 17 00:00:00 2001 From: fekt Date: Thu, 16 Feb 2023 22:22:39 -0500 Subject: [PATCH 08/17] Populate amt and memo when scanning QR --- .../z/ecc/android/ui/scan/ScanFragment.kt | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt index c145a9e..e683a4f 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt @@ -1,5 +1,6 @@ package cash.z.ecc.android.ui.scan +import android.net.UrlQuerySanitizer import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -16,14 +17,14 @@ import androidx.window.layout.WindowMetricsCalculator import cash.z.ecc.android.R import cash.z.ecc.android.databinding.FragmentScanBinding import cash.z.ecc.android.ext.onClickNavBack +import cash.z.ecc.android.sdk.ext.convertZecToZatoshi +import cash.z.ecc.android.sdk.ext.safelyConvertToBigDecimal import cash.z.ecc.android.ui.base.BaseFragment import cash.z.ecc.android.ui.send.SendViewModel import kotlinx.coroutines.launch import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import kotlin.math.abs -import kotlin.math.max -import kotlin.math.min class ScanFragment : BaseFragment() { @@ -322,15 +323,28 @@ class ScanFragment : BaseFragment() { private fun onQrScanned(qrContent: String, image: ImageProxy) { resumedScope.launch { - val parsed = viewModel.parse(qrContent) - if (parsed == null) { + val address = viewModel.parse(qrContent) + val sanitizer = UrlQuerySanitizer(qrContent) + val amt = sanitizer.getValue("amt") + val memo = sanitizer.getValue("memo") + + /* + Log.d(TAG, "qrContent: $qrContent") + Log.d(TAG, "address: $address") + Log.d(TAG, "amt: $amt") + Log.d(TAG, "memo: $memo") + */ + + if (address == null) { val network = viewModel.networkName _fragmentCameraBinding?.textScanError?.text = getString(R.string.scan_invalid_address, network, qrContent) image.close() } else { /* continue scanning*/ _fragmentCameraBinding?.textScanError?.text = "" - sendViewModel.toAddress = parsed + sendViewModel.toAddress = address + sendViewModel.zatoshiAmount = amt.safelyConvertToBigDecimal().convertZecToZatoshi() + sendViewModel.memo = memo mainActivity?.safeNavigate(R.id.action_nav_scan_to_nav_send) } } From 9a6c809b098f2bc180a0c0a6689e322788eeb748 Mon Sep 17 00:00:00 2001 From: fekt Date: Tue, 28 Feb 2023 02:06:59 -0500 Subject: [PATCH 09/17] Street Mode --- .../main/java/cash/z/ecc/android/ext/Const.kt | 1 + .../z/ecc/android/ui/home/HomeFragment.kt | 10 ++++ .../z/ecc/android/ui/scan/ScanFragment.kt | 9 +++- .../android/ui/settings/SettingsFragment.kt | 24 +++++++++ .../android/ui/settings/SettingsViewModel.kt | 1 + app/src/main/res/layout/fragment_settings.xml | 49 +++++++++++++------ 6 files changed, 77 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/ext/Const.kt b/app/src/main/java/cash/z/ecc/android/ext/Const.kt index 3296e8e..a41fac6 100644 --- a/app/src/main/java/cash/z/ecc/android/ext/Const.kt +++ b/app/src/main/java/cash/z/ecc/android/ext/Const.kt @@ -23,6 +23,7 @@ object Const { const val FEEDBACK_ENABLED = "const.pref.feedback_enabled" const val SERVER_HOST = "const.pref.server_host" const val SERVER_PORT = "const.pref.server_port" + const val STREET_MODE = "const.pref.street_mode" } /** diff --git a/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt index 5b944e8..ceda3a3 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt @@ -15,6 +15,8 @@ import cash.z.ecc.android.R import cash.z.ecc.android.ZcashWalletApp import cash.z.ecc.android.databinding.DialogSolicitFeedbackRatingBinding import cash.z.ecc.android.databinding.FragmentHomeBinding +import cash.z.ecc.android.di.DependenciesHolder +import cash.z.ecc.android.di.DependenciesHolder.lockBox import cash.z.ecc.android.ext.* import cash.z.ecc.android.feedback.Report import cash.z.ecc.android.feedback.Report.Tap.* @@ -320,6 +322,14 @@ class HomeFragment : BaseFragment() { else -> getString(R.string.home_instruction_enter_amount) } } + + // Hide balance and history if Street Mode is enabled + if(lockBox.getBoolean(Const.Pref.STREET_MODE)) { + binding.textBalanceAvailable.visibility = View.INVISIBLE + binding.labelBalance.visibility = View.INVISIBLE + binding.textHistory.visibility = View.INVISIBLE + binding.textSendAmount.isEnabled = false + } } fun setBanner(message: String = "", action: BannerAction = CLEAR) { diff --git a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt index e683a4f..d8aaaa6 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt @@ -343,8 +343,13 @@ class ScanFragment : BaseFragment() { } else { /* continue scanning*/ _fragmentCameraBinding?.textScanError?.text = "" sendViewModel.toAddress = address - sendViewModel.zatoshiAmount = amt.safelyConvertToBigDecimal().convertZecToZatoshi() - sendViewModel.memo = memo + if(amt!=null){ + sendViewModel.zatoshiAmount = + amt.safelyConvertToBigDecimal().convertZecToZatoshi() + } + if(memo!=null){ + sendViewModel.memo = memo + } mainActivity?.safeNavigate(R.id.action_nav_scan_to_nav_send) } } diff --git a/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsFragment.kt index 1a7e77c..f7e76d8 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsFragment.kt @@ -2,14 +2,18 @@ package cash.z.ecc.android.ui.settings import android.content.res.ColorStateList import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.Toast +import androidx.core.view.ViewCompat.jumpDrawablesToCurrentState import androidx.core.widget.doAfterTextChanged import androidx.fragment.app.viewModels import cash.z.ecc.android.R import cash.z.ecc.android.ZcashWalletApp import cash.z.ecc.android.databinding.FragmentSettingsBinding +import cash.z.ecc.android.di.DependenciesHolder.lockBox +import cash.z.ecc.android.di.DependenciesHolder.prefs import cash.z.ecc.android.ext.* import cash.z.ecc.android.sdk.exception.LightWalletException import cash.z.ecc.android.sdk.ext.collectWith @@ -37,6 +41,15 @@ class SettingsFragment : BaseFragment() { hitAreaExit.onClickNavBack() buttonReset.setOnClickListener(::onResetClicked) buttonUpdate.setOnClickListener(::onUpdateClicked) + streetMode.setOnClickListener(::onStreetModeChecked) + + val streetmode = lockBox.getBoolean(Const.Pref.STREET_MODE) + if(streetmode){ + streetMode.isChecked = true + } + + Log.d("SilentDragon", "streetMode: $streetmode") + buttonUpdate.isActivated = true buttonReset.isActivated = true inputHost.doAfterTextChanged { @@ -79,6 +92,17 @@ class SettingsFragment : BaseFragment() { } } + private fun onStreetModeChecked(unused: View?) { + val streetmode = lockBox.getBoolean(Const.Pref.STREET_MODE) + Log.d("SilentDragon", "streetModeChecked! streetmode = $streetmode") + if(streetmode) { + lockBox.setBoolean(Const.Pref.STREET_MODE, false) + } + else{ + lockBox.setBoolean(Const.Pref.STREET_MODE, true) + } + } + private fun onUiModelUpdated(uiModel: SettingsViewModel.UiModel) { twig("onUiModelUpdated:::::$uiModel") binding.apply { diff --git a/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsViewModel.kt b/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsViewModel.kt index 5a2d6d2..d475136 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsViewModel.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/settings/SettingsViewModel.kt @@ -1,5 +1,6 @@ package cash.z.ecc.android.ui.settings +import android.util.Log import androidx.lifecycle.ViewModel import cash.z.ecc.android.di.DependenciesHolder import cash.z.ecc.android.ext.Const diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 44383a0..6890423 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -109,30 +109,56 @@ + + + + + app:layout_constraintTop_toBottomOf="@+id/streetMode" /> - - + android:focusableInTouchMode="true" + tools:layout_editor_absoluteX="81dp" + tools:layout_editor_absoluteY="16dp" /> Date: Tue, 28 Feb 2023 20:44:13 -0500 Subject: [PATCH 10/17] Updated server list --- app/src/main/java/cash/z/ecc/android/ext/Const.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/ext/Const.kt b/app/src/main/java/cash/z/ecc/android/ext/Const.kt index a41fac6..38f7734 100644 --- a/app/src/main/java/cash/z/ecc/android/ext/Const.kt +++ b/app/src/main/java/cash/z/ecc/android/ext/Const.kt @@ -49,11 +49,11 @@ object Const { object Server { // Select a random server from list private val serverList = listOf( - "lite.hush.is", "lite.hushpool.is", - "wtfistheinternet.hush.is", - "lite2.hush.is", + "lite.hush.community", "poop.granitefone.me", + "lite.myhush.org", + "wtfistheinternet.hush.is", "lite2.hushpool.is" ) private val randomIndex = Random.nextInt(serverList.size); From 8bd87998d691319981d37fabca6cb3df459b728e Mon Sep 17 00:00:00 2001 From: fekt Date: Tue, 28 Feb 2023 21:28:24 -0500 Subject: [PATCH 11/17] 5t34L tH353 fUND$ --- .../main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt index af12340..71b5d85 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/setup/LandingFragment.kt @@ -142,7 +142,7 @@ class LandingFragment : BaseFragment() { ZcashNetwork.Mainnet -> { seedPhrase = "still champion voice habit trend flight survey between bitter process artefact blind carbon truly provide dizzy crush flush breeze blouse charge solid fish spread" - birthday = BlockHeight.new(ZcashNetwork.Mainnet, 1180000) + birthday = BlockHeight.new(ZcashNetwork.Mainnet, 1270000) } ZcashNetwork.Testnet -> { seedPhrase = From fe6aae23dec23ae08cf6bc83e2542bb0b90bc34b Mon Sep 17 00:00:00 2001 From: fekt Date: Tue, 28 Feb 2023 23:20:28 -0500 Subject: [PATCH 12/17] Updating some strings --- app/src/main/res/values/translated.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values/translated.xml b/app/src/main/res/values/translated.xml index 2b25af9..6704fe4 100644 --- a/app/src/main/res/values/translated.xml +++ b/app/src/main/res/values/translated.xml @@ -22,7 +22,7 @@ Skip for now Balance Screen Enter an amount to send - expecting XX ZEC + expecting XX HUSH Available No funds available Syncing … % @@ -45,7 +45,7 @@ from your transparent wallet from both wallets To - Enter a valid Zcash address + Enter a valid HUSH address This is a valid shielded address This is a valid transparent address Warning, this appears to be your address! @@ -58,8 +58,8 @@ Unknown Scan Recipient Address Authenticate to send - Please confirm you want to send XX ZEC to - Sending XX ZEC to + Please confirm you want to send XX HUSH to + Sending XX HUSH to Cancelled Sent! Done From becad732eff83e62a3d7bfdf097b0cf705030d9e Mon Sep 17 00:00:00 2001 From: fekt Date: Tue, 28 Feb 2023 23:26:31 -0500 Subject: [PATCH 13/17] Another string --- app/src/main/res/values/translated.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/translated.xml b/app/src/main/res/values/translated.xml index 6704fe4..0881d97 100644 --- a/app/src/main/res/values/translated.xml +++ b/app/src/main/res/values/translated.xml @@ -11,7 +11,7 @@ Restoring from a Backup You will need to enter all 24 seed words in order. Your funds are at risk! - Remember, with Zcash YOU are the bank. Anyone with your seed phrase has access to your wallet. + Remember, with HUSH you are the bank. Anyone with your seed phrase has access to your wallet. You should back this up immediately as no one else can restore it for you. Seed accepted, scanning! We are scanning the blockchain for transactions pertaining to your wallet. If you can provide a birthday date for this wallet we can speed it up. From 8f52977c7350ace9afe9549f4ded05c24e407e80 Mon Sep 17 00:00:00 2001 From: fekt Date: Wed, 1 Mar 2023 00:10:29 -0500 Subject: [PATCH 14/17] Updating translations --- app/src/main/res/values-es/translated.xml | 10 +++++----- app/src/main/res/values-it/translated.xml | 10 +++++----- app/src/main/res/values-ko/translated.xml | 12 ++++++------ app/src/main/res/values-ru/translated.xml | 12 ++++++------ app/src/main/res/values-zh/translated.xml | 14 +++++++------- app/src/main/res/values/translated.xml | 2 ++ 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/app/src/main/res/values-es/translated.xml b/app/src/main/res/values-es/translated.xml index 0a45931..8d76fb6 100644 --- a/app/src/main/res/values-es/translated.xml +++ b/app/src/main/res/values-es/translated.xml @@ -11,7 +11,7 @@ Restaurando desde frase de respaldo Deberás ingresar todas las 24 palabras de tu frase semilla en orden ¡Tus fondos están en riesgo! - Recuerda, en Zcash tu eres el banco. Cualquiera que tenga tu frase semilla podrá acceder a tu wallet + Recuerda, en HUSH tu eres el banco. Cualquiera que tenga tu frase semilla podrá acceder a tu wallet Deberías respaldar tu wallet inmediatamente. Solo tú puedes hacerlo. ¡Frase semilla aceptada! ¡Escaneando! Estamos buscando transacciones de tu wallet en la blockchain. Si nos provees una fecha inicial de tu wallet podemos hacerlo más rápido. @@ -22,7 +22,7 @@ Omitir por ahora Pantalla de Balance Ingresar un monto para enviar - esperando XX ZEC + esperando XX HUSH Disponible No hay fondos disponibles Sincronizando .... % @@ -45,7 +45,7 @@ de tu wallet transparente desde ambas wallet A - Ingresa una dirección Zcash Válida + Ingresa una dirección HUSH Válida Esta es una dirección blindada válida Esta es una dirección transparente válida ¡Cuidado, parece que esta es tu propia dirección! @@ -58,8 +58,8 @@ Desconocido Escanear Dirección destinatario Identifícate para enviar - Confirma que quieres enviar XX ZEC a - Enviando XX ZEC a + Confirma que quieres enviar XX HUSH a + Enviando XX HUSH a Cancelado ¡Enviado! Listo diff --git a/app/src/main/res/values-it/translated.xml b/app/src/main/res/values-it/translated.xml index cdfec42..af03b36 100644 --- a/app/src/main/res/values-it/translated.xml +++ b/app/src/main/res/values-it/translated.xml @@ -4,7 +4,7 @@ Il tuo indirizzo trasparente Inserisci un importo da inviare Disponibile - aspettando %@ ZEC + aspettando %@ HUSH Nessun fondo disponibile Bilancio Sincronizzando %@%% @@ -22,7 +22,7 @@ Invia importo Salta per ora cronologia del wallet - Inserisci un indirizzo Zcash valido + Inserisci un indirizzo HUSH valido Attenzione, questo indirizzo non è valido! Attenzione, sembra che questo sia il tuo indirizzo! Questo è un indirizzo blindato valido @@ -39,7 +39,7 @@ Stiamo cercando transazioni dal tuo wallet sulla blockchain. Se ci fornisci una data iniziale del tuo Wallet, possiamo farlo più velocemente. inserici data I tuoi fondi sono a rischio! - Ricorda, in Zcash sei tu la banca. Chiunque abbia la tua frase seme può accedere al tuo Wallet + Ricorda, in HUSH sei tu la banca. Chiunque abbia la tua frase seme può accedere al tuo Wallet Dovresti eseguire immediatamente il backup del tuo portafoglio. Solo tu puoi farlo recupero dalla frase di backup Devi inserire tutte le 24 parole della tua frase seme in ordine @@ -54,8 +54,8 @@ Scansione indirizzo destinatario Invio Accedi per inviare - Conferma che vuoi inviare %@ ZEC a - Inviando %@ ZEC a + Conferma che vuoi inviare %@ HUSH a + Inviando %@ HUSH a Inviato! Sconosciuto Il tuo seme di backup diff --git a/app/src/main/res/values-ko/translated.xml b/app/src/main/res/values-ko/translated.xml index 3864bf9..ed3c629 100644 --- a/app/src/main/res/values-ko/translated.xml +++ b/app/src/main/res/values-ko/translated.xml @@ -1,5 +1,5 @@ - ECC 지갑 + SilentDragon 로딩 환영 ₩ (currency = 통화) @@ -11,7 +11,7 @@ 백업에서 복원 24 개의 시드 단어를 모두 순서대로 입력해야합니다. 당신의 자금이 위험에 처해 있습니다 - Zcash에서 당신은 은행이라는 것을 기억하십시오. 시드 문구가있는 사람은 누구나 지갑에 액세스 할 수 있습니다. + HUSH에서 당신은 은행이라는 것을 기억하십시오. 시드 문구가있는 사람은 누구나 지갑에 액세스 할 수 있습니다. 다른 사람이 대신 백업 할 수 없으므로 즉시 백업해야합니다. 시드 수락, 지금 스캔! 지갑에 대한 거래를 위해 블록 체인을 스캔하고 있습니다. 이 지갑의 생일 날짜를 제공 할 수 있다면 동기화 속도를 높일 수 있습니다. @@ -22,7 +22,7 @@ 일단은 스킵 밸런스 화면 보낼 금액 입력 - 기대 XX ZEC + 기대 XX HUSH 사용 가능 사용할 수있는 자금 없습니다 동기화 @@ -45,7 +45,7 @@ 투명한 지갑에서 두 지갑에서 - 유효한 zcash 주소를 입력하십시오 + 유효한 HUSH 주소를 입력하십시오 유효한 쉴드된 주소입니다. 유효한 투명 주소입니다. 경고, 이것은 귀하의 주소 인 것 같습니다! @@ -58,8 +58,8 @@ 알 수 없는 수신자 주소 스캔 보내기 인증 - XX ZEC를 보낼 것인지 확인하십시오. - XX ZEC를 보내기 + XX HUSH 보낼 것인지 확인하십시오. + XX HUSH 보내기 취소되었습니다 보냈습니다! diff --git a/app/src/main/res/values-ru/translated.xml b/app/src/main/res/values-ru/translated.xml index 727321a..0bc8688 100644 --- a/app/src/main/res/values-ru/translated.xml +++ b/app/src/main/res/values-ru/translated.xml @@ -1,5 +1,5 @@ - Кошелек ECC + SilentDragon Загрузка Добро пожаловать! В валюте @@ -11,7 +11,7 @@ Восстановление из резервной копии Вам необходимо будет ввести 24 слова фразы восстановления по порядку. Существует риск потерять средства! - Помните, что с Zcash Вы сами находитесь в роли банка. Любой, кто владеет фразой восстановления, получает полный доступ к кошельку. + Помните, что с HUSH Вы сами находитесь в роли банка. Любой, кто владеет фразой восстановления, получает полный доступ к кошельку. Вам следует незамедлительно создать резервную копию, так она позволит восстановить доступ к Вашему кошельку. Фраза восстановления принята, идёт сканирование блокчейна! Мы сканируем блокчейн на предмет транзакций, которые относятся к вашему кошельку. Если вы можете указать дату создания данного кошелька, процесс ускорится. @@ -22,7 +22,7 @@ Пропустить Экран баланса Введите сумму для отправки - Ожидание XX ZEC + Ожидание XX HUSH Доступно Нет доступных средств Синхронизация ... % @@ -45,7 +45,7 @@ с Вашего прозрачного кошелька с двух кошельков на - Введите действующий Zcash-адрес + Введите действующий HUSH-адрес Это действующий защищённый адрес Это действующий прозрачный адрес Внимание, похоже, это ваш адрес! @@ -58,8 +58,8 @@ Неизвестно Сканировать адрес получателя Подтвердите, чтобы отправить - Пожалуйста подтвердите, что хотите отправить XX ZEC на адрес - Отправка XX ZEC на + Пожалуйста подтвердите, что хотите отправить XX HUSH на адрес + Отправка XX HUSH на Отменено Отправлено! Готово diff --git a/app/src/main/res/values-zh/translated.xml b/app/src/main/res/values-zh/translated.xml index 265d318..9cce2b6 100644 --- a/app/src/main/res/values-zh/translated.xml +++ b/app/src/main/res/values-zh/translated.xml @@ -1,7 +1,7 @@ - ECC 钱包 + SilentDragon 准备工作 - 欢迎使用 ECC 钱包! + 欢迎使用 HUSH 钱包! 法币 您的备份种子(助记词) 我们建议您使用纸笔抄录备份种子,并锁到带密码的保险箱里。 @@ -11,7 +11,7 @@ 从备份助记词中恢复钱包 您需要按照顺序输入 24 个助记词。 您的资金处在安全风险中! - 请记住,使用 Zcash 的时候,没有其他人在托管您的资金,您 是自己的银行。使用资金的唯一凭证就是助记词。如有他人知道了您的助记词,就有了转移您资金的所有权限。 + 请记住,使用 HUSH 的时候,没有其他人在托管您的资金,您 是自己的银行。使用资金的唯一凭证就是助记词。如有他人知道了您的助记词,就有了转移您资金的所有权限。 请立即备份,如果您遗失了自己的备份,没有任何人能帮您恢复钱包、找回资金。 已接受助记词,正在扫描您的帐户余额。 软件正在扫描区块链以发现与您的钱包有关的交易。如果您能提供这个钱包的创建时间,可以加快扫描速度。 @@ -22,7 +22,7 @@ 跳过 余额扫描 输入您想发送的数额 - 预计为 XX ZEC + 预计为 XX HUSH 可用 暂无可用的款项 正在同步 ...% @@ -45,7 +45,7 @@ 从您的透明钱包发送 同时从您的隐蔽钱包和透明钱包拼凑数额 - 请输入一个有效的 Zcash 地址 + 请输入一个有效的 HUSH 地址 这是一个有效的隐蔽地址 这是一个有效的透明地址 警告,该地址似乎是您自己的地址! @@ -58,8 +58,8 @@ 未知 扫描接收人地址 授权发送 - 请确认,您现在要发送 XX ZEC 发送给 - 正在发送 XX ZEC 给 + 请确认,您现在要发送 XX HUSH 发送给 + 正在发送 XX HUSH 给 已取消 已发送! 完成 diff --git a/app/src/main/res/values/translated.xml b/app/src/main/res/values/translated.xml index 0881d97..c1e327d 100644 --- a/app/src/main/res/values/translated.xml +++ b/app/src/main/res/values/translated.xml @@ -66,6 +66,8 @@ See Details Go Back Your Wallet History + NOTE: You must fully close and restart the app for a server change to take effect. Entering and updating a server here will cause that server to be set in encrypted preferences and used all the time, otherwise a random server is chosen by default on startup. + Street Mode (Hides balance and wallet history for extra privacy) From 22d6721d03a0168fe8fc6e06dc5b01a3db451604 Mon Sep 17 00:00:00 2001 From: fekt Date: Wed, 1 Mar 2023 00:13:37 -0500 Subject: [PATCH 15/17] More Street Mode --- .../z/ecc/android/ui/home/HomeFragment.kt | 36 +++----- app/src/main/res/layout/fragment_settings.xml | 85 +++++++++++-------- 2 files changed, 63 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt index ceda3a3..61dd024 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/home/HomeFragment.kt @@ -114,15 +114,19 @@ class HomeFragment : BaseFragment() { ) hitAreaProfile.onClickNavTo(R.id.action_nav_home_to_nav_profile) { tapped(HOME_PROFILE) } textHistory.onClickNavTo(R.id.action_nav_home_to_nav_history) { tapped(HOME_HISTORY) } - textSendAmount.onClickNavTo(R.id.action_nav_home_to_nav_balance_detail) { - tapped( - HOME_BALANCE_DETAIL - ) - } - hitAreaBalance.onClickNavTo(R.id.action_nav_home_to_nav_balance_detail) { - tapped( - HOME_BALANCE_DETAIL - ) + + // Only allow viewing balance detail when not in Street Mode + if(!lockBox.getBoolean(Const.Pref.STREET_MODE)) { + textSendAmount.onClickNavTo(R.id.action_nav_home_to_nav_balance_detail) { + tapped( + HOME_BALANCE_DETAIL + ) + } + hitAreaBalance.onClickNavTo(R.id.action_nav_home_to_nav_balance_detail) { + tapped( + HOME_BALANCE_DETAIL + ) + } } hitAreaReceive.onClickNavTo(R.id.action_nav_home_to_nav_receive) { tapped(HOME_RECEIVE) } @@ -327,6 +331,7 @@ class HomeFragment : BaseFragment() { if(lockBox.getBoolean(Const.Pref.STREET_MODE)) { binding.textBalanceAvailable.visibility = View.INVISIBLE binding.labelBalance.visibility = View.INVISIBLE + binding.textBalanceDescription.visibility = View.INVISIBLE binding.textHistory.visibility = View.INVISIBLE binding.textSendAmount.isEnabled = false } @@ -486,19 +491,6 @@ class HomeFragment : BaseFragment() { mainActivity?.safeNavigate(R.id.action_nav_home_to_nav_receive) } .show() -// MaterialAlertDialogBuilder(activity) -// .setMessage("To make full use of this wallet, deposit funds to your address or tap the faucet to trigger a tiny automatic deposit.\n\nFaucet funds are made available for the community by the community for testing. So please be kind enough to return what you borrow!") -// .setTitle("No Balance") -// .setCancelable(true) -// .setPositiveButton("Tap Faucet") { dialog, _ -> -// dialog.dismiss() -// setBanner("Tapping faucet...", CANCEL) -// } -// .setNegativeButton("View Address") { dialog, _ -> -// dialog.dismiss() -// mainActivity?.safeNavigate(R.id.action_nav_home_to_nav_receive) -// } -// .show() } CANCEL -> { // TODO: trigger banner / balance update diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 6890423..1de86fb 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1,12 +1,27 @@ - + + + app:srcCompat="@drawable/ic_cancel" + app:tint="@color/text_light_dimmed" /> - - + app:layout_constraintTop_toBottomOf="@+id/text_input_layout_port" /> - + + + \ No newline at end of file From 2b22483741df7999903d9ad7fa59805a612cfb37 Mon Sep 17 00:00:00 2001 From: fekt Date: Sat, 4 Mar 2023 14:42:09 -0500 Subject: [PATCH 16/17] Updated server list --- app/src/main/java/cash/z/ecc/android/ext/Const.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/cash/z/ecc/android/ext/Const.kt b/app/src/main/java/cash/z/ecc/android/ext/Const.kt index 38f7734..565387c 100644 --- a/app/src/main/java/cash/z/ecc/android/ext/Const.kt +++ b/app/src/main/java/cash/z/ecc/android/ext/Const.kt @@ -49,12 +49,14 @@ object Const { object Server { // Select a random server from list private val serverList = listOf( + "lite.hush.is", "lite.hushpool.is", "lite.hush.community", "poop.granitefone.me", "lite.myhush.org", "wtfistheinternet.hush.is", - "lite2.hushpool.is" + "lite.hush.land", + "lite2.hushpool.is" ) private val randomIndex = Random.nextInt(serverList.size); private val randomServer = serverList[randomIndex] From c7e3ec8e8e219c0a533284978775b30e1dec5919 Mon Sep 17 00:00:00 2001 From: fekt Date: Sat, 4 Mar 2023 14:47:37 -0500 Subject: [PATCH 17/17] Updating copyright year --- app/src/main/res/layout/fragment_profile.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index 63d2c2a..aa1f22d 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -225,7 +225,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:text="© 2016-2022 The Hush Developers\nAll rights reserved. Licensed under GPLv3" + android:text="© 2016-2023 The Hush Developers\nAll rights reserved. Licensed under GPLv3" android:textAlignment="center" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"