Updated on 2026-08-14
This commit is contained in:
parent
c56705f4cb
commit
c13348a018
11 changed files with 150 additions and 170 deletions
9
.idea/navEditor.xml
generated
9
.idea/navEditor.xml
generated
|
|
@ -311,6 +311,15 @@
|
||||||
<option name="y" value="15" />
|
<option name="y" value="15" />
|
||||||
</Point>
|
</Point>
|
||||||
</option>
|
</option>
|
||||||
|
<option name="myPositions">
|
||||||
|
<map>
|
||||||
|
<entry key="action_purgeFragment_to_loadedWalletFragment">
|
||||||
|
<value>
|
||||||
|
<LayoutPositions />
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
</LayoutPositions>
|
</LayoutPositions>
|
||||||
</value>
|
</value>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,15 @@ import android.app.Application
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
import com.tangem.data.local.PendingTransactionsStorage
|
|
||||||
import com.tangem.card_android.android.data.Firmwares
|
import com.tangem.card_android.android.data.Firmwares
|
||||||
import com.tangem.card_android.android.data.PINStorage
|
import com.tangem.card_android.android.data.PINStorage
|
||||||
import com.tangem.card_common.data.Issuer
|
import com.tangem.card_common.data.Issuer
|
||||||
import com.tangem.data.dp.PrefsManager
|
import com.tangem.data.dp.PrefsManager
|
||||||
import com.tangem.di.*
|
import com.tangem.data.local.PendingTransactionsStorage
|
||||||
|
import com.tangem.di.DaggerNetworkComponent
|
||||||
|
import com.tangem.di.DaggerToastHelperComponent
|
||||||
|
import com.tangem.di.NetworkComponent
|
||||||
|
import com.tangem.di.ToastHelperComponent
|
||||||
import com.tangem.server_android.data.LocalStorage
|
import com.tangem.server_android.data.LocalStorage
|
||||||
import com.tangem.wallet.BuildConfig
|
import com.tangem.wallet.BuildConfig
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
|
|
@ -26,7 +29,6 @@ class App : Application() {
|
||||||
}
|
}
|
||||||
|
|
||||||
lateinit var networkComponent: NetworkComponent
|
lateinit var networkComponent: NetworkComponent
|
||||||
lateinit var navigatorComponent: NavigatorComponent
|
|
||||||
lateinit var toastHelperComponent: ToastHelperComponent
|
lateinit var toastHelperComponent: ToastHelperComponent
|
||||||
|
|
||||||
lateinit var firmwaresStorage: Firmwares
|
lateinit var firmwaresStorage: Firmwares
|
||||||
|
|
@ -41,7 +43,6 @@ class App : Application() {
|
||||||
instance = this
|
instance = this
|
||||||
|
|
||||||
networkComponent = DaggerNetworkComponent.create()
|
networkComponent = DaggerNetworkComponent.create()
|
||||||
navigatorComponent = buildNavigatorComponent()
|
|
||||||
toastHelperComponent = buildToastHelperComponent()
|
toastHelperComponent = buildToastHelperComponent()
|
||||||
|
|
||||||
PrefsManager.getInstance().init(this)
|
PrefsManager.getInstance().init(this)
|
||||||
|
|
@ -76,11 +77,6 @@ class App : Application() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildNavigatorComponent(): NavigatorComponent {
|
|
||||||
return DaggerNavigatorComponent.builder()
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun buildToastHelperComponent(): ToastHelperComponent {
|
private fun buildToastHelperComponent(): ToastHelperComponent {
|
||||||
return DaggerToastHelperComponent.builder()
|
return DaggerToastHelperComponent.builder()
|
||||||
.build()
|
.build()
|
||||||
|
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
||||||
package com.tangem.di
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.nfc.Tag
|
|
||||||
import com.tangem.Constant
|
|
||||||
import com.tangem.wallet.TangemContext
|
|
||||||
import com.tangem.ui.PrepareTransactionActivity
|
|
||||||
import com.tangem.ui.activity.*
|
|
||||||
import com.tangem.wallet.BuildConfig
|
|
||||||
|
|
||||||
class Navigator {
|
|
||||||
|
|
||||||
fun showSettings(context: Activity) {
|
|
||||||
context.startActivity(SettingsActivity.callingIntent(context))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showMain(context: Activity) {
|
|
||||||
context.startActivity(MainActivity.callingIntent(context))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showLogo(context: Activity, autoHide: Boolean) {
|
|
||||||
context.startActivity(LogoActivity.callingIntent(context, autoHide))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinSave(context: Activity, hasPin2: Boolean) {
|
|
||||||
context.startActivity(PinSaveActivity.callingIntent(context, hasPin2))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinRequest(context: Activity, mode: String) {
|
|
||||||
context.startActivityForResult(PinRequestActivity.callingIntent(context, mode), Constant.REQUEST_CODE_ENTER_PIN_ACTIVITY)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showQrScanActivity(context: Activity, requestCode: Int) {
|
|
||||||
context.startActivityForResult(QrScanActivity.callingIntent(context), requestCode)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinRequestRequestPin(context: Activity, mode: String, ctx: TangemContext, newPin: String) {
|
|
||||||
context.startActivityForResult(PinRequestActivity.callingIntentRequestPin(context, mode, ctx, newPin), Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinRequestRequestPin2(context: Activity, mode: String, ctx: TangemContext, newPin2: String) {
|
|
||||||
context.startActivityForResult(PinRequestActivity.callingIntentRequestPin2(context, mode, ctx, newPin2), Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinRequestRequestPin2(context: Activity, mode: String, ctx: TangemContext) {
|
|
||||||
context.startActivityForResult(PinRequestActivity.callingIntentRequestPin2(context, mode, ctx), Constant.REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinRequestConfirmNewPin(context: Activity, mode: String, newPin: String) {
|
|
||||||
context.startActivityForResult(PinRequestActivity.callingIntentConfirmPin(context, mode, newPin), Constant.REQUEST_CODE_ENTER_NEW_PIN)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinRequestConfirmNewPin2(context: Activity, mode: String, newPin2: String) {
|
|
||||||
context.startActivityForResult(PinRequestActivity.callingIntentConfirmPin2(context, mode, newPin2), Constant.REQUEST_CODE_ENTER_NEW_PIN2)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showLoadedWallet(context: Activity, lastTag: Tag, ctx: TangemContext) {
|
|
||||||
context.startActivityForResult(LoadedWalletActivity.callingIntent(context, lastTag, ctx), Constant.REQUEST_CODE_SHOW_CARD_ACTIVITY)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showEmptyWallet(context: Activity, ctx: TangemContext) {
|
|
||||||
context.startActivity(EmptyWalletActivity.callingIntent(context, ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showVerifyCard(context: Activity, ctx: TangemContext) {
|
|
||||||
context.startActivityForResult(VerifyCardActivity.callingIntent(context, ctx), Constant.REQUEST_CODE_VERIFY_CARD)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPinSwap(context: Activity, newPIN: String, newPIN2: String) {
|
|
||||||
context.startActivityForResult(PinSwapActivity.callingIntent(context, newPIN, newPIN2), Constant.REQUEST_CODE_SWAP_PIN)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPurge(context: Activity, ctx: TangemContext) {
|
|
||||||
context.startActivityForResult(PurgeActivity.callingIntent(context, ctx), Constant.REQUEST_CODE_PURGE)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showPrepareTransaction(context: Activity, ctx: TangemContext) {
|
|
||||||
when (BuildConfig.FLAVOR) {
|
|
||||||
Constant.FLAVOR_TANGEM_CARDANO -> {
|
|
||||||
context.startActivity(PrepareTransactionActivity.callingIntent(context, ctx))
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
context.startActivityForResult(PrepareTransactionActivity.callingIntent(context, ctx), Constant.REQUEST_CODE_SEND_TRANSACTION)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showCreateNewWallet(context: Activity, ctx: TangemContext) {
|
|
||||||
context.startActivityForResult(CreateNewWalletActivity.callingIntent(context, ctx), Constant.REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
package com.tangem.di
|
|
||||||
|
|
||||||
import com.tangem.ui.activity.EmptyWalletActivity
|
|
||||||
import com.tangem.ui.activity.LoadedWalletActivity
|
|
||||||
import com.tangem.ui.activity.LogoActivity
|
|
||||||
import com.tangem.ui.activity.MainActivity
|
|
||||||
import com.tangem.ui.activity.PrepareCryptonitOtherApiWithdrawalActivity
|
|
||||||
import com.tangem.ui.activity.PrepareKrakenWithdrawalActivity
|
|
||||||
import com.tangem.ui.PrepareTransactionActivity
|
|
||||||
import com.tangem.ui.activity.PurgeActivity
|
|
||||||
import com.tangem.ui.activity.VerifyCardActivity
|
|
||||||
|
|
||||||
import javax.inject.Singleton
|
|
||||||
|
|
||||||
import dagger.Component
|
|
||||||
|
|
||||||
@Singleton
|
|
||||||
@Component(modules = [NavigatorModule::class])
|
|
||||||
interface NavigatorComponent {
|
|
||||||
|
|
||||||
fun inject(activity: LogoActivity)
|
|
||||||
|
|
||||||
fun inject(activity: MainActivity)
|
|
||||||
|
|
||||||
fun inject(activity: PurgeActivity)
|
|
||||||
|
|
||||||
fun inject(activity: PrepareTransactionActivity)
|
|
||||||
|
|
||||||
fun inject(activity: PrepareCryptonitOtherApiWithdrawalActivity)
|
|
||||||
|
|
||||||
fun inject(activity: PrepareKrakenWithdrawalActivity)
|
|
||||||
|
|
||||||
fun inject(activity: LoadedWalletActivity)
|
|
||||||
|
|
||||||
fun inject(activity: VerifyCardActivity)
|
|
||||||
|
|
||||||
fun inject(activity: EmptyWalletActivity)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +1,13 @@
|
||||||
package com.tangem.di
|
package com.tangem.di
|
||||||
|
|
||||||
import com.tangem.ui.dialog.WaitSecurityDelayDialogNew
|
import com.tangem.ui.dialog.WaitSecurityDelayDialogNew
|
||||||
|
|
||||||
import javax.inject.Singleton
|
|
||||||
|
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
internal class NavigatorModule {
|
internal class NavigatorModule {
|
||||||
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
fun provideNavigator(): Navigator {
|
|
||||||
return Navigator()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@Provides
|
@Provides
|
||||||
fun provideToastHelper(): ToastHelper {
|
fun provideToastHelper(): ToastHelper {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
package com.tangem.di
|
package com.tangem.di
|
||||||
|
|
||||||
import com.tangem.ui.ConfirmTransactionActivity
|
|
||||||
import com.tangem.ui.PrepareTransactionActivity
|
|
||||||
import com.tangem.ui.activity.EmptyWalletActivity
|
|
||||||
import com.tangem.ui.activity.LoadedWalletActivity
|
|
||||||
import com.tangem.ui.activity.MainActivity
|
import com.tangem.ui.activity.MainActivity
|
||||||
import dagger.Component
|
import dagger.Component
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
@ -14,12 +10,4 @@ interface ToastHelperComponent {
|
||||||
|
|
||||||
fun inject(activity: MainActivity)
|
fun inject(activity: MainActivity)
|
||||||
|
|
||||||
fun inject(activity: LoadedWalletActivity)
|
|
||||||
|
|
||||||
fun inject(activity: ConfirmTransactionActivity)
|
|
||||||
|
|
||||||
fun inject(activity: PrepareTransactionActivity)
|
|
||||||
|
|
||||||
fun inject(activity: EmptyWalletActivity)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.tangem.ui.activity
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.tangem.ui.navigation.NavigationResult
|
||||||
|
|
||||||
|
class GlobalViewModel : ViewModel() {
|
||||||
|
var navigationResult: NavigationResult? = null
|
||||||
|
}
|
||||||
|
|
@ -13,31 +13,29 @@ import android.os.Bundle
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.navigation.NavController
|
import androidx.lifecycle.ViewModelProviders
|
||||||
import androidx.navigation.Navigation
|
|
||||||
import com.scottyab.rootbeer.RootBeer
|
import com.scottyab.rootbeer.RootBeer
|
||||||
import com.tangem.App
|
import com.tangem.App
|
||||||
import com.tangem.Constant
|
import com.tangem.Constant
|
||||||
|
import com.tangem.card_android.android.nfc.NfcLifecycleObserver
|
||||||
import com.tangem.card_android.android.reader.NfcManager
|
import com.tangem.card_android.android.reader.NfcManager
|
||||||
import com.tangem.di.Navigator
|
|
||||||
import com.tangem.di.ToastHelper
|
import com.tangem.di.ToastHelper
|
||||||
import com.tangem.ui.dialog.RootFoundDialog
|
import com.tangem.ui.dialog.RootFoundDialog
|
||||||
import com.tangem.wallet.BuildConfig
|
import com.tangem.wallet.BuildConfig
|
||||||
import com.tangem.wallet.R
|
import com.tangem.wallet.R
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val TAG: String = MainActivity::class.java.simpleName
|
val TAG: String = MainActivity::class.java.simpleName
|
||||||
fun callingIntent(context: Context) = Intent(context, MainActivity::class.java)
|
fun callingIntent(context: Context) = Intent(context, MainActivity::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
lateinit var navController: NavController
|
|
||||||
@Inject
|
|
||||||
internal lateinit var navigator: Navigator
|
|
||||||
@Inject
|
@Inject
|
||||||
internal lateinit var toastHelper: ToastHelper
|
internal lateinit var toastHelper: ToastHelper
|
||||||
|
lateinit var viewModel: GlobalViewModel
|
||||||
|
lateinit var nfcManager: NfcManager
|
||||||
|
|
||||||
// private var onNfcReaderCallback: NfcAdapter.ReaderCallback? = null
|
// private var onNfcReaderCallback: NfcAdapter.ReaderCallback? = null
|
||||||
|
|
||||||
|
|
@ -54,15 +52,17 @@ class MainActivity : AppCompatActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
|
|
||||||
navController = Navigation.findNavController(this, R.id.nav_host_fragment)
|
viewModel = ViewModelProviders.of(this).get(GlobalViewModel::class.java)
|
||||||
|
|
||||||
App.navigatorComponent.inject(this)
|
|
||||||
App.toastHelperComponent.inject(this)
|
App.toastHelperComponent.inject(this)
|
||||||
|
|
||||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
||||||
|
|
||||||
verifyPermissions()
|
verifyPermissions()
|
||||||
|
|
||||||
|
nfcManager = NfcManager(this, this)
|
||||||
|
lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
|
||||||
|
|
||||||
// // NFC
|
// // NFC
|
||||||
// val intent = intent
|
// val intent = intent
|
||||||
// if (intent != null && (NfcAdapter.ACTION_TECH_DISCOVERED == intent.action || NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action)) {
|
// if (intent != null && (NfcAdapter.ACTION_TECH_DISCOVERED == intent.action || NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action)) {
|
||||||
|
|
@ -85,4 +85,14 @@ class MainActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onTagDiscovered(tag: Tag) {
|
||||||
|
val activeFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment)
|
||||||
|
?.childFragmentManager?.primaryNavigationFragment
|
||||||
|
if (activeFragment is NfcAdapter.ReaderCallback) {
|
||||||
|
activeFragment.onTagDiscovered(tag)
|
||||||
|
} else {
|
||||||
|
nfcManager.ignoreTag(tag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
96
app/src/main/java/com/tangem/ui/fragment/BaseFragment.kt
Normal file
96
app/src/main/java/com/tangem/ui/fragment/BaseFragment.kt
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
package com.tangem.ui.fragment
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.annotation.IdRes
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.navigation.fragment.NavHostFragment.findNavController
|
||||||
|
import com.tangem.ui.activity.MainActivity
|
||||||
|
import com.tangem.ui.navigation.NavigationResult
|
||||||
|
import com.tangem.ui.navigation.NavigationResultListener
|
||||||
|
|
||||||
|
abstract class BaseFragment : Fragment() {
|
||||||
|
|
||||||
|
protected val requestCode: String
|
||||||
|
get() = arguments?.getString(ARGUMENT_NAVIGATION_REQUEST_CODE, REQUEST_CODE_NOT_SET)
|
||||||
|
?: REQUEST_CODE_NOT_SET
|
||||||
|
protected val navigatedBack: Boolean
|
||||||
|
get() = (activity as? MainActivity)?.viewModel?.navigationResult != null
|
||||||
|
|
||||||
|
protected abstract val layoutId: Int
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
Log.d("LIFECYCLE", "onCreate: ${this::class.java.simpleName}")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
|
return inflater.inflate(layoutId, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
Log.d("LIFECYCLE", "onStart: ${this::class.java.simpleName}")
|
||||||
|
if (this is NavigationResultListener) {
|
||||||
|
val navigationResult = (activity as? MainActivity)?.viewModel?.navigationResult
|
||||||
|
navigationResult?.run {
|
||||||
|
onNavigationResult(this.requestCode, this.resultCode, this.data)
|
||||||
|
(activity as? MainActivity)?.viewModel?.navigationResult = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
Log.d("LIFECYCLE", "onPause: ${this::class.java.simpleName}")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStop() {
|
||||||
|
super.onStop()
|
||||||
|
Log.d("LIFECYCLE", "onStop: ${this::class.java.simpleName}")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
super.onDestroy()
|
||||||
|
Log.d("LIFECYCLE", "onDestroy: ${this::class.java.simpleName}")
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun navigateUp(@IdRes destination: Int = DESTINATION_NOT_SET): Boolean {
|
||||||
|
return if (destination == DESTINATION_NOT_SET) {
|
||||||
|
findNavController(this).popBackStack()
|
||||||
|
} else {
|
||||||
|
findNavController(this).popBackStack(destination, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun navigateForResult(requestCode: String, @IdRes destination: Int, data: Bundle? = null) {
|
||||||
|
val argumentsWithRequestCode = (data ?: Bundle()).apply {
|
||||||
|
putString(ARGUMENT_NAVIGATION_REQUEST_CODE, requestCode)
|
||||||
|
}
|
||||||
|
navigateToDestination(destination, argumentsWithRequestCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun navigateToDestination(@IdRes destination: Int, data: Bundle? = null) {
|
||||||
|
try {
|
||||||
|
findNavController(this).navigate(destination, data)
|
||||||
|
} catch (e: IllegalArgumentException) {
|
||||||
|
Log.w(this::class.java.simpleName, e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun navigateBackWithResult(resultCode: Int, data: Bundle? = null,
|
||||||
|
@IdRes destination: Int = DESTINATION_NOT_SET): Boolean {
|
||||||
|
(requireActivity() as MainActivity).viewModel.navigationResult =
|
||||||
|
NavigationResult(requestCode, resultCode, data)
|
||||||
|
return navigateUp(destination)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val ARGUMENT_NAVIGATION_REQUEST_CODE = "NAVIGATION_REQUEST_CODE"
|
||||||
|
private const val DESTINATION_NOT_SET = -1
|
||||||
|
private const val REQUEST_CODE_NOT_SET = "REQUEST_CODE_NOT_SET"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.tangem.ui.navigation
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
|
||||||
|
data class NavigationResult(val requestCode: String, val resultCode: Int, val data: Bundle? = null)
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.tangem.ui.navigation
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
|
||||||
|
interface NavigationResultListener {
|
||||||
|
fun onNavigationResult(requestCode: String, resultCode: Int, data: Bundle? = null)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue