Skip to content

Commit a0af83c

Browse files
authored
Merge pull request #646 from soramitsu/staging
2.0.8 moonbeam staking
2 parents a55bb86 + 880b63c commit a0af83c

File tree

506 files changed

+14207
-6438
lines changed

Some content is hidden

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

506 files changed

+14207
-6438
lines changed

Jenkinsfile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
@Library('jenkins-library')
22

3+
// Job properties
4+
def jobParams = [
5+
booleanParam(defaultValue: false, description: 'push to the dev profile', name: 'prDeployment'),
6+
]
7+
38
def pipeline = new org.android.AppPipeline(
49
steps: this,
510
sonar: false,
611
pushReleaseNotes: false,
712
testCmd: 'runTest',
813
dockerImage: 'build-tools/android-build-box-jdk11:latest',
9-
publishCmd: 'publishReleaseApk'
14+
publishCmd: 'publishReleaseApk',
15+
jobParams: jobParams,
16+
appPushNoti: true
1017
)
1118
pipeline.runPipeline('fearless')

app/build.gradle

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import com.github.triplet.gradle.androidpublisher.ReleaseStatus
33
apply plugin: 'com.android.application'
44
apply plugin: 'com.google.gms.google-services'
55
apply plugin: 'kotlin-android'
6-
apply plugin: 'kotlin-android-extensions'
76
apply plugin: 'kotlin-kapt'
7+
apply plugin: 'kotlin-parcelize'
88
apply plugin: 'com.google.firebase.appdistribution'
99
apply plugin: "com.github.triplet.play"
1010
apply from: "../scripts/versions.gradle"
@@ -63,6 +63,23 @@ android {
6363
groups = localFirebaseGroup
6464
}
6565
}
66+
pr {
67+
signingConfig signingConfigs.ci
68+
matchingFallbacks = ['debug']
69+
versionNameSuffix '-pr'
70+
applicationIdSuffix '.dev'
71+
//Init firebase
72+
def localReleaseNotes = releaseNotes()
73+
def localFirebaseGroup = firebaseGroup()
74+
firebaseAppDistribution {
75+
releaseNotes = localReleaseNotes
76+
groups = localFirebaseGroup
77+
}
78+
}
79+
}
80+
81+
buildFeatures {
82+
viewBinding = true
6683
}
6784

6885
bundle {
@@ -81,6 +98,7 @@ android {
8198

8299
jvmTarget = '1.8'
83100
}
101+
namespace 'jp.co.soramitsu.app'
84102
}
85103

