Release Vexta Wallet v0.6.1
This commit is contained in:
parent
680a81cbe2
commit
cac00ff97b
2 changed files with 141 additions and 21 deletions
|
|
@ -22,8 +22,8 @@ android {
|
||||||
applicationId = "org.vextaproject.wallet"
|
applicationId = "org.vextaproject.wallet"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 30
|
versionCode = 31
|
||||||
versionName = "0.6.0"
|
versionName = "0.6.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package org.vextaproject.wallet
|
package org.vextaproject.wallet
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.biometric.BiometricManager
|
import androidx.biometric.BiometricManager
|
||||||
import androidx.biometric.BiometricPrompt
|
import androidx.biometric.BiometricPrompt
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
|
@ -34,6 +35,7 @@ import android.security.keystore.KeyProperties
|
||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.MotionEvent
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
|
|
@ -117,6 +119,7 @@ class WalletActivity : FragmentActivity() {
|
||||||
private var automaticScanStarted = false
|
private var automaticScanStarted = false
|
||||||
private var blockchainScanRunning = false
|
private var blockchainScanRunning = false
|
||||||
private var sendInProgress = false
|
private var sendInProgress = false
|
||||||
|
private var lastExitSwipeAt = 0L
|
||||||
private var latestSpendableUtxos =
|
private var latestSpendableUtxos =
|
||||||
emptyList<BlockScanner.SpendableUtxo>()
|
emptyList<BlockScanner.SpendableUtxo>()
|
||||||
|
|
||||||
|
|
@ -241,6 +244,44 @@ class WalletActivity : FragmentActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
onBackPressedDispatcher.addCallback(
|
||||||
|
this,
|
||||||
|
object : OnBackPressedCallback(true) {
|
||||||
|
override fun handleOnBackPressed() {
|
||||||
|
if (!walletExists()) {
|
||||||
|
isEnabled = false
|
||||||
|
onBackPressedDispatcher.onBackPressed()
|
||||||
|
isEnabled = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mainWalletVisible) {
|
||||||
|
showMainWallet()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
|
|
||||||
|
if (now - lastExitSwipeAt <= 2_000L) {
|
||||||
|
stopService(
|
||||||
|
Intent(
|
||||||
|
this@WalletActivity,
|
||||||
|
WalletMonitoringService::class.java
|
||||||
|
)
|
||||||
|
)
|
||||||
|
finishAndRemoveTask()
|
||||||
|
} else {
|
||||||
|
lastExitSwipeAt = now
|
||||||
|
Toast.makeText(
|
||||||
|
this@WalletActivity,
|
||||||
|
"Swipe again to exit",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
createPaymentNotificationChannel()
|
createPaymentNotificationChannel()
|
||||||
requestNotificationPermission()
|
requestNotificationPermission()
|
||||||
|
|
||||||
|
|
@ -312,6 +353,38 @@ class WalletActivity : FragmentActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
|
override fun onBackPressed() {
|
||||||
|
if (!walletExists()) {
|
||||||
|
super.onBackPressed()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mainWalletVisible) {
|
||||||
|
showMainWallet()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
|
|
||||||
|
if (now - lastExitSwipeAt <= 2_000L) {
|
||||||
|
stopService(
|
||||||
|
Intent(
|
||||||
|
this,
|
||||||
|
WalletMonitoringService::class.java
|
||||||
|
)
|
||||||
|
)
|
||||||
|
finishAndRemoveTask()
|
||||||
|
} else {
|
||||||
|
lastExitSwipeAt = now
|
||||||
|
Toast.makeText(
|
||||||
|
this,
|
||||||
|
"Swipe again to exit",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
refreshHandler.removeCallbacks(refreshRunnable)
|
refreshHandler.removeCallbacks(refreshRunnable)
|
||||||
|
|
||||||
|
|
@ -1223,14 +1296,11 @@ class WalletActivity : FragmentActivity() {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
content.addView(space(20))
|
setContentView(
|
||||||
content.addView(
|
scroll(content) {
|
||||||
primaryButton("Back to wallet") {
|
|
||||||
showMainWallet()
|
showMainWallet()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
setContentView(scroll(content))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun currentVersionName(): String {
|
private fun currentVersionName(): String {
|
||||||
|
|
@ -1555,7 +1625,28 @@ class WalletActivity : FragmentActivity() {
|
||||||
)
|
)
|
||||||
content.addView(space(12))
|
content.addView(space(12))
|
||||||
|
|
||||||
setContentView(scroll(content))
|
setContentView(
|
||||||
|
scroll(content) {
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
|
|
||||||
|
if (now - lastExitSwipeAt <= 2_000L) {
|
||||||
|
stopService(
|
||||||
|
Intent(
|
||||||
|
this,
|
||||||
|
WalletMonitoringService::class.java
|
||||||
|
)
|
||||||
|
)
|
||||||
|
finishAndRemoveTask()
|
||||||
|
} else {
|
||||||
|
lastExitSwipeAt = now
|
||||||
|
Toast.makeText(
|
||||||
|
this,
|
||||||
|
"Swipe again to exit",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
refreshHandler.removeCallbacks(refreshRunnable)
|
refreshHandler.removeCallbacks(refreshRunnable)
|
||||||
refreshHandler.postDelayed(refreshRunnable, 60_000L)
|
refreshHandler.postDelayed(refreshRunnable, 60_000L)
|
||||||
|
|
@ -1747,14 +1838,11 @@ class WalletActivity : FragmentActivity() {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
content.addView(space(20))
|
setContentView(
|
||||||
content.addView(
|
scroll(content) {
|
||||||
primaryButton("Back to wallet") {
|
|
||||||
showMainWallet()
|
showMainWallet()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
setContentView(scroll(content))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun waitForTransactionAcceptance(
|
private fun waitForTransactionAcceptance(
|
||||||
|
|
@ -2166,12 +2254,11 @@ class WalletActivity : FragmentActivity() {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
content.addView(space(20))
|
setContentView(
|
||||||
content.addView(secondaryButton("Back to wallet") {
|
scroll(content) {
|
||||||
showMainWallet()
|
showMainWallet()
|
||||||
})
|
}
|
||||||
|
)
|
||||||
setContentView(scroll(content))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun insertScannedAddress(rawValue: String?) {
|
private fun insertScannedAddress(rawValue: String?) {
|
||||||
|
|
@ -2702,8 +2789,41 @@ class WalletActivity : FragmentActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun scroll(content: View): ScrollView {
|
private fun scroll(
|
||||||
return ScrollView(this).apply {
|
content: View,
|
||||||
|
onSwipeBack: (() -> Unit)? = null
|
||||||
|
): ScrollView {
|
||||||
|
return object : ScrollView(this) {
|
||||||
|
private var downX = 0f
|
||||||
|
private var downY = 0f
|
||||||
|
|
||||||
|
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
|
||||||
|
if (onSwipeBack != null) {
|
||||||
|
when (event.actionMasked) {
|
||||||
|
MotionEvent.ACTION_DOWN -> {
|
||||||
|
downX = event.x
|
||||||
|
downY = event.y
|
||||||
|
}
|
||||||
|
|
||||||
|
MotionEvent.ACTION_UP -> {
|
||||||
|
val dx = event.x - downX
|
||||||
|
val dy = kotlin.math.abs(event.y - downY)
|
||||||
|
|
||||||
|
if (
|
||||||
|
downX <= width - dp(40) &&
|
||||||
|
dx <= -dp(120) &&
|
||||||
|
dy <= dp(100)
|
||||||
|
) {
|
||||||
|
onSwipeBack()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.dispatchTouchEvent(event)
|
||||||
|
}
|
||||||
|
}.apply {
|
||||||
setBackgroundColor(backgroundColor)
|
setBackgroundColor(backgroundColor)
|
||||||
addView(content)
|
addView(content)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue