Skip to content

Commit 003bd96

Browse files
authored
Merge pull request #138 from soramitsu/rc/1.1.1
v1.1.1
2 parents 085cbf6 + 945e75e commit 003bd96

File tree

86 files changed

+565
-1969
lines changed

Some content is hidden

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

86 files changed

+565
-1969
lines changed

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ dependencies {
113113
implementation rxCallAdapterDep
114114

115115
implementation gifDep
116+
117+
compileOnly wsDep
116118
}
117119

118120
task printVersion {

app/src/main/AndroidManifest.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
android:name="jp.co.soramitsu.app.root.presentation.RootActivity"
2222
android:screenOrientation="portrait"
2323
android:theme="@style/Theme.Soramitsu.Fearless"
24+
android:launchMode="singleTask"
2425
android:windowSoftInputMode="adjustResize">
2526
<intent-filter tools:ignore="AppLinkUrlError">
2627
<action android:name="android.intent.action.VIEW" />
@@ -33,6 +34,17 @@
3334

3435
<category android:name="android.intent.category.LAUNCHER" />
3536
</intent-filter>
37+
38+
<intent-filter android:autoVerify="true">
39+
<data
40+
android:host="buy-success"
41+
android:scheme="fearless" />
42+
43+
<action android:name="android.intent.action.VIEW" />
44+
45+
<category android:name="android.intent.category.DEFAULT" />
46+
<category android:name="android.intent.category.BROWSABLE" />
47+
</intent-filter>
3648
</activity>
3749

3850
<activity

app/src/main/java/jp/co/soramitsu/app/root/di/RootDependencies.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package jp.co.soramitsu.app.root.di
33
import jp.co.soramitsu.common.data.network.AppLinksProvider
44
import jp.co.soramitsu.common.data.network.rpc.ConnectionManager
55
import jp.co.soramitsu.common.mixin.api.NetworkStateMixin
6+
import jp.co.soramitsu.common.resources.ResourceManager
67
import jp.co.soramitsu.feature_account_api.domain.interfaces.AccountRepository
78
import jp.co.soramitsu.feature_wallet_api.domain.interfaces.WalletRepository
9+
import jp.co.soramitsu.feature_wallet_api.domain.model.BuyTokenRegistry
810

911
interface RootDependencies {
1012
fun networkStateMixin(): NetworkStateMixin
@@ -16,4 +18,8 @@ interface RootDependencies {
1618
fun walletRepository(): WalletRepository
1719

1820
fun appLinksProvider(): AppLinksProvider
21+
22+
fun buyTokenRegistry(): BuyTokenRegistry
23+
24+
fun resourceManager(): ResourceManager
1925
}

app/src/main/java/jp/co/soramitsu/app/root/di/RootFeatureModule.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import jp.co.soramitsu.app.root.domain.RootInteractor
66
import jp.co.soramitsu.common.di.scope.FeatureScope
77
import jp.co.soramitsu.feature_account_api.domain.interfaces.AccountRepository
88
import jp.co.soramitsu.feature_wallet_api.domain.interfaces.WalletRepository
9+
import jp.co.soramitsu.feature_wallet_api.domain.model.BuyTokenRegistry
910

1011
@Module
1112
class RootFeatureModule {
@@ -14,8 +15,9 @@ class RootFeatureModule {
1415
@FeatureScope
1516
fun provideRootInteractor(
1617
accountRepository: AccountRepository,
17-
walletRepository: WalletRepository
18+
walletRepository: WalletRepository,
19+
buyTokenRegistry: BuyTokenRegistry
1820
): RootInteractor {
19-
return RootInteractor(accountRepository, walletRepository)
21+
return RootInteractor(accountRepository, buyTokenRegistry, walletRepository)
2022
}
2123
}

app/src/main/java/jp/co/soramitsu/app/root/domain/RootInteractor.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import io.reactivex.Completable
44
import jp.co.soramitsu.feature_account_api.domain.interfaces.AccountRepository
55
import jp.co.soramitsu.feature_account_api.domain.model.Node
66
import jp.co.soramitsu.feature_wallet_api.domain.interfaces.WalletRepository
7+
import jp.co.soramitsu.feature_wallet_api.domain.model.BuyTokenRegistry
8+
import jp.co.soramitsu.feature_wallet_impl.data.buyToken.ExternalProvider
79

810
class RootInteractor(
911
private val accountRepository: AccountRepository,
12+
private val buyTokenRegistry: BuyTokenRegistry,
1013
private val walletRepository: WalletRepository
1114
) {
1215
fun observeSelectedNode() = accountRepository.observeSelectedNode()
@@ -15,4 +18,8 @@ class RootInteractor(
1518
.filter { it.network.type == networkType }
1619
.distinctUntilChanged { old, new -> old.address == new.address }
1720
.switchMapCompletable(walletRepository::listenForUpdates)
21+
22+
fun isBuyProviderRedirectLink(link: String) = buyTokenRegistry.availableProviders
23+
.filterIsInstance<ExternalProvider>()
24+
.any { it.redirectLink == link }
1825
}

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,6 @@ class Navigator : SplashRouter, OnboardingRouter, AccountRouter, WalletRouter, R
204204
navController?.navigate(R.id.action_open_receive)
205205
}
206206

207-
override fun openBuy() {
208-
navController?.navigate(R.id.action_open_buy)
209-
}
210-
211207
override fun returnToMain() {
212208
// to achieve smooth animation
213209
postToUiThread {

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package jp.co.soramitsu.app.root.presentation
22

3+
import android.content.Intent
34
import android.os.Bundle
45
import androidx.lifecycle.Observer
56
import androidx.navigation.NavController
@@ -10,11 +11,12 @@ import jp.co.soramitsu.app.root.di.RootComponent
1011
import jp.co.soramitsu.app.root.navigation.Navigator
1112
import jp.co.soramitsu.common.base.BaseActivity
1213
import jp.co.soramitsu.common.di.FeatureUtils
14+
import jp.co.soramitsu.common.utils.EventObserver
1315
import jp.co.soramitsu.common.utils.setVisible
16+
import jp.co.soramitsu.common.utils.showToast
1417
import jp.co.soramitsu.common.utils.updatePadding
1518
import jp.co.soramitsu.splash.presentation.SplashBackgroundHolder
1619
import kotlinx.android.synthetic.main.activity_root.mainView
17-
import kotlinx.android.synthetic.main.activity_root.navHost
1820
import kotlinx.android.synthetic.main.activity_root.rootNetworkBar
1921
import javax.inject.Inject
2022

@@ -49,6 +51,8 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
4951
insets
5052
}
5153

54+
intent?.let(::processIntent)
55+
5256
// processJsonOpenIntent()
5357
}
5458

@@ -62,6 +66,12 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
6266
return R.layout.activity_root
6367
}
6468

69+
override fun onNewIntent(intent: Intent) {
70+
super.onNewIntent(intent)
71+
72+
processIntent(intent)
73+
}
74+
6575
override fun initViews() {
6676
}
6777

@@ -81,6 +91,10 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
8191
viewModel.showConnectingBarLiveData.observe(this, Observer { show ->
8292
rootNetworkBar.setVisible(show)
8393
})
94+
95+
viewModel.messageLiveData.observe(this, EventObserver {
96+
showToast(it)
97+
})
8498
}
8599

86100
override fun removeSplashBackground() {
@@ -95,6 +109,12 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
95109
// restartAfterLanguageChange(this)
96110
}
97111

112+
private fun processIntent(intent: Intent) {
113+
val uri = intent.data?.toString()
114+
115+
uri?.let { viewModel.externalUrlOpened(uri) }
116+
}
117+
98118
// private fun processJsonOpenIntent() {
99119
// if (Intent.ACTION_VIEW == intent.action && intent.type != null) {
100120
// if ("application/json" == intent.type) {

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,21 @@ package jp.co.soramitsu.app.root.presentation
33
import io.reactivex.android.schedulers.AndroidSchedulers
44
import io.reactivex.disposables.Disposable
55
import io.reactivex.schedulers.Schedulers
6+
import jp.co.soramitsu.app.R
67
import jp.co.soramitsu.app.root.domain.RootInteractor
78
import jp.co.soramitsu.common.base.BaseViewModel
89
import jp.co.soramitsu.common.data.network.rpc.ConnectionManager
910
import jp.co.soramitsu.common.data.network.rpc.LifecycleCondition
1011
import jp.co.soramitsu.common.mixin.api.NetworkStateMixin
1112
import jp.co.soramitsu.common.mixin.api.NetworkStateUi
13+
import jp.co.soramitsu.common.resources.ResourceManager
1214
import jp.co.soramitsu.common.utils.plusAssign
1315

1416
class RootViewModel(
1517
private val interactor: RootInteractor,
1618
private val rootRouter: RootRouter,
1719
private val connectionManager: ConnectionManager,
20+
private val resourceManager: ResourceManager,
1821
private val networkStateMixin: NetworkStateMixin
1922
) : BaseViewModel(), NetworkStateUi by networkStateMixin {
2023
private var socketSourceDisposable: Disposable? = null
@@ -93,4 +96,10 @@ class RootViewModel(
9396
willBeClearedForLanguageChange = false
9497
}
9598
}
99+
100+
fun externalUrlOpened(uri: String) {
101+
if (interactor.isBuyProviderRedirectLink(uri)) {
102+
showMessage(resourceManager.getString(R.string.buy_completed))
103+
}
104+
}
96105
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import jp.co.soramitsu.common.data.network.rpc.ConnectionManager
1414
import jp.co.soramitsu.common.di.viewmodel.ViewModelKey
1515
import jp.co.soramitsu.common.di.viewmodel.ViewModelModule
1616
import jp.co.soramitsu.common.mixin.api.NetworkStateMixin
17+
import jp.co.soramitsu.common.resources.ResourceManager
1718

1819
@Module(
1920
includes = [
@@ -32,12 +33,14 @@ class RootActivityModule {
3233
interactor: RootInteractor,
3334
rootRouter: RootRouter,
3435
connectionManager: ConnectionManager,
36+
resourceManager: ResourceManager,
3537
networkStateMixin: NetworkStateMixin
3638
): ViewModel {
3739
return RootViewModel(
3840
interactor,
3941
rootRouter,
4042
connectionManager,
43+
resourceManager,
4144
networkStateMixin
4245
)
4346
}

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,6 @@
6767
android:id="@+id/action_export_json"
6868
app:destination="@id/exportJsonPasswordFragment" />
6969

70-
<action
71-
android:id="@+id/action_open_buy"
72-
app:destination="@+id/buyFragment"
73-
app:enterAnim="@anim/fragment_open_enter"
74-
app:exitAnim="@anim/fragment_open_exit"
75-
app:popEnterAnim="@anim/fragment_close_enter"
76-
app:popExitAnim="@anim/fragment_close_exit" />
77-
7870
<fragment
7971
android:id="@+id/mainFragment"
8072
android:name="jp.co.soramitsu.app.root.presentation.main.MainFragment"
@@ -356,10 +348,4 @@
356348
android:label="fragment_pincode"
357349
tools:layout="@layout/fragment_pincode" />
358350

359-
<fragment
360-
android:id="@+id/buyFragment"
361-
android:name="jp.co.soramitsu.feature_wallet_impl.presentation.buy.BuyFragment"
362-
android:label="BuyFragment"
363-
tools:layout="@layout/fragment_buy" />
364-
365351
</navigation>

build.gradle

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

77
// SDK and tools
88
compileSdkVersion = 29
@@ -41,7 +41,7 @@ buildscript {
4141

4242
bouncyCastleVersion = '1.60'
4343

44-
fearlessLibVersion = '1.0.27'
44+
fearlessLibVersion = '1.0.28'
4545

4646
gifVersion = '1.2.19'
4747

@@ -105,9 +105,8 @@ buildscript {
105105
archCoreTestDep = "androidx.arch.core:core-testing:$architectureComponentVersion"
106106

107107
progressButtonDep = "com.github.razir.progressbutton:progressbutton:$progressButtonsVersion"
108-
109-
kotlin_version = '1.3.61'
110108
}
109+
111110
repositories {
112111
google()
113112
jcenter()

common/src/main/java/jp/co/soramitsu/common/data/network/AndroidLogger.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package jp.co.soramitsu.common.data.network
22

33
import android.util.Log
4-
import jp.co.soramitsu.fearless_utils.wsrpc.Logger
4+
import jp.co.soramitsu.fearless_utils.wsrpc.logging.Logger
55

66
const val TAG = "AndroidLogger"
77

common/src/main/java/jp/co/soramitsu/common/data/network/AppLinksProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package jp.co.soramitsu.common.data.network
22

3-
import jp.co.soramitsu.common.utils.requirePrefix
3+
import jp.co.soramitsu.fearless_utils.extensions.requirePrefix
44
import jp.co.soramitsu.feature_account_api.domain.model.Node
55

66
class AppLinksProvider(

common/src/main/java/jp/co/soramitsu/common/data/network/rpc/ConnectionManager.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package jp.co.soramitsu.common.data.network.rpc
22

33
import io.reactivex.Observable
4+
import jp.co.soramitsu.fearless_utils.wsrpc.State
45

56
enum class LifecycleCondition {
67
ALLOWED, FORBIDDEN, STOPPED

0 commit comments

Comments
 (0)