86104
play {
@@ -129,7 +147,7 @@ dependencies {
129147
implementation daggerDep
130148
kapt daggerKapt
131149

132-
implementation lifecycleDep
150+
implementation lifecycleProcessDep
133151
kapt lifecycleKapt
134152

135153
implementation lifeCycleKtxDep

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools"
4-
package="jp.co.soramitsu.app">
3+
xmlns:tools="http://schemas.android.com/tools">
54

65
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
76
<uses-permission android:name="android.permission.CAMERA" />

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

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import jp.co.soramitsu.feature_staking_impl.presentation.payouts.confirm.Confirm
5353
import jp.co.soramitsu.feature_staking_impl.presentation.payouts.confirm.model.ConfirmPayoutPayload
5454
import jp.co.soramitsu.feature_staking_impl.presentation.payouts.detail.PayoutDetailsFragment
5555
import jp.co.soramitsu.feature_staking_impl.presentation.payouts.model.PendingPayoutParcelable
56+
import jp.co.soramitsu.feature_staking_impl.presentation.staking.balance.StakingBalanceFragment
5657
import jp.co.soramitsu.feature_staking_impl.presentation.staking.bond.confirm.ConfirmBondMoreFragment
5758
import jp.co.soramitsu.feature_staking_impl.presentation.staking.bond.confirm.ConfirmBondMorePayload
5859
import jp.co.soramitsu.feature_staking_impl.presentation.staking.bond.select.SelectBondMoreFragment
@@ -67,7 +68,12 @@ import jp.co.soramitsu.feature_staking_impl.presentation.staking.rewardDestinati
6768
import jp.co.soramitsu.feature_staking_impl.presentation.staking.rewardDestination.confirm.parcel.ConfirmRewardDestinationPayload
6869
import jp.co.soramitsu.feature_staking_impl.presentation.staking.unbond.confirm.ConfirmUnbondFragment
6970
import jp.co.soramitsu.feature_staking_impl.presentation.staking.unbond.confirm.ConfirmUnbondPayload
71+
import jp.co.soramitsu.feature_staking_impl.presentation.staking.unbond.select.SelectUnbondFragment
72+
import jp.co.soramitsu.feature_staking_impl.presentation.staking.unbond.select.SelectUnbondPayload
73+
import jp.co.soramitsu.feature_staking_impl.presentation.validators.change.custom.settings.CustomValidatorsSettingsFragment
74+
import jp.co.soramitsu.feature_staking_impl.presentation.validators.details.CollatorDetailsFragment
7075
import jp.co.soramitsu.feature_staking_impl.presentation.validators.details.ValidatorDetailsFragment
76+
import jp.co.soramitsu.feature_staking_impl.presentation.validators.parcel.CollatorDetailsParcelModel
7177
import jp.co.soramitsu.feature_staking_impl.presentation.validators.parcel.ValidatorDetailsParcelModel
7278
import jp.co.soramitsu.feature_wallet_impl.presentation.AssetPayload
7379
import jp.co.soramitsu.feature_wallet_impl.presentation.WalletRouter
@@ -83,11 +89,12 @@ import jp.co.soramitsu.feature_wallet_impl.presentation.transaction.detail.extri
8389
import jp.co.soramitsu.feature_wallet_impl.presentation.transaction.detail.reward.RewardDetailFragment
8490
import jp.co.soramitsu.feature_wallet_impl.presentation.transaction.detail.reward.RewardDetailsPayload
8591
import jp.co.soramitsu.feature_wallet_impl.presentation.transaction.detail.transfer.TransferDetailFragment
92+
import jp.co.soramitsu.runtime.multiNetwork.chain.model.Chain
8693
import jp.co.soramitsu.runtime.multiNetwork.chain.model.ChainId
8794
import jp.co.soramitsu.splash.SplashRouter
88-
import kotlinx.android.parcel.Parcelize
8995
import kotlinx.coroutines.flow.Flow
9096
import kotlinx.coroutines.flow.flowOf
97+
import kotlinx.parcelize.Parcelize
9198

9299
@Parcelize
93100
class NavComponentDelayedNavigation(val globalActionId: Int, val extras: Bundle? = null) : DelayedNavigation
@@ -163,10 +170,10 @@ class Navigator :
163170

164171
val navOptions = NavOptions.Builder()
165172
.setPopUpTo(R.id.pincodeFragment, true)
166-
.setEnterAnim(R.anim.fragment_open_enter)
167-
.setExitAnim(R.anim.fragment_open_exit)
168-
.setPopEnterAnim(R.anim.fragment_close_enter)
169-
.setPopExitAnim(R.anim.fragment_close_exit)
173+
.setEnterAnim(R.animator.fragment_open_enter)
174+
.setExitAnim(R.animator.fragment_open_exit)
175+
.setPopEnterAnim(R.animator.fragment_close_enter)
176+
.setPopExitAnim(R.animator.fragment_close_exit)
170177
.build()
171178

172179
navController?.navigate(delayedNavigation.globalActionId, delayedNavigation.extras, navOptions)
@@ -225,6 +232,10 @@ class Navigator :
225232
navController?.navigate(R.id.openStartChangeValidatorsFragment)
226233
}
227234

235+
override fun openStartChangeCollators() {
236+
navController?.navigate(R.id.openStartChangeCollatorsFragment)
237+
}
238+
228239
override fun openStory(story: StoryGroupModel) {
229240
navController?.navigate(R.id.open_staking_story, StoryFragment.getBundle(story))
230241
}
@@ -241,8 +252,9 @@ class Navigator :
241252
navController?.navigate(R.id.action_open_confirm_payout, ConfirmPayoutFragment.getBundle(payload))
242253
}
243254

