Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
6ed2aba
asset list sort
PankraSerg Jan 10, 2022
91ba736
relay chains only polkadot and kusama by id
PankraSerg Jan 10, 2022
0bdebdf
override java var to v11
PankraSerg Jan 11, 2022
935c735
Merge pull request #418 from soramitsu/master_backmerge_to_develop
PankraSerg Jan 12, 2022
173f340
asset list sort
PankraSerg Jan 10, 2022
b87b8c3
relay chains only polkadot and kusama by id
PankraSerg Jan 10, 2022
abb3f29
asset list sort
PankraSerg Jan 10, 2022
de96b43
Merge remote-tracking branch 'origin/1458_assets_sort' into 1458_asse…
PankraSerg Jan 12, 2022
f84af8b
fix tests
PankraSerg Jan 12, 2022
4917627
Merge pull request #419 from soramitsu/1458_assets_sort
PankraSerg Jan 12, 2022
fdd3363
fix icon for asset
PankraSerg Jan 12, 2022
e1eaa2a
remove unused icons
PankraSerg Jan 12, 2022
0d1da82
1455: Statemine/Statemint parachains support
PankraSerg Jan 14, 2022
c6d9f6f
FLW-1439 Add manually nodes switching for multi-assets, remove some o…
Jan 14, 2022
85767a6
FLW-1486 opens the main screen after switching to a node
Jan 17, 2022
6d4c1ca
FLW-1485 fix settings UI
Jan 18, 2022
b56e2eb
FLW-1439 #422 pull request fixes
Jan 18, 2022
79bd02d
FLW-1489 fixed settings details wrong flow
Jan 19, 2022
bc90e05
FLW-1489 fixed wrong icons in wallets list
Jan 19, 2022
4794136
1453 Moonriver/Moonbeam parachains support
arvifox Jan 20, 2022
21395d9
1475 fix asset details chain badge
PankraSerg Jan 17, 2022
c6fe155
FLW-1490 fix wrong balance on settings screen
Jan 20, 2022
6ca4b2e
1145: account export
PankraSerg Jan 17, 2022
3af56bd
1145: account export
PankraSerg Jan 18, 2022
92416f1
FLW-1498 accounts migration on new ethereum derivation path
Jan 21, 2022
b7be7f4
FLW-1480 fix quick inputs calculation
Jan 21, 2022
0917831
1483 fix partial Incomplete translation of the RU version of the app
PankraSerg Jan 21, 2022
c428ba6
1474: fix When switching between wallets, assets list centered on the…
PankraSerg Jan 21, 2022
f438c70
FLW-1497 fix wrong fee in some cases on staking reward
Jan 24, 2022
c8830a0
1145 export and 1439 change node: merge info popups
PankraSerg Jan 24, 2022
35ef06a
Change acala genesis hash in old logic
Jan 25, 2022
e9afa66
fix crash in options caused by parachain chainId change
PankraSerg Jan 25, 2022
68f3c8b
fix metadata update error
PankraSerg Jan 25, 2022
2db5ff7
Fix empty mnemonic bug
Jan 26, 2022
72ec2b7
Merge pull request #438 from soramitsu/feature/empty_mnemonic_fix
Deneath Jan 26, 2022
1047552
hide ethereum export json and seed options
PankraSerg Jan 26, 2022
c8e77a2
updates_for_release
PankraSerg Jan 26, 2022
e6577cd
gradle build updates (ide update)
PankraSerg Jan 26, 2022
103b317
sort account in wallet
PankraSerg Jan 26, 2022
a539982
FLW-1491 Replace account avatar stub on new avatar
Jan 31, 2022
ff960b1
Merge pull request #445 from soramitsu/feature/FLW-1491-new-account-a…
Deneath Jan 31, 2022
5268610
1476: subscan and polkascan rework
PankraSerg Jan 28, 2022
187c5f2
1533: Update asset details screen, some UI/UX refinements
PankraSerg Feb 2, 2022
09c4501
1545: Network management and node switching
PankraSerg Feb 4, 2022
f14e7eb
1558: Setup fiddler for QA
PankraSerg Feb 7, 2022
2fe7726
Merge pull request #448 from soramitsu/feature/1558_Setup_fiddler_for_QA
Deneath Feb 7, 2022
e312cd1
FLW-1148 extract network badge to custom view
Feb 1, 2022
a1b9141
FLW-1148 add manage assets screen
Feb 8, 2022
0662d88
1556: new develop icons
PankraSerg Feb 8, 2022
70ab4d2
1556: subquery reward param fix; remove alerts for errors on balance …
PankraSerg Feb 8, 2022
30d45ae
Merge pull request #451 from soramitsu/1547_subquery_reward_param_fix
Deneath Feb 8, 2022
6d36bef
1451: Kintsugi/Interlay parachains support
PankraSerg Feb 10, 2022
bec1788
1533: Add "Copy address"
PankraSerg Feb 10, 2022
92918c1
1569 Fix chain wo nodes crash
PankraSerg Feb 10, 2022
4ccdb76
1588: Fix transfer on Kintsugi parachain
PankraSerg Feb 11, 2022
a546cc5
1588: Fix transfer on Kintsugi parachain
PankraSerg Feb 11, 2022
399eca2
FLW-1590 fix manage assets sorting
Feb 14, 2022
e3fbbe0
Merge pull request #463 from soramitsu/feature/FLW-1590-sorting-bug
Deneath Feb 14, 2022
4353d62
FLW-1512 fix import from seed and json for ethereum
Feb 14, 2022
a297c74
FLW-1512 add export for eth-based accounts
Feb 14, 2022
2b5b581
Merge pull request #462 from soramitsu/feature/FLW-1512-eth-based-import
Deneath Feb 14, 2022
336fef4
FLW-1600 fix address sharing
Feb 15, 2022
ae0947c
Merge pull request #464 from soramitsu/feature/FLW-1600-address-shari…
Deneath Feb 15, 2022
04bd048
1555_Wallet_Export_various_flows (#465)
PankraSerg Feb 16, 2022
58a9922
update publish library version; update build gradle version
PankraSerg Feb 11, 2022
788e23c
FLW-1601 fix create/import string resources, add derivation path fiel…
Feb 15, 2022
d49a7de
Merge pull request #467 from soramitsu/feature/FLW-1601-eth-derivatio…
Deneath Feb 16, 2022
6edbc33
1483 update RU translations
PankraSerg Feb 16, 2022
f2b66f2
FLW-1601 new create/import flow
Feb 17, 2022
6dafcbd
Merge pull request #469 from soramitsu/feature/FLW-1601-new-create/im…
Deneath Feb 18, 2022
56dad76
FLW-1615 import/export bug fixes
Feb 21, 2022
a3750bb
Merge pull request #471 from soramitsu/feature/FLW-1615-import/export…
Deneath Feb 22, 2022
105ae19
1602: import chain account
PankraSerg Feb 20, 2022
bb8e204
FLW-1609 add eth options for export
Feb 22, 2022
f24d368
Merge pull request #472 from soramitsu/feature/FLW-1609-add-eth-optio…
Deneath Feb 22, 2022
3aa18aa
fix welcome strings
Feb 22, 2022
9d3659e
Merge pull request #473 from soramitsu/feature/fix-strings
Deneath Feb 22, 2022
394441d
Fix export issues after merge conflicts
Feb 24, 2022
cc529c2
Merge pull request #474 from soramitsu/feature/conflicts-fixes
Deneath Feb 24, 2022
e62d4fd
1608 fix Can't hide some assets from the list
PankraSerg Feb 24, 2022
a058922
1571 validators suggested by algorithm
PankraSerg Feb 24, 2022
218392a
1404 hide crowdloan from active when cap is nearer then minContribution
PankraSerg Feb 25, 2022
58e881d
1638_various_fixes (#478)
PankraSerg Feb 26, 2022
ae9c865
FLW-1636 add derivation path validations
Feb 26, 2022
f8646d9
FLW-1636 add derivation path validation for import
Feb 28, 2022
c8edd20
Separate json export by eth/substrate
Feb 28, 2022
e99b837
Merge pull request #481 from soramitsu/feature/export-wallet-as-json-fix
Deneath Feb 28, 2022
4e1d161
Merge branch 'develop' into feature/FLW-1636-derivation-path-validati…
Deneath Feb 28, 2022
3a83444
Merge pull request #480 from soramitsu/feature/FLW-1636-derivation-pa…
Deneath Feb 28, 2022
5dea89f
update chains url;
PankraSerg Feb 28, 2022
2c0cf32
fix chain assets show in lists
PankraSerg Feb 28, 2022
6ca2e67
Add export JSON to file
Feb 28, 2022
9648b1b
Merge branch 'develop' into assets_fix
PankraSerg Feb 28, 2022
8b0212b
fix chain assets show in lists update
PankraSerg Feb 28, 2022
1e98411
Merge pull request #484 from soramitsu/assets_fix
Deneath Mar 1, 2022
70629c3
hotfix kusama update removed MaxNominators const
PankraSerg Mar 1, 2022
c3e5280
1568 Confirm mnemonic screen no error alert
PankraSerg Mar 1, 2022
cee5e81
Merge pull request #487 from soramitsu/1568_Confirm_mnemonic_screen_n…
Deneath Mar 2, 2022
46455e5
fix chain asset balance
PankraSerg Mar 1, 2022
0806df8
Merge pull request #486 from soramitsu/fix/chain_asset_balance
Deneath Mar 2, 2022
5cc69ac
Merge remote-tracking branch 'origin/master' into develop
PankraSerg Mar 2, 2022
11d75bd
fix backmerge
PankraSerg Mar 2, 2022
c231ec1
Merge pull request #489 from soramitsu/master_backmerge_to_develop
PankraSerg Mar 2, 2022
d2f8c19
Merge branch 'master' into backmerge
PankraSerg Mar 2, 2022
4febdef
Merge pull request #491 from soramitsu/backmerge
PankraSerg Mar 2, 2022
7e7c321
1670 fix Continue button doesn't react while Staking
PankraSerg Mar 9, 2022
0363d0a
Merge branch 'develop' into 1670_fix_continue_in_staking
PankraSerg Mar 9, 2022
8a33779
Merge pull request #494 from soramitsu/1670_fix_continue_in_staking
PankraSerg Mar 9, 2022
7674406
Merge branch 'master' into develop_backmerge
PankraSerg Mar 9, 2022
731b878
Merge pull request #497 from soramitsu/develop_backmerge
PankraSerg Mar 9, 2022
4f9f265
FLW-1657 add different fiat currencies
Mar 9, 2022
3867443
Merge pull request #498 from soramitsu/feature/FLW-1657-different-fia…
Deneath Mar 11, 2022
3d77f2b
FLW-1667 fix advanced block for import
Mar 11, 2022
8576c82
Add current selected currency indicator
Mar 15, 2022
1c09edb
Merge pull request #500 from soramitsu/feature/fiat_currency_selector…
Deneath Mar 15, 2022
61e939f
1655 skeletons
PankraSerg Mar 16, 2022
90a3adf
Merge pull request #503 from soramitsu/1655_skeletons
PankraSerg Mar 16, 2022
fd8409b
1655 connection indicator
PankraSerg Mar 16, 2022
8edee8d
Merge pull request #505 from soramitsu/1655_connection_indicator
Deneath Mar 17, 2022
42ee307
FLW-1690 fix currency symbol bug
Mar 17, 2022
36f3270
Merge pull request #506 from soramitsu/feature/FLW-1690-currency-symb…
Deneath Mar 17, 2022
971cbe2
1689_1693_fixes (#507)
PankraSerg Mar 17, 2022
57be5b7
FLW-1694 fix arab symbol bug
Mar 17, 2022
dc32b43
Merge pull request #508 from soramitsu/feature/FLW-1694-arab-symbol-bug
Deneath Mar 17, 2022
e5e4406
Set up Google play publishing (#509)
Cre-eD Mar 21, 2022
6a17465
1689, 1695 skeleton issues
PankraSerg Mar 21, 2022
20a4110
Merge branch 'develop' into fix/1689_1695_skeleton_issues
Deneath Mar 22, 2022
5d36015
Merge pull request #511 from soramitsu/fix/1689_1695_skeleton_issues
PankraSerg Mar 22, 2022
a342317
FLW-1697 add minimum stake alert
Mar 22, 2022
307d1bf
Merge pull request #512 from soramitsu/feature/FLW-1697-minimum-stake
Deneath Mar 22, 2022
e3b08fc
1689, 1695 skeleton issues
PankraSerg Mar 22, 2022
b1818d6
Merge pull request #514 from soramitsu/fix/1689_1695_skeletons
Deneath Mar 24, 2022
db307e2
fix 1705 staking alert logic
PankraSerg Mar 24, 2022
71d77d4
Merge pull request #515 from soramitsu/fix/1705_staking_alerts_logic
PankraSerg Mar 24, 2022
b965a56
interlay parachain fix
PankraSerg Mar 24, 2022
9c3cb58
Merge pull request #517 from soramitsu/fix/interlay
PankraSerg Mar 24, 2022
9b05172
feature/FLW-1688 systematic solution (#516)
Deneath Mar 25, 2022
2fa8ede
new types format; change json urls
PankraSerg Mar 24, 2022
9794335
FLW-1710 comment out sorting logic while update
Mar 25, 2022
34d2602
Merge pull request #518 from soramitsu/feature/FLW-1710-default-sort-bug
Deneath Mar 25, 2022
fd4a1ae
1704 fix staking crashes
PankraSerg Mar 25, 2022
84f6bf1
1706 hide ethereum chain when no account specified
PankraSerg Mar 25, 2022
6ab3fd2
1688 min version check logic
PankraSerg Mar 25, 2022
8fabdb7
1688 fix chain min version check logic
PankraSerg Mar 25, 2022
0e57d3a
version up -> 2.0.4 (56)
PankraSerg Mar 25, 2022
c02cd51
Merge remote-tracking branch 'origin/master' into backmerge_to_master
PankraSerg Mar 25, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package jp.co.soramitsu.app.root.domain

import jp.co.soramitsu.common.domain.model.toDomain
import jp.co.soramitsu.core.updater.UpdateSystem
import jp.co.soramitsu.core.updater.Updater
import jp.co.soramitsu.feature_wallet_api.domain.interfaces.WalletRepository
Expand All @@ -23,4 +24,6 @@ class RootInteractor(
walletRepository.updatePhishingAddresses()
}
}

suspend fun getRemoteConfig() = walletRepository.getRemoteConfig().toDomain()
}
12 changes: 12 additions & 0 deletions app/src/main/java/jp/co/soramitsu/app/root/navigation/Navigator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,18 @@ class Navigator :
navController?.navigate(R.id.open_pincode_check, extras)
}

override fun openPincodeCheck() {
val action = PinCodeAction.Check(null, ToolbarConfiguration())
val bundle = PincodeFragment.getPinCodeBundle(action)
navController?.navigate(R.id.open_pincode_check, bundle)
}

override fun openNavGraph() {
val action = PinCodeAction.Check(null, ToolbarConfiguration())
val bundle = PincodeFragment.getPinCodeBundle(action)
navController?.navigate(R.id.root_nav_graph, bundle)
}

private fun buildCreatePinBundle(): Bundle {
val delayedNavigation = NavComponentDelayedNavigation(R.id.action_open_main)
val action = PinCodeAction.Create(delayedNavigation)
Expand Down
125 changes: 114 additions & 11 deletions app/src/main/java/jp/co/soramitsu/app/root/presentation/RootActivity.kt
Original file line number Diff line number Diff line change
@@ -1,25 +1,44 @@
package jp.co.soramitsu.app.root.presentation

import android.annotation.SuppressLint
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.view.animation.Animation
import android.view.animation.TranslateAnimation
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import javax.inject.Inject
import jp.co.soramitsu.app.R
import jp.co.soramitsu.app.root.di.RootApi
import jp.co.soramitsu.app.root.di.RootComponent
import jp.co.soramitsu.app.root.navigation.Navigator
import jp.co.soramitsu.common.PLAY_MARKET_APP_URI
import jp.co.soramitsu.common.PLAY_MARKET_BROWSER_URI
import jp.co.soramitsu.common.base.BaseActivity
import jp.co.soramitsu.common.di.FeatureUtils
import jp.co.soramitsu.common.utils.EventObserver
import jp.co.soramitsu.common.utils.setVisible
import jp.co.soramitsu.common.utils.showToast
import jp.co.soramitsu.common.utils.updatePadding
import jp.co.soramitsu.common.view.bottomSheet.AlertBottomSheet
import jp.co.soramitsu.splash.presentation.SplashBackgroundHolder
import kotlinx.android.synthetic.main.activity_root.mainView
import kotlinx.android.synthetic.main.activity_root.rootNetworkBar
import javax.inject.Inject

class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder, LifecycleObserver {

companion object {
private const val ANIM_DURATION = 150L
private const val ANIM_START_POSITION = 100f
}

@Inject
lateinit var navigator: Navigator
Expand All @@ -41,11 +60,12 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ProcessLifecycleOwner.get().lifecycle.addObserver(this)

navigator.attach(navController, this)

rootNetworkBar.setOnApplyWindowInsetsListener { view, insets ->
view.updatePadding(top = insets.systemWindowInsetTop)
view.updatePadding(top = WindowInsetsCompat.toWindowInsetsCompat(insets, view).getInsets(WindowInsetsCompat.Type.systemBars()).top)

insets
}
Expand All @@ -71,24 +91,30 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
processIntent(intent)
}

@SuppressLint("ClickableViewAccessibility")
override fun initViews() {
findViewById<View>(R.id.root_touch_interceptor).setOnTouchListener { v, event ->
viewModel.onUserInteractedWithApp()
false
}
}

override fun onStop() {
super.onStop()

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onMoveToBackground() {
viewModel.noticeInBackground()
}

override fun onStart() {
super.onStart()

@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onMoveToForeground() {
viewModel.noticeInForeground()
}

override fun subscribe(viewModel: RootViewModel) {
viewModel.showConnectingBarLiveData.observe(this) { show ->
rootNetworkBar.setVisible(show)
when {
show -> showBadConnectionView()
else -> hideBadConnectionView()
}
}

viewModel.messageLiveData.observe(
Expand All @@ -97,6 +123,83 @@ class RootActivity : BaseActivity<RootViewModel>(), SplashBackgroundHolder {
showToast(it)
}
)

viewModel.showUnsupportedAppVersionAlert.observe(
this,
EventObserver {
showUnsupportedAppVersionAlert()
}
)
viewModel.openPlayMarket.observe(
this,
EventObserver {
openPlayMarket()
}
)
viewModel.closeApp.observe(
this,
EventObserver {
finish()
}
)
}

private fun showUnsupportedAppVersionAlert() {
AlertBottomSheet.Builder(this)
.setTitle(jp.co.soramitsu.feature_wallet_impl.R.string.common_update_needed)
.setMessage(jp.co.soramitsu.feature_wallet_impl.R.string.unsupported_app_version_alert_message)
.setButtonText(jp.co.soramitsu.feature_wallet_impl.R.string.common_update)
.setCancelable(false)
.callback { viewModel.updateAppClicked() }
.build()
.show()
}

private fun openPlayMarket() {
try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(PLAY_MARKET_APP_URI)))
} catch (e: ActivityNotFoundException) {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(PLAY_MARKET_BROWSER_URI)))
}
}

