Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-13 17:05:35 +03:00
parent 42f276c56f
commit ca7088e2f5
14 changed files with 87 additions and 58 deletions

View file

@ -35,7 +35,7 @@ internal class LockUserWalletsTimer(
val wasApplicationStopped = settingsRepository.wasApplicationStopped()
val shouldOpenWelcomeScreenOnResume = settingsRepository.shouldOpenWelcomeScreenOnResume()
Timber.d(
Timber.i(
"""
Owner resumed
|- Was stopped: $wasApplicationStopped
@ -55,7 +55,7 @@ internal class LockUserWalletsTimer(
}
override fun onStop(owner: LifecycleOwner) {
Timber.d("Owner stopped")
Timber.i("Owner stopped")
owner.lifecycleScope.launch {
settingsRepository.setWasApplicationStopped(value = true)
@ -63,13 +63,13 @@ internal class LockUserWalletsTimer(
}
override fun onDestroy(owner: LifecycleOwner) {
Timber.d("Owner destroyed")
Timber.i("Owner destroyed")
stop()
}
fun restart() {
if (delayJob == null) return
Timber.d(
Timber.i(
"""
Timer restart
|- Duration millis: ${duration.inWholeMilliseconds}
@ -80,7 +80,7 @@ internal class LockUserWalletsTimer(
private fun start(log: Boolean = true) {
if (log) {
Timber.d(
Timber.i(
"""
Timer start
|- Duration millis: ${duration.inWholeMilliseconds}
@ -92,7 +92,7 @@ internal class LockUserWalletsTimer(
private fun stop(log: Boolean = true) {
if (log) {
Timber.d(
Timber.i(
"""
Timer stop
|- Was started: ${delayJob?.isActive ?: false}
@ -114,7 +114,7 @@ internal class LockUserWalletsTimer(
val currentTime = System.currentTimeMillis()
val wasApplicationStopped = settingsRepository.wasApplicationStopped()
Timber.d(
Timber.i(
"""
Finished
|- App is stopped: $wasApplicationStopped

View file

@ -12,12 +12,12 @@ fun FragmentManager.showFragmentAllowingStateLoss(name: String, fragmentProvider
val currentFragmentName = getBackStackEntryAt(backStackEntryCount - 1).name
if (name == currentFragmentName) {
Timber.d("Fragment $name is already at the top of the stack")
Timber.i("Fragment $name is already at the top of the stack")
return
}
}
Timber.d("Showing $name route")
Timber.i("Showing $name route")
val isPoppedBack = popBackStackImmediate(name, 0)
@ -30,9 +30,9 @@ fun FragmentManager.showFragmentAllowingStateLoss(name: String, fragmentProvider
fragment.showFragment(fragmentManager = this, name)
}
Timber.d("Route $name is shown")
Timber.i("Route $name is shown")
} else {
Timber.d("Route $name is found in backstack and shown")
Timber.i("Route $name is found in backstack and shown")
}
}

View file

@ -1,19 +1,15 @@
package com.tangem.tap.common.redux
import com.tangem.domain.common.LogConfig
import org.rekotlin.Middleware
import timber.log.Timber
/**
[REDACTED_AUTHOR]
*/
val logMiddleware: Middleware<AppState> = { dispatch, appState ->
val logMiddleware: Middleware<AppState> = { _, _ ->
{ nextDispatch ->
{ action ->
if (LogConfig.storeAction) {
Timber.d("Dispatch action: $action")
// printOnboardingWalletState()
}
Timber.i("Dispatch action: $action")
nextDispatch(action)
}
}

View file

@ -165,10 +165,10 @@ internal class GeneralUserWalletsListManager(
}
if (possibleManager == implementation.value) {
Timber.e("Switch to same manager ${possibleManager::class.simpleName}")
Timber.e("Switch to the same manager ${possibleManager::class.simpleName}")
}
Timber.d("Switch to ${possibleManager::class.simpleName}")
Timber.i("Switch to ${possibleManager::class.simpleName}")
val previousManager = implementation.value
implementation.value = copySelectedUserWallet(

View file

@ -62,7 +62,7 @@ internal class DefaultLegacyWalletConnectRepository(
application = application,
metaData = appMetaData,
) { error ->
Timber.d("Error while initializing client: $error")
Timber.e("Error while initializing client: $error")
scope.launch {
_events.emit(
WalletConnectEvents.SessionApprovalError(
@ -73,7 +73,7 @@ internal class DefaultLegacyWalletConnectRepository(
}
Web3Wallet.initialize(Wallet.Params.Init(core = CoreClient)) { error ->
Timber.d("Error while initializing Web3Wallet: $error")
Timber.e("Error while initializing Web3Wallet: $error")
scope.launch {
_events.emit(
WalletConnectEvents.SessionApprovalError(
@ -94,11 +94,11 @@ internal class DefaultLegacyWalletConnectRepository(
verifyContext: Wallet.Model.VerifyContext,
) {
// Triggered when wallet receives the session proposal sent by a Dapp
Timber.d("sessionProposal: $sessionProposal")
Timber.i("sessionProposal: $sessionProposal")
this@DefaultLegacyWalletConnectRepository.sessionProposal = sessionProposal
if (sessionProposal.name in unsupportedDApps) {
Timber.w("Unsupported DApp")
Timber.i("Unsupported DApp")
scope.launch {
_events.emit(
WalletConnectEvents.SessionApprovalError(
@ -115,7 +115,7 @@ internal class DefaultLegacyWalletConnectRepository(
)
if (missingNetworks.isNotEmpty()) {
Timber.w("Not added blockchains: $missingNetworks")
Timber.i("Not added blockchains: $missingNetworks")
scope.launch {
_events.emit(
WalletConnectEvents.SessionApprovalError(
@ -150,12 +150,12 @@ internal class DefaultLegacyWalletConnectRepository(
verifyContext: Wallet.Model.VerifyContext,
) {
// Triggered when a Dapp sends SessionRequest to sign a transaction or a message
Timber.d("sessionRequest: $sessionRequest")
Timber.i("sessionRequest: $sessionRequest")
val request = wcRequestDeserializer.deserialize(
method = sessionRequest.request.method,
params = sessionRequest.request.params,
)
Timber.d("sessionRequestParsed: $request")
Timber.i("sessionRequestParsed: $request")
when (request) {
is WcRequest.AddChain -> {
@ -193,7 +193,7 @@ internal class DefaultLegacyWalletConnectRepository(
verifyContext: Wallet.Model.VerifyContext,
) {
// Triggered when Dapp / Requester makes an authorization request
Timber.d("onAuthRequest: $authRequest")
Timber.i("onAuthRequest: $authRequest")
}
override fun onSessionDelete(sessionDelete: Wallet.Model.SessionDelete) {
@ -204,12 +204,12 @@ internal class DefaultLegacyWalletConnectRepository(
updateSessionsInternal().join()
}
}
Timber.d("onSessionDelete: $sessionDelete")
Timber.i("onSessionDelete: $sessionDelete")
}
override fun onSessionSettleResponse(settleSessionResponse: Wallet.Model.SettledSessionResponse) {
// Triggered when wallet receives the session settlement response from Dapp
Timber.d("onSessionSettleResponse: $settleSessionResponse")
Timber.i("onSessionSettleResponse: $settleSessionResponse")
if (settleSessionResponse is Wallet.Model.SettledSessionResponse.Result) {
scope.launch {
_events.emit(
@ -225,19 +225,19 @@ internal class DefaultLegacyWalletConnectRepository(
override fun onSessionUpdateResponse(sessionUpdateResponse: Wallet.Model.SessionUpdateResponse) {
// Triggered when wallet receives the session update response from Dapp
Timber.d("onSessionUpdateResponse: $sessionUpdateResponse")
Timber.i("onSessionUpdateResponse: $sessionUpdateResponse")
updateSessionsInternal()
}
override fun onConnectionStateChange(state: Wallet.Model.ConnectionState) {
// Triggered whenever the connection state is changed
Timber.d("onConnectionStateChange: $state")
Timber.i("onConnectionStateChange: $state")
if (state.isAvailable) updateSessionsInternal()
}
override fun onError(error: Wallet.Model.Error) {
// Triggered whenever there is an issue inside the SDK
Timber.d("onError: $error")
Timber.i("onError: $error")
}
}
}
@ -299,12 +299,12 @@ internal class DefaultLegacyWalletConnectRepository(
},
)
Timber.d("Session approval is prepared for sending: $sessionApproval")
Timber.i("Session approval is prepared for sending: $sessionApproval")
Web3Wallet.approveSession(
params = sessionApproval,
onSuccess = {
Timber.d("Approved successfully: $it")
Timber.i("Approved successfully: $it")
analyticsHandler.send(
WalletConnect.NewSessionEstablished(
dAppName = sessionProposal.name,
@ -313,7 +313,7 @@ internal class DefaultLegacyWalletConnectRepository(
)
},
onError = {
Timber.d("Error while approving: $it")
Timber.e("Error while approving: $it")
scope.launch {
_events.emit(
WalletConnectEvents.SessionApprovalError(
@ -370,10 +370,10 @@ internal class DefaultLegacyWalletConnectRepository(
),
),
onSuccess = { response ->
Timber.d("Session request responded successfully: $response")
Timber.i("Session request responded successfully: $response")
},
onError = { error ->
Timber.d(error.throwable, "Error while responging session request")
Timber.e(error.throwable, "Error while responging session request")
WalletConnect.RequestHandledParams(
dAppName = session?.name ?: "",
@ -427,10 +427,10 @@ internal class DefaultLegacyWalletConnectRepository(
reason = "",
),
onSuccess = {
Timber.d("Rejected successfully: $it")
Timber.i("Rejected successfully: $it")
},
onError = {
Timber.d("Error while rejecting: $it")
Timber.e("Error while rejecting: $it")
},
)
}
@ -447,10 +447,10 @@ internal class DefaultLegacyWalletConnectRepository(
),
)
updateSessionsInternal()
Timber.d("Disconnected successfully: $it")
Timber.i("Disconnected successfully: $it")
},
onError = {
Timber.d("Error while disconnecting: $it")
Timber.e("Error while disconnecting: $it")
},
)
}
@ -483,7 +483,7 @@ internal class DefaultLegacyWalletConnectRepository(
url = it.metaData?.url,
)
}
Timber.d("Available sessions: $availableSessions")
Timber.i("Available sessions: $availableSessions")
currentSessions = availableSessions
_activeSessions.emit(availableSessions)
}

View file

@ -35,7 +35,7 @@ class WalletConnectInteractor(
val blockchainHelper: WcBlockchainHelper,
) {
var isWalletConnectReadyForDeepLinks = false
private var isWalletConnectReadyForDeepLinks = false
private val getSelectedWalletUseCase by lazy(LazyThreadSafetyMode.NONE) {
GetSelectedWalletUseCase(userWalletsListManager)
@ -82,7 +82,7 @@ class WalletConnectInteractor(
private suspend fun initWithWallet(userWallet: UserWallet) {
if (userWallet.isMultiCurrency) {
Timber.d("WalletConnect: initialize and setup networks for ${userWallet.walletId}")
Timber.i("WalletConnect: initialize and setup networks for ${userWallet.walletId}")
startListeningWc(userWallet.walletId.stringValue, getCardId(userWallet))
subscribeOnCurrenciesUpdates(userWallet)
}
@ -143,9 +143,9 @@ class WalletConnectInteractor(
private suspend fun subscribeToEvents() {
events
.onEach { wcEvent ->
Timber.i("WalletConnect: event: $wcEvent")
when (wcEvent) {
is WalletConnectEvents.SessionProposal -> {
Timber.d("WC session proposal event received")
val unsupportedNetworks = wcEvent.requiredChainIds
.filter { blockchainHelper.chainIdToNetworkIdOrNull(it) == null }
if (unsupportedNetworks.isNotEmpty()) {
@ -230,6 +230,7 @@ class WalletConnectInteractor(
}
fun approveSessionProposal(accounts: List<Account>) {
Timber.i("Approve session proposal: $accounts")
val userNamespaces: Map<NetworkNamespace, List<Account>> = accounts
.groupBy { account ->
blockchainHelper.getNamespaceFromFullChainIdOrNull(account.chainId)
@ -241,14 +242,17 @@ class WalletConnectInteractor(
}
fun rejectSessionProposal() {
Timber.i("Reject session proposal")
walletConnectRepository.reject()
}
fun disconnectSession(topic: String) {
Timber.i("Disconnect session: $topic")
walletConnectRepository.disconnect(topic)
}
fun cancelRequest(topic: String, id: Long) {
Timber.i("Cancel request: $topic, $id")
walletConnectRepository.cancelRequest(topic, id)
}

View file

@ -7,6 +7,7 @@ import com.tangem.tap.routing.configurator.AppRouterConfig
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import timber.log.Timber
import kotlin.reflect.KClass
internal class ProxyAppRouter(
@ -31,30 +32,35 @@ internal class ProxyAppRouter(
override fun push(route: AppRoute, onComplete: (isSuccess: Boolean) -> Unit) {
routerScope.launch(dispatchers.mainImmediate) {
Timber.i("Push route: $route")
innerRouter.push(route, onComplete)
}
}
override fun replaceAll(vararg routes: AppRoute, onComplete: (isSuccess: Boolean) -> Unit) {
routerScope.launch(dispatchers.mainImmediate) {
Timber.i("Replace all routes with $routes")
innerRouter.replaceAll(*routes, onComplete = onComplete)
}
}
override fun pop(onComplete: (isSuccess: Boolean) -> Unit) {
routerScope.launch(dispatchers.mainImmediate) {
Timber.i("Pop route")
innerRouter.pop(onComplete)
}
}
override fun popTo(route: AppRoute, onComplete: (isSuccess: Boolean) -> Unit) {
routerScope.launch(dispatchers.mainImmediate) {
Timber.i("Pop to route: $route")
innerRouter.popTo(route, onComplete)
}
}
override fun popTo(routeClass: KClass<out AppRoute>, onComplete: (isSuccess: Boolean) -> Unit) {
routerScope.launch(dispatchers.mainImmediate) {
Timber.i("Pop to route class: $routeClass")
innerRouter.popTo(routeClass, onComplete)
}
}