244-
override fun openStakingBalance() {
245-
navController?.navigate(R.id.action_mainFragment_to_stakingBalanceFragment)
255+
override fun openStakingBalance(collatorAddress: String?) {
256+
val bundle = collatorAddress?.let { StakingBalanceFragment.getBundle(it) }
257+
navController?.navigate(R.id.action_mainFragment_to_stakingBalanceFragment, bundle)
246258
}
247259

248260
override fun openBondMore(payload: SelectBondMorePayload) {
@@ -257,8 +269,8 @@ class Navigator :
257269
navController?.navigate(R.id.action_return_to_staking_balance)
258270
}
259271

260-
override fun openSelectUnbond() {
261-
navController?.navigate(R.id.action_stakingBalanceFragment_to_selectUnbondFragment)
272+
override fun openSelectUnbond(payload: SelectUnbondPayload) {
273+
navController?.navigate(R.id.action_stakingBalanceFragment_to_selectUnbondFragment, SelectUnbondFragment.getBundle(payload))
262274
}
263275

264276
override fun openConfirmUnbond(payload: ConfirmUnbondPayload) {
@@ -351,6 +363,14 @@ class Navigator :
351363
)
352364
}
353365

366+
override fun openRecommendedCollators() {
367+
navController?.navigate(R.id.action_startChangeCollatorsFragment_to_recommendedCollatorsFragment)
368+
}
369+
370+
override fun openSelectCustomCollators() {
371+
navController?.navigate(R.id.action_startChangeCollatorsFragment_to_selectCustomCollatorsFragment)
372+
}
373+
354374
override fun openRecommendedValidators() {
355375
navController?.navigate(R.id.action_startChangeValidatorsFragment_to_recommendedValidatorsFragment)
356376
}
@@ -359,14 +379,24 @@ class Navigator :
359379
navController?.navigate(R.id.action_startChangeValidatorsFragment_to_selectCustomValidatorsFragment)
360380
}
361381

362-
override fun openCustomValidatorsSettings() {
363-
navController?.navigate(R.id.action_selectCustomValidatorsFragment_to_settingsCustomValidatorsFragment)
382+
override fun openCustomValidatorsSettingsFromValidator() {
383+
val bundle = CustomValidatorsSettingsFragment.getBundle(Chain.Asset.StakingType.RELAYCHAIN)
384+
navController?.navigate(R.id.action_selectCustomValidatorsFragment_to_settingsCustomValidatorsFragment, bundle)
385+
}
386+
387+
override fun openCustomValidatorsSettingsFromCollator() {
388+
val bundle = CustomValidatorsSettingsFragment.getBundle(Chain.Asset.StakingType.PARACHAIN)
389+
navController?.navigate(R.id.action_selectCustomCollatorsFragment_to_settingsCustomValidatorsFragment, bundle)
364390
}
365391

366392
override fun openSearchCustomValidators() {
367393
navController?.navigate(R.id.action_selectCustomValidatorsFragment_to_searchCustomValidatorsFragment)
368394
}
369395

396+
override fun openSearchCustomCollators() {
397+
navController?.navigate(R.id.action_selectCustomCollatorsFragment_to_searchCustomValidatorsFragment)
398+
}
399+
370400
override fun openReviewCustomValidators() {
371401
navController?.navigate(R.id.action_selectCustomValidatorsFragment_to_reviewCustomValidatorsFragment)
372402
}
@@ -387,6 +417,10 @@ class Navigator :
387417
navController?.navigate(R.id.open_validator_details, ValidatorDetailsFragment.getBundle(validatorDetails))
388418
}
389419

