Consolidate the send flow.

This commit is contained in:
Kevin Gorham 2020-03-26 09:49:42 -04:00
parent 9550cdbbc7
commit 6ee39f1987
No known key found for this signature in database
GPG Key ID: CCA55602DF49FC38
7 changed files with 53 additions and 16 deletions

View File

@ -6,9 +6,11 @@ object Report {
object Funnel {
sealed class Send(stepName: String, step: Int, vararg properties: Pair<String, Any>) : Feedback.Funnel("send", stepName, step, *properties) {
object SendPageComplete : Send("sendpagecomplete", 11)
object ConfirmPageComplete : Send("confirmpagecomplete", 30)
// todo remove these
object AddressPageComplete : Send("addresspagecomplete", 10)
object MemoPageComplete : Send("memopagecomplete", 20)
object ConfirmPageComplete : Send("confirmpagecomplete", 30)
// Beginning of send
object SendSelected : Send("sendselected", 50)
@ -87,6 +89,7 @@ object Report {
RECEIVE,
RESTORE,
SCAN,
SEND,
SEND_ADDRESS("send.address"),
SEND_CONFIRM("send.confirm"),
SEND_FINAL("send.final"),
@ -127,6 +130,15 @@ object Report {
RESTORE_BACK("restore.back"),
SCAN_RECEIVE("scan.receive"),
SCAN_BACK("scan.back"),
SEND_BACK("send.back"),
SEND_MAX("send.max"),
SEND_NEXT("send.next"),
SEND_PASTE("send.paste"),
SEND_DONE_ADDRESS("send.done.address"),
SEND_DONE_AMOUNT("send.done.amount"),
SEND_SCAN("send.scan"),
//TODO: remove these before PR
SEND_ADDRESS_MAX("send.address.max"),
SEND_ADDRESS_NEXT("send.address.next"),
SEND_ADDRESS_PASTE("send.address.paste"),
@ -134,13 +146,16 @@ object Report {
SEND_ADDRESS_DONE_ADDRESS("send.address.done.address"),
SEND_ADDRESS_DONE_AMOUNT("send.address.done.amount"),
SEND_ADDRESS_SCAN("send.address.scan"),
SEND_CONFIRM_BACK("send.confirm.back"),
SEND_CONFIRM_NEXT("send.confirm.next"),
SEND_FINAL_EXIT("send.final.exit"),
SEND_FINAL_RETRY("send.final.retry"),
SEND_FINAL_CLOSE("send.final.close"),
SEND_MEMO_INCLUDE("send.memo.include"),
SEND_MEMO_EXCLUDE("send.memo.exclude"),
SEND_MEMO_INCLUDE("send.address.include"),
SEND_MEMO_EXCLUDE("send.address.exclude"),
SEND_MEMO_NEXT("send.memo.next"),
SEND_MEMO_SKIP("send.memo.skip"),
SEND_MEMO_CLEAR("send.memo.clear"),

View File

@ -81,7 +81,7 @@ class ScanFragment : BaseFragment<FragmentScanBinding>() {
if (viewModel.isNotValid(qrContent)) image.close() // continue scanning
else {
sendViewModel.toAddress = qrContent
mainActivity?.safeNavigate(R.id.action_nav_scan_to_nav_send_address)
mainActivity?.safeNavigate(R.id.action_nav_scan_to_nav_send)
}
}
}

View File

@ -30,7 +30,7 @@ class SendConfirmFragment : BaseFragment<FragmentSendConfirmBinding>() {
binding.buttonNext.setOnClickListener {
onSend().also { tapped(SEND_CONFIRM_NEXT) }
}
R.id.action_nav_send_confirm_to_nav_send_memo.let {
R.id.action_nav_send_confirm_to_nav_send.let {
binding.backButtonHitArea.onClickNavTo(it) { tapped(SEND_CONFIRM_BACK) }
onBackPressNavTo(it) { tapped(SEND_CONFIRM_BACK) }
}

View File

@ -122,7 +122,7 @@ class SendFinalFragment : BaseFragment<FragmentSendFinalBinding>() {
}
private fun onRetry() {
mainActivity?.navController?.popBackStack(R.id.nav_send_address, false)
mainActivity?.navController?.popBackStack(R.id.nav_send, false)
}
}

View File

@ -36,7 +36,7 @@ class SendMemoFragment : BaseFragment<FragmentSendMemoBinding>() {
onClearMemo().also { tapped(SEND_MEMO_CLEAR) }
}
R.id.action_nav_send_memo_to_nav_send_address.let {
R.id.action_nav_send_memo_to_nav_send.let {
binding.backButtonHitArea.onClickNavTo(it) { tapped(SEND_MEMO_BACK) }
onBackPressNavTo(it) { tapped(SEND_MEMO_BACK) }
}
@ -102,7 +102,7 @@ class SendMemoFragment : BaseFragment<FragmentSendMemoBinding>() {
sendViewModel.memo = binding.inputMemo.text.toString()
onNext()
} else {
mainActivity?.safeNavigate(R.id.action_nav_send_memo_to_nav_send_address)
mainActivity?.safeNavigate(R.id.action_nav_send_memo_to_nav_send)
}
}

View File

@ -57,7 +57,10 @@ class SendViewModel @Inject constructor() : ViewModel() {
field = value
}
val isShielded get() = toAddress.startsWith("z")
// TODO: consider adding more complex logic here, perhaps adding an Account object that helps with determining which funds to use. This can be refactored once t-addrs actually work.
var useShieldedFunds = true
var isMemoAdded = false
fun send(): Flow<PendingTransaction> {
funnel(SendSelected)
val memoToSend = if (includeFromAddress) "$memo\nsent from\n$fromAddress" else memo

View File

@ -22,7 +22,7 @@
app:destination="@id/nav_landing" />
<action
android:id="@+id/action_nav_home_to_send"
app:destination="@id/nav_send_address"
app:destination="@id/nav_send"
app:exitAnim="@anim/anim_exit_to_left"
app:enterAnim="@anim/anim_enter_from_right"/>
<action
@ -50,8 +50,8 @@
android:name="cash.z.ecc.android.ui.scan.ScanFragment"
tools:layout="@layout/fragment_scan">
<action
android:id="@+id/action_nav_scan_to_nav_send_address"
app:destination="@id/nav_send_address"
android:id="@+id/action_nav_scan_to_nav_send"
app:destination="@id/nav_send"
app:popUpTo="@id/nav_scan"
app:popUpToInclusive="true"/>
<action
@ -79,6 +79,25 @@
<!-- Send Navigation -->
<!-- -->
<fragment
android:id="@+id/nav_send"
android:name="cash.z.ecc.android.ui.send.SendFragment"
tools:layout="@layout/fragment_send" >
<action
android:id="@+id/action_nav_send_to_nav_scan"
app:destination="@id/nav_scan" />
<action
android:id="@+id/action_nav_send_to_nav_home"
app:destination="@id/nav_home"
app:enterAnim="@anim/anim_enter_from_left"
app:exitAnim="@anim/anim_exit_to_right"/>
<action
android:id="@+id/action_nav_send_to_send_confirm"
app:destination="@id/nav_send_confirm"
app:exitAnim="@anim/anim_exit_to_left"
app:enterAnim="@anim/anim_enter_from_right"/>
</fragment>
<fragment
android:id="@+id/nav_send_address"
android:name="cash.z.ecc.android.ui.send.SendAddressFragment"
@ -108,8 +127,8 @@
app:exitAnim="@anim/anim_exit_to_left"
app:enterAnim="@anim/anim_enter_from_right"/>
<action
android:id="@+id/action_nav_send_memo_to_nav_send_address"
app:destination="@id/nav_send_address"
android:id="@+id/action_nav_send_memo_to_nav_send"
app:destination="@id/nav_send"
app:enterAnim="@anim/anim_enter_from_left"
app:exitAnim="@anim/anim_exit_to_right" />
</fragment>
@ -125,8 +144,8 @@
app:popUpToInclusive="true"
app:enterAnim="@anim/anim_fade_in"/>
<action
android:id="@+id/action_nav_send_confirm_to_nav_send_memo"
app:destination="@id/nav_send_memo"
android:id="@+id/action_nav_send_confirm_to_nav_send"
app:destination="@id/nav_send"
app:enterAnim="@anim/anim_enter_from_left"
app:exitAnim="@anim/anim_exit_to_right" />
</fragment>