private fun showBadConnectionView() {
if (rootNetworkBar.isVisible) {
return
}

val errorColor = getColor(R.color.colorAccent)
rootNetworkBar.setText(R.string.network_status_connecting)
rootNetworkBar.setBackgroundColor(errorColor)
val animation = TranslateAnimation(0f, 0f, -ANIM_START_POSITION, 0f)
animation.duration = ANIM_DURATION
rootNetworkBar.startAnimation(animation)
rootNetworkBar.isVisible = true
}

private fun hideBadConnectionView() {
if (!rootNetworkBar.isVisible) {
return
}

val successColor = getColor(R.color.green)
rootNetworkBar.setText(R.string.network_status_connected)
rootNetworkBar.setBackgroundColor(successColor)
val animation = TranslateAnimation(0f, 0f, 0f, -ANIM_START_POSITION)
animation.duration = ANIM_DURATION
animation.startOffset = 500
animation.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationRepeat(p0: Animation?) {
}

override fun onAnimationEnd(p0: Animation?) {
rootNetworkBar.isVisible = false
}

override fun onAnimationStart(p0: Animation?) {
}
})
rootNetworkBar.startAnimation(animation)
}

override fun removeSplashBackground() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ package jp.co.soramitsu.app.root.presentation

interface RootRouter {
fun returnToWallet()

fun openPincodeCheck()

fun openNavGraph()
}
Original file line number Diff line number Diff line change
@@ -1,37 +1,71 @@
package jp.co.soramitsu.app.root.presentation

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import jp.co.soramitsu.app.R
import jp.co.soramitsu.app.root.domain.RootInteractor
import jp.co.soramitsu.common.base.BaseViewModel
import jp.co.soramitsu.common.mixin.api.NetworkStateMixin
import jp.co.soramitsu.common.mixin.api.NetworkStateUi
import jp.co.soramitsu.common.resources.ResourceManager
import jp.co.soramitsu.common.utils.Event
import jp.co.soramitsu.core.updater.Updater
import jp.co.soramitsu.runtime.multiNetwork.connection.ChainConnection.ExternalRequirement
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import java.util.Date
import java.util.Timer
import java.util.TimerTask
import kotlin.concurrent.timerTask
import kotlin.time.DurationUnit
import kotlin.time.toDuration