420+
override fun openCollatorDetails(collatorDetails: CollatorDetailsParcelModel) {
421+
navController?.navigate(R.id.open_collator_details, CollatorDetailsFragment.getBundle(collatorDetails))
422+
}
423+
390424
override fun openChooseRecipient(assetPayload: AssetPayload) {
391425
val bundle = ChooseRecipientFragment.getBundle(assetPayload)
392426

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.os.Bundle
88
import android.view.View
99
import android.view.animation.Animation
1010
import android.view.animation.TranslateAnimation
11+
import android.widget.TextView
1112
import androidx.core.view.WindowInsetsCompat
1213
import androidx.core.view.isVisible
1314
import androidx.lifecycle.Lifecycle
@@ -28,7 +29,6 @@ import jp.co.soramitsu.common.utils.EventObserver
2829
import jp.co.soramitsu.common.utils.showToast
2930
import jp.co.soramitsu.common.utils.updatePadding
3031
import jp.co.soramitsu.common.view.bottomSheet.AlertBottomSheet
31-
import kotlinx.android.synthetic.main.activity_root.rootNetworkBar
3232
import javax.inject.Inject
3333

3434
class RootActivity : BaseActivity<RootViewModel>(), LifecycleObserver {
@@ -41,6 +41,8 @@ class RootActivity : BaseActivity<RootViewModel>(), LifecycleObserver {
4141
@Inject
4242
lateinit var navigator: Navigator
4343

44+
private val rootNetworkBar: TextView by lazy { findViewById(R.id.rootNetworkBar) }
45+
4446
override fun inject() {
4547
FeatureUtils.getFeature<RootComponent>(this, RootApi::class.java)
4648
.mainActivityComponentFactory()
@@ -182,16 +184,18 @@ class RootActivity : BaseActivity<RootViewModel>(), LifecycleObserver {
182184
}
183185

184186
val errorColor = getColor(R.color.colorAccent)
185-
rootNetworkBar.setText(R.string.network_status_connecting)
186-
rootNetworkBar.setBackgroundColor(errorColor)
187+
findViewById<TextView>(R.id.rootNetworkBar).apply {
188+
setText(R.string.network_status_connecting)
189+
setBackgroundColor(errorColor)
190+
}
187191
val animation = TranslateAnimation(0f, 0f, -ANIM_START_POSITION, 0f)
188192
animation.duration = ANIM_DURATION
189-
rootNetworkBar.startAnimation(animation)
190-
rootNetworkBar.isVisible = true
193+
findViewById<TextView>(R.id.rootNetworkBar).startAnimation(animation)
194+
findViewById<TextView>(R.id.rootNetworkBar).isVisible = true
191195
}
192196

193197
private fun hideBadConnectionView() {
194-
if (!rootNetworkBar.isVisible) {
198+
if (!findViewById<TextView>(R.id.rootNetworkBar).isVisible) {
195199
return
196200
}
197201

@@ -206,13 +210,13 @@ class RootActivity : BaseActivity<RootViewModel>(), LifecycleObserver {
206210
}
207211

208212
override fun onAnimationEnd(p0: Animation?) {
209-
rootNetworkBar.isVisible = false
213+
findViewById<TextView>(R.id.rootNetworkBar).isVisible = false
210214
}
211215

212216
override fun onAnimationStart(p0: Animation?) {
213217
}
214218
})
215-
rootNetworkBar.startAnimation(animation)
219+
findViewById<TextView>(R.id.rootNetworkBar).startAnimation(animation)
216220
}
217221

218222
override fun changeLanguage() {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ class RootViewModel(
9191

9292
private fun handleUpdatesSideEffect(sideEffect: Updater.SideEffect) {
9393
// pass
94-
hashCode()
9594
}
9695

9796
private fun updatePhishingAddresses() {

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

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
package jp.co.soramitsu.app.root.presentation.main
22

3-
import android.os.Bundle
4-
import android.view.LayoutInflater
5-
import android.view.View
6-
import android.view.ViewGroup
73
import androidx.activity.OnBackPressedCallback
84
import androidx.navigation.NavController
95
import androidx.navigation.NavDestination
106
import androidx.navigation.fragment.NavHostFragment
117
import androidx.navigation.ui.NavigationUI.onNavDestinationSelected
128
import androidx.navigation.ui.setupWithNavController
139
import jp.co.soramitsu.app.R
10+
import jp.co.soramitsu.app.databinding.FragmentMainBinding
1411
import jp.co.soramitsu.app.root.di.RootApi
1512
import jp.co.soramitsu.app.root.di.RootComponent
1613
import jp.co.soramitsu.common.base.BaseFragment
1714
import jp.co.soramitsu.common.di.FeatureUtils
1815
import jp.co.soramitsu.common.utils.updatePadding
19-
import kotlinx.android.synthetic.main.fragment_main.bottomNavHost
20-
import kotlinx.android.synthetic.main.fragment_main.bottomNavigationView
16+
import jp.co.soramitsu.common.view.viewBinding
2117

22-
class MainFragment : BaseFragment<MainViewModel>() {
18+
class MainFragment : BaseFragment<MainViewModel>(R.layout.fragment_main) {
2319

2420
private var navController: NavController? = null
2521

@@ -29,9 +25,7 @@ class MainFragment : BaseFragment<MainViewModel>() {
2925
}
3026
}
3127

32-
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
33-
return inflater.inflate(R.layout.fragment_main, container, false)
34-
}
28+
private val binding by viewBinding(FragmentMainBinding::bind)
3529

3630
override fun onDestroyView() {
3731
super.onDestroyView()
@@ -40,17 +34,17 @@ class MainFragment : BaseFragment<MainViewModel>() {
4034
}
4135

4236
override fun initViews() {
43-
bottomNavigationView.setOnApplyWindowInsetsListener { _, insets ->
37+
binding.bottomNavigationView.setOnApplyWindowInsetsListener { _, insets ->
4438
// overwrite BottomNavigation behavior and ignore insets
4539
insets
4640
}
4741

48-
bottomNavHost.setOnApplyWindowInsetsListener { v, insets ->
42+
binding.bottomNavHost.setOnApplyWindowInsetsListener { v, insets ->
4943
val systemWindowInsetBottom = insets.systemWindowInsetBottom
5044

5145
// post to prevent bottomNavigationView.height being 0 if callback is called before view has been measured
5246
v.post {
53-
val padding = (systemWindowInsetBottom - bottomNavigationView.height).coerceAtLeast(0)
47+
val padding = (systemWindowInsetBottom - binding.bottomNavigationView.height).coerceAtLeast(0)
5448
v.updatePadding(bottom = padding)
5549
}
5650

@@ -62,9 +56,9 @@ class MainFragment : BaseFragment<MainViewModel>() {
6256

6357
navController = nestedNavHostFragment.navController
6458

65-
bottomNavigationView.setupWithNavController(navController!!)
59+
binding.bottomNavigationView.setupWithNavController(navController!!)
6660

67-
bottomNavigationView.setOnNavigationItemSelectedListener { item ->
61+
binding.bottomNavigationView.setOnNavigationItemSelectedListener { item ->
6862
onNavDestinationSelected(item, navController!!)
6963
}
7064

@@ -84,10 +78,10 @@ class MainFragment : BaseFragment<MainViewModel>() {
8478

8579
override fun subscribe(viewModel: MainViewModel) {
8680
viewModel.stakingAvailableLiveData.observe {
87-
bottomNavigationView.menu.findItem(R.id.stakingFragment).isVisible = it
81+
binding.bottomNavigationView.menu.findItem(R.id.stakingFragment).isVisible = it
8882
}
8983
}
9084

9185
private fun isAtHomeTab(destination: NavDestination) =
92-
destination.id == navController!!.graph.startDestination
86+
destination.id == navController!!.graph.startDestinationId
9387
}

0 commit comments

Comments
 (0)