Skip to content

Commit 333072a

Browse files
authored
Fix/ui (#125)
* Pincode fixes * [Fix] Send zero checks and precision Refactoring * refactoring * refactoring * improve page loading * Russian localisation fix * Fix pin code strings * Change send button progress style * [Fix] recyclerview inconsistency crash * [Fix] Current account is shown in my accounts * Code style
1 parent e4139ee commit 333072a

File tree

51 files changed

+360
-265
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+360
-265
lines changed

app/src/main/java/jp/co/soramitsu/app/root/navigation/Navigator.kt

Lines changed: 68 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package jp.co.soramitsu.app.root.navigation
22

3+
import android.os.Bundle
4+
import androidx.appcompat.app.AppCompatActivity
35
import androidx.navigation.NavController
6+
import androidx.navigation.NavOptions
47
import jp.co.soramitsu.app.R
58
import jp.co.soramitsu.app.root.presentation.RootRouter
9+
import jp.co.soramitsu.common.navigation.DelayedNavigation
610
import jp.co.soramitsu.common.utils.postToUiThread
711
import jp.co.soramitsu.feature_account_api.domain.model.Node
812
import jp.co.soramitsu.feature_account_impl.presentation.AccountRouter
@@ -19,6 +23,7 @@ import jp.co.soramitsu.feature_account_impl.presentation.mnemonic.confirm.Confir
1923
import jp.co.soramitsu.feature_account_impl.presentation.node.details.NodeDetailsFragment
2024
import jp.co.soramitsu.feature_account_impl.presentation.pincode.PinCodeAction
2125
import jp.co.soramitsu.feature_account_impl.presentation.pincode.PincodeFragment
26+
import jp.co.soramitsu.feature_account_impl.presentation.pincode.ToolbarConfiguration
2227
import jp.co.soramitsu.feature_onboarding_impl.OnboardingRouter
2328
import jp.co.soramitsu.feature_onboarding_impl.presentation.create.CreateAccountFragment
2429
import jp.co.soramitsu.feature_onboarding_impl.presentation.welcome.WelcomeFragment
@@ -31,35 +36,36 @@ import jp.co.soramitsu.feature_wallet_impl.presentation.send.amount.ChooseAmount
3136
import jp.co.soramitsu.feature_wallet_impl.presentation.send.confirm.ConfirmTransferFragment
3237
import jp.co.soramitsu.feature_wallet_impl.presentation.transaction.detail.TransactionDetailFragment
3338
import jp.co.soramitsu.splash.SplashRouter
39+
import kotlinx.android.parcel.Parcelize
40+
41+
@Parcelize
42+
class NavComponentDelayedNavigation(val globalActionId: Int, val extras: Bundle? = null) : DelayedNavigation
3443

3544
class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, RootRouter {
3645

3746
private var navController: NavController? = null
47+
private var activity: AppCompatActivity? = null
3848

39-
fun attachNavController(navController: NavController) {
49+
fun attach(navController: NavController, activity: AppCompatActivity) {
4050
this.navController = navController
51+
this.activity = activity
4152
}
4253

43-
override fun openAddFirstAccount() {
44-
navController?.navigate(R.id.action_splash_to_onboarding, WelcomeFragment.getBundle(false))
54+
fun detach() {
55+
navController = null
56+
activity = null
4557
}
4658

47-
override fun openCreatePin() {
48-
val action = PinCodeAction.Create(R.id.action_open_main)
49-
val bundle = PincodeFragment.getPinCodeBundle(action)
50-
navController?.navigate(R.id.action_splash_to_pin, bundle)
59+
override fun openAddFirstAccount() {
60+
navController?.navigate(R.id.action_splash_to_onboarding, WelcomeFragment.getBundle(false))
5161
}
5262

53-
override fun openCheckPin() {
54-
val action = PinCodeAction.Check(R.id.action_open_main)
63+
override fun openInitialCheckPincode() {
64+
val action = PinCodeAction.Check(NavComponentDelayedNavigation(R.id.action_open_main), ToolbarConfiguration())
5565
val bundle = PincodeFragment.getPinCodeBundle(action)
5666
navController?.navigate(R.id.action_splash_to_pin, bundle)
5767
}
5868

59-
override fun openMainScreen() {
60-
navController?.navigate(R.id.action_splash_to_main)
61-
}
62-
6369
override fun openCreateAccount(selectedNetworkType: Node.NetworkType?) {
6470
navController?.navigate(R.id.action_welcomeFragment_to_createAccountFragment, CreateAccountFragment.getBundle(selectedNetworkType))
6571
}
@@ -72,14 +78,25 @@ class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, R
7278
navController?.navigate(R.id.action_open_main)
7379
}
7480

75-
override fun openDestination(destination: Int) {
76-
navController?.navigate(destination)
81+
override fun openAfterPinCode(delayedNavigation: DelayedNavigation) {
82+
require(delayedNavigation is NavComponentDelayedNavigation)
83+
84+
val navOptions = NavOptions.Builder()
85+
.setPopUpTo(R.id.pincodeFragment, true)
86+
.setEnterAnim(R.anim.fragment_open_enter)
87+
.setExitAnim(R.anim.fragment_open_exit)
88+
.setPopEnterAnim(R.anim.fragment_close_enter)
89+
.setPopExitAnim(R.anim.fragment_close_exit)
90+
.build()
91+
92+
navController?.navigate(delayedNavigation.globalActionId, delayedNavigation.extras, navOptions)
7793
}
7894

7995
override fun openCreatePincode() {
80-
val action = PinCodeAction.Create(R.id.action_open_main)
81-
val bundle = PincodeFragment.getPinCodeBundle(action)
96+
val bundle = buildCreatePinBundle()
97+
8298
when (navController?.currentDestination?.id) {
99+
R.id.splashFragment -> navController?.navigate(R.id.action_splash_to_pin, bundle)
83100
R.id.importAccountFragment -> navController?.navigate(R.id.action_importAccountFragment_to_pincodeFragment, bundle)
84101
R.id.confirmMnemonicFragment -> navController?.navigate(R.id.action_confirmMnemonicFragment_to_pincodeFragment, bundle)
85102
}
@@ -128,7 +145,11 @@ class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, R
128145
}
129146

130147
override fun back() {
131-
navController?.navigateUp()
148+
val popped = navController!!.popBackStack()
149+
150+
if (!popped) {
151+
activity!!.finish()
152+
}
132153
}
133154

134155
override fun openChooseRecipient() {
@@ -222,16 +243,16 @@ class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, R
222243
navController?.navigate(R.id.action_nodes_to_onboarding, WelcomeFragment.getBundleWithNetworkType(true, networkType))
223244
}
224245

225-
override fun openExportMnemonic(accountAddress: String) {
246+
override fun openExportMnemonic(accountAddress: String): DelayedNavigation {
226247
val extras = ExportMnemonicFragment.getBundle(accountAddress)
227248

228-
navController?.navigate(R.id.action_accountDetailsFragment_to_exportMnemonicFragment, extras)
249+
return NavComponentDelayedNavigation(R.id.action_export_mnemonic, extras)
229250
}
230251

231-
override fun openExportSeed(accountAddress: String) {
252+
override fun openExportSeed(accountAddress: String): DelayedNavigation {
232253
val extras = ExportSeedFragment.getBundle(accountAddress)
233254

234-
navController?.navigate(R.id.action_accountDetailsFragment_to_exportSeedFragment, extras)
255+
return NavComponentDelayedNavigation(R.id.action_export_seed, extras)
235256
}
236257

237258
override fun openConfirmMnemonicOnExport(mnemonic: List<String>) {
@@ -240,10 +261,10 @@ class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, R
240261
navController?.navigate(R.id.action_exportMnemonicFragment_to_confirmExportMnemonicFragment, extras)
241262
}
242263

243-
override fun openExportJsonPassword(accountAddress: String) {
264+
override fun openExportJsonPassword(accountAddress: String): DelayedNavigation {
244265
val extras = ExportJsonPasswordFragment.getBundle(accountAddress)
245266

246-
navController?.navigate(R.id.action_accountDetailsFragment_to_exportJsonPasswordFragment, extras)
267+
return NavComponentDelayedNavigation(R.id.action_export_json, extras)
247268
}
248269

249270
override fun openExportJsonConfirm(payload: ExportJsonConfirmPayload) {
@@ -261,4 +282,26 @@ class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, R
261282
val bundle = PincodeFragment.getPinCodeBundle(action)
262283
navController?.navigate(R.id.action_mainFragment_to_pinCodeFragment, bundle)
263284
}
264-
}
285+
286+
override fun withPinCodeCheckRequired(
287+
delayedNavigation: DelayedNavigation,
288+
createMode: Boolean,
289+
pinCodeTitleRes: Int?
290+
) {
291+
val action = if (createMode) {
292+
PinCodeAction.Create(delayedNavigation)
293+
} else {
294+
PinCodeAction.Check(delayedNavigation, ToolbarConfiguration(pinCodeTitleRes, true))
295+
}
296+
297+
val extras = PincodeFragment.getPinCodeBundle(action)
298+
299+
navController?.navigate(R.id.open_pincode_check, extras)
300+
}
301+
302+
private fun buildCreatePinBundle(): Bundle {
303+
val delayedNavigation = NavComponentDelayedNavigation(R.id.action_open_main)
304+
val action = PinCodeAction.Create(delayedNavigation)
305+
return PincodeFragment.getPinCodeBundle(action)
306+
}
307+
}

app/src/main/java/jp/co/soramitsu/app/root/presentation/RootActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
4242
super.onCreate(savedInstanceState)
4343

4444
navController.setGraph(R.navigation.root_nav_graph)
45-
navigator.attachNavController(navController)
45+
navigator.attach(navController, this)
4646

4747
rootNetworkBar.setOnApplyWindowInsetsListener { view, insets ->
4848
view.updatePadding(top = insets.systemWindowInsetTop)
@@ -53,6 +53,12 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
5353
// processJsonOpenIntent()
5454
}
5555

56+
override fun onDestroy() {
57+
super.onDestroy()
58+
59+
navigator.detach()
60+
}
61+
5662
override fun layoutResource(): Int {
5763
return R.layout.activity_root
5864
}

app/src/main/res/navigation/main_nav_graph.xml

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,31 @@
4141
android:id="@+id/action_return_to_wallet"
4242
app:destination="@id/mainFragment"
4343
app:enterAnim="@anim/fragment_close_enter"
44-
app:popUpTo="@id/main_nav_graph"
45-
app:launchSingleTop="true"
4644
app:exitAnim="@anim/fragment_close_exit"
45+
app:launchSingleTop="true"
4746
app:popEnterAnim="@anim/fragment_open_enter"
48-
app:popExitAnim="@anim/fragment_open_exit" />
47+
app:popExitAnim="@anim/fragment_open_exit"
48+
app:popUpTo="@id/main_nav_graph" />
4949

50-
<action android:id="@+id/finish_export_flow"
51-
app:popUpTo="@+id/accountDetailsFragment"
50+
<action
51+
android:id="@+id/finish_export_flow"
5252
app:enterAnim="@anim/fragment_close_enter"
5353
app:exitAnim="@anim/fragment_close_exit"
5454
app:popEnterAnim="@anim/fragment_open_enter"
55-
app:popExitAnim="@anim/fragment_open_exit" />
55+
app:popExitAnim="@anim/fragment_open_exit"
56+
app:popUpTo="@+id/accountDetailsFragment" />
57+
58+
<action
59+
android:id="@+id/action_export_mnemonic"
60+
app:destination="@id/exportMnemonicFragment" />
61+
62+
<action
63+
android:id="@+id/action_export_seed"
64+
app:destination="@id/exportSeedFragment" />
65+
66+
<action
67+
android:id="@+id/action_export_json"
68+
app:destination="@id/exportJsonPasswordFragment" />
5669

5770
<fragment
5871
android:id="@+id/mainFragment"
@@ -190,32 +203,7 @@
190203
android:id="@+id/accountDetailsFragment"
191204
android:name="jp.co.soramitsu.feature_account_impl.presentation.account.details.AccountDetailsFragment"
192205
android:label="AccountDetailsFragment"
193-
tools:layout="@layout/fragment_account_details">
194-
195-
<action
196-
android:id="@+id/action_accountDetailsFragment_to_exportMnemonicFragment"
197-
app:destination="@id/exportMnemonicFragment"
198-
app:enterAnim="@anim/fragment_open_enter"
199-
app:exitAnim="@anim/fragment_open_exit"
200-
app:popEnterAnim="@anim/fragment_close_enter"
201-
app:popExitAnim="@anim/fragment_close_exit" />
202-
203-
<action
204-
android:id="@+id/action_accountDetailsFragment_to_exportSeedFragment"
205-
app:destination="@id/exportSeedFragment"
206-
app:enterAnim="@anim/fragment_open_enter"
207-
app:exitAnim="@anim/fragment_open_exit"
208-
app:popEnterAnim="@anim/fragment_close_enter"
209-
app:popExitAnim="@anim/fragment_close_exit" />
210-
211-
<action
212-
app:enterAnim="@anim/fragment_open_enter"
213-
app:exitAnim="@anim/fragment_open_exit"
214-
app:popEnterAnim="@anim/fragment_close_enter"
215-
app:popExitAnim="@anim/fragment_close_exit"
216-
android:id="@+id/action_accountDetailsFragment_to_exportJsonPasswordFragment"
217-
app:destination="@id/exportJsonPasswordFragment" />
218-
</fragment>
206+
tools:layout="@layout/fragment_account_details" />
219207

220208
<fragment
221209
android:id="@+id/editAccountsFragment"
@@ -333,26 +321,26 @@
333321
tools:layout="@layout/fragment_export_seed" />
334322

335323
<fragment
336-
tools:layout="@layout/fragment_export_json_password"
337324
android:id="@+id/exportJsonPasswordFragment"
338325
android:name="jp.co.soramitsu.feature_account_impl.presentation.exporting.json.password.ExportJsonPasswordFragment"
339-
android:label="ExportJsonPasswordFragment" >
326+
android:label="ExportJsonPasswordFragment"
327+
tools:layout="@layout/fragment_export_json_password">
340328

341329
<action
330+
android:id="@+id/action_exportJsonPasswordFragment_to_exportJsonConfirmFragment"
331+
app:destination="@id/exportJsonConfirmFragment"
342332
app:enterAnim="@anim/fragment_open_enter"
343333
app:exitAnim="@anim/fragment_open_exit"
344334
app:popEnterAnim="@anim/fragment_close_enter"
345-
app:popExitAnim="@anim/fragment_close_exit"
346-
android:id="@+id/action_exportJsonPasswordFragment_to_exportJsonConfirmFragment"
347-
app:destination="@id/exportJsonConfirmFragment" />
335+
app:popExitAnim="@anim/fragment_close_exit" />
348336

349337
</fragment>
350338

351339
<fragment
352-
tools:layout="@layout/fragment_export_json_confirm"
353340
android:id="@+id/exportJsonConfirmFragment"
354341
android:name="jp.co.soramitsu.feature_account_impl.presentation.exporting.json.confirm.ExportJsonConfirmFragment"
355-
android:label="ExportJsonConfirmFragment" />
342+
android:label="ExportJsonConfirmFragment"
343+
tools:layout="@layout/fragment_export_json_confirm" />
356344

357345
<fragment
358346
android:id="@+id/pincodeFragment"

app/src/main/res/navigation/onboarding_nav_graph.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
app:destination="@id/pincodeFragment"
6161
app:enterAnim="@anim/fragment_open_enter"
6262
app:exitAnim="@anim/fragment_open_exit"
63-
app:popUpTo="@id/root_nav_graph"
63+
app:popUpTo="@id/welcomeFragment"
6464
app:popUpToInclusive="true"
6565
app:popEnterAnim="@anim/fragment_close_enter"
6666
app:popExitAnim="@anim/fragment_close_exit">
@@ -97,7 +97,7 @@
9797
android:id="@+id/action_confirmMnemonicFragment_to_pincodeFragment"
9898
app:destination="@id/pincodeFragment"
9999
app:enterAnim="@anim/fragment_open_enter"
100-
app:popUpTo="@id/root_nav_graph"
100+
app:popUpTo="@id/welcomeFragment"
101101
app:popUpToInclusive="true"
102102
app:exitAnim="@anim/fragment_open_exit"
103103
app:popEnterAnim="@anim/fragment_close_enter"

app/src/main/res/navigation/root_nav_graph.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@
1919
app:popUpTo="@id/root_nav_graph"
2020
app:popUpToInclusive="true" />
2121

22+
<action
23+
android:id="@+id/open_pincode_check"
24+
app:destination="@+id/pincodeFragment"
25+
app:enterAnim="@anim/fragment_open_enter"
26+
app:exitAnim="@anim/fragment_open_exit"
27+
app:popEnterAnim="@anim/fragment_close_enter"
28+
app:popExitAnim="@anim/fragment_close_exit" />
29+
2230
<action
2331
android:id="@+id/openPrivacy"
2432
app:destination="@id/privacyFragment"
@@ -56,14 +64,6 @@
5664
app:popUpTo="@id/splashFragment"
5765
app:popUpToInclusive="true" />
5866

59-
<action
60-
android:id="@+id/action_splash_to_main"
61-
app:destination="@id/main_nav_graph"
62-
app:popEnterAnim="@anim/fragment_close_enter"
63-
app:popExitAnim="@anim/fragment_close_exit"
64-
app:popUpTo="@id/splashFragment"
65-
app:popUpToInclusive="true" />
66-
6767
</fragment>
6868

6969
<fragment

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
buildscript {
22
ext {
33
// App version
4-
versionName = '0.4.1'
5-
versionCode = 2
4+
versionName = '1.0.0'
5+
versionCode = 4
66

77
// SDK and tools
88
compileSdkVersion = 29

common/src/main/java/jp/co/soramitsu/common/interfaces/BackButtonListener.kt

Lines changed: 0 additions & 6 deletions
This file was deleted.

common/src/main/java/jp/co/soramitsu/common/interfaces/BottomNavigationVisibilityListener.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)