class RootViewModel(
private val interactor: RootInteractor,
private val rootRouter: RootRouter,
private val externalConnectionRequirementFlow: MutableStateFlow<ExternalRequirement>,
private val resourceManager: ResourceManager,
private val networkStateMixin: NetworkStateMixin
private val networkStateMixin: NetworkStateMixin,
) : BaseViewModel(), NetworkStateUi by networkStateMixin {
companion object {
private const val IDLE_MINUTES: Long = 20
}

private var willBeClearedForLanguageChange = false
private var timeInBackground: Date? = null

private val _showUnsupportedAppVersionAlert = MutableLiveData<Event<Unit>>()
val showUnsupportedAppVersionAlert: LiveData<Event<Unit>> = _showUnsupportedAppVersionAlert

private val _openPlayMarket = MutableLiveData<Event<Unit>>()
val openPlayMarket: LiveData<Event<Unit>> = _openPlayMarket

private val _closeApp = MutableLiveData<Event<Unit>>()
val closeApp: LiveData<Event<Unit>> = _closeApp

private var timer = Timer()
private var timerTask: TimerTask? = null

init {
checkAppVersion()
interactor.runBalancesUpdate()
.onEach { handleUpdatesSideEffect(it) }
.launchIn(this)

updatePhishingAddresses()
}

private fun checkAppVersion() = viewModelScope.launch {
val appConfig = interactor.getRemoteConfig()
if (appConfig.isCurrentVersionSupported.not()) {
_showUnsupportedAppVersionAlert.value = Event(Unit)
}
}

private fun handleUpdatesSideEffect(sideEffect: Updater.SideEffect) {
// pass
hashCode()
Expand All @@ -55,12 +89,24 @@ class RootViewModel(
if (!willBeClearedForLanguageChange) {
externalConnectionRequirementFlow.value = ExternalRequirement.STOPPED
}
timeInBackground = Date()
}

fun noticeInForeground() {
if (externalConnectionRequirementFlow.value == ExternalRequirement.STOPPED) {
externalConnectionRequirementFlow.value = ExternalRequirement.ALLOWED
}
timeInBackground?.let {
if (idleTimePassedFrom(it)) {
timerTask?.cancel()
rootRouter.openPincodeCheck()
}
}
timeInBackground = null
}

private fun idleTimePassedFrom(timeInBackground: Date): Boolean {
return Date().time - timeInBackground.time >= IDLE_MINUTES.toDuration(DurationUnit.MINUTES).inWholeMilliseconds
}

fun noticeLanguageLanguage() {
Expand All @@ -80,4 +126,22 @@ class RootViewModel(
showMessage(resourceManager.getString(R.string.buy_completed))
}
}

fun updateAppClicked() {
_openPlayMarket.value = Event(Unit)
_closeApp.value = Event(Unit)
}

fun onUserInteractedWithApp() {
timerTask?.cancel()
timerTask = createTimerTask()
timer.schedule(timerTask, IDLE_MINUTES.toDuration(DurationUnit.MINUTES).inWholeMilliseconds)
}

private fun createTimerTask() = timerTask {
viewModelScope.launch(Dispatchers.Main) {
timeInBackground = null
rootRouter.openNavGraph()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ class RootActivityModule {
rootRouter: RootRouter,
resourceManager: ResourceManager,
networkStateMixin: NetworkStateMixin,
externalRequirementsFlow: MutableStateFlow<ChainConnection.ExternalRequirement>
externalRequirementsFlow: MutableStateFlow<ChainConnection.ExternalRequirement>,
): ViewModel {
return RootViewModel(
interactor,
rootRouter,
externalRequirementsFlow,
resourceManager,
networkStateMixin
networkStateMixin,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import jp.co.soramitsu.runtime.multiNetwork.connection.ChainConnection
import kotlinx.coroutines.flow.MutableStateFlow

class MainViewModel(
interactor: RootInteractor,
private val interactor: RootInteractor,
externalRequirements: MutableStateFlow<ChainConnection.ExternalRequirement>,
) : BaseViewModel() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class MainFragmentModule {
@ViewModelKey(MainViewModel::class)
fun provideViewModel(
externalRequirementsFlow: MutableStateFlow<ChainConnection.ExternalRequirement>,
interactor: RootInteractor
interactor: RootInteractor,
): ViewModel {
return MainViewModel(interactor, externalRequirementsFlow)
}
Expand Down
Loading