Updated on 2026-08-14
This commit is contained in:
parent
8b75e37e30
commit
a9bca131c3
386 changed files with 1369 additions and 1347 deletions
|
|
@ -66,7 +66,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@ import com.tangem.features.account.createedit.error.AccountFeatureError
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.JobHolder
|
||||
import com.tangem.utils.coroutines.saveIn
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -147,7 +147,7 @@ internal class ArchivedAccountListModel @Inject constructor(
|
|||
private fun logError(error: AccountFeatureError, params: Map<String, String> = emptyMap()) {
|
||||
val exception = IllegalStateException(error.toString())
|
||||
|
||||
Timber.e(exception)
|
||||
TangemLogger.e("Error", exception)
|
||||
|
||||
analyticsExceptionHandler.sendException(
|
||||
event = ExceptionAnalyticsEvent(exception = exception, params = params),
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ import com.tangem.core.ui.extensions.wrappedList
|
|||
import com.tangem.domain.account.models.ArchivedAccount
|
||||
import com.tangem.domain.account.usecase.ArchivedAccountList
|
||||
import com.tangem.domain.models.account.AccountId
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class AccountArchivedUMBuilder @Inject constructor() {
|
||||
|
|
@ -49,7 +49,7 @@ internal class AccountArchivedUMBuilder @Inject constructor() {
|
|||
onCloseClick: () -> Unit,
|
||||
getArchivedAccounts: () -> Unit,
|
||||
): AccountArchivedUM.Error {
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
return AccountArchivedUM.Error(
|
||||
onCloseClick = onCloseClick,
|
||||
onRetryClick = { getArchivedAccounts() },
|
||||
|
|
|
|||
|
|
@ -42,11 +42,11 @@ import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.
|
|||
import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.Companion.updateName
|
||||
import com.tangem.features.account.createedit.error.AccountFeatureError
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@ModelScoped
|
||||
|
|
@ -242,7 +242,7 @@ internal class AccountCreateEditModel @Inject constructor(
|
|||
private fun onNameChange(name: AccountNameUM) {
|
||||
val isNotEmptyCustomName = (name as? AccountNameUM.Custom)?.raw?.isNotEmpty() == true
|
||||
if (!name.isValidName() && isNotEmptyCustomName) {
|
||||
Timber.d("Invalid account name: $name")
|
||||
TangemLogger.d("Invalid account name: $name")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -310,7 +310,7 @@ internal class AccountCreateEditModel @Inject constructor(
|
|||
private fun logError(error: AccountFeatureError, params: Map<String, String> = emptyMap()) {
|
||||
val exception = IllegalStateException(error.toString())
|
||||
|
||||
Timber.e(exception)
|
||||
TangemLogger.e("Error", exception)
|
||||
|
||||
analyticsExceptionHandler.sendException(
|
||||
event = ExceptionAnalyticsEvent(exception = exception, params = params),
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ dependencies {
|
|||
/** Other */
|
||||
implementation(deps.decompose)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.arrow.core)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.tangem.blockchain.common.TransactionData
|
|||
import com.tangem.blockchain.common.transaction.Fee
|
||||
import com.tangem.blockchain.common.transaction.TransactionFee
|
||||
import com.tangem.common.ui.bottomsheet.permission.state.ApproveType
|
||||
import com.tangem.common.ui.userwallet.ext.walletInterationIcon
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
import com.tangem.core.analytics.models.Basic
|
||||
|
|
@ -15,6 +16,7 @@ import com.tangem.core.decompose.di.ModelScoped
|
|||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.decompose.ui.UiMessageSender
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.message.DialogMessage
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
|
|
@ -27,19 +29,17 @@ import com.tangem.domain.transaction.usecase.SendTransactionUseCase
|
|||
import com.tangem.domain.transaction.usecase.gasless.CreateAndSendGaslessTransactionUseCase
|
||||
import com.tangem.domain.transaction.usecase.gasless.GetFeeForGaslessUseCase
|
||||
import com.tangem.domain.transaction.usecase.gasless.GetFeeForTokenUseCase
|
||||
import com.tangem.domain.wallets.usecase.GetUserWalletUseCase
|
||||
import com.tangem.features.approval.api.GiveApprovalComponent
|
||||
import com.tangem.features.send.v2.api.callbacks.FeeSelectorModelCallback
|
||||
import com.tangem.features.send.v2.api.entity.FeeSelectorUM
|
||||
import com.tangem.core.navigation.url.UrlOpener
|
||||
import com.tangem.common.ui.userwallet.ext.walletInterationIcon
|
||||
import com.tangem.domain.wallets.usecase.GetUserWalletUseCase
|
||||
import com.tangem.utils.TangemBlogUrlBuilder.RESOURCE_TO_LEARN_ABOUT_APPROVING_IN_SWAP
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import java.math.BigDecimal
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ internal class GiveApprovalModel @Inject constructor(
|
|||
contractAddress = tokenCurrency.contractAddress,
|
||||
spenderAddress = params.spenderAddress,
|
||||
).getOrElse { error ->
|
||||
Timber.e(error, "Failed to create approval transaction")
|
||||
TangemLogger.e("Failed to create approval transaction", error)
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
@ -201,7 +201,7 @@ internal class GiveApprovalModel @Inject constructor(
|
|||
)
|
||||
}.fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e("Failed to send approval transaction: $error")
|
||||
TangemLogger.e("Failed to send approval transaction: $error")
|
||||
false
|
||||
},
|
||||
ifRight = {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ dependencies {
|
|||
implementation(projects.core.analytics.models)
|
||||
implementation(projects.core.configToggles)
|
||||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/** Domain */
|
||||
implementation(projects.domain.wallets)
|
||||
|
|
@ -45,7 +46,6 @@ dependencies {
|
|||
}
|
||||
|
||||
/** Other */
|
||||
implementation(deps.timber)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@ import com.tangem.features.biometry.AskBiometryComponent
|
|||
import com.tangem.features.biometry.impl.ui.state.AskBiometryUM
|
||||
import com.tangem.sdk.api.TangemSdkManager
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -88,7 +88,7 @@ internal class AskBiometryModel @Inject constructor(
|
|||
* because it will be automatically saved on UserWalletsListManager switch
|
||||
*/
|
||||
val selectedUserWallet = getSelectedWalletUseCase.sync().getOrNull() ?: run {
|
||||
Timber.e("Unable to save user wallet")
|
||||
TangemLogger.e("Unable to save user wallet")
|
||||
uiMessageSender.send(
|
||||
SnackbarMessage(stringReference("No selected user wallet")),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val HIDE_PROGRESS_DELAY = 400L
|
||||
|
|
@ -211,7 +211,7 @@ internal class CreateWalletStartModel @Inject constructor(
|
|||
val userWallet = coldUserWalletBuilderFactory.create(scanResponse = scanResponse).build()
|
||||
|
||||
if (userWallet == null) {
|
||||
Timber.e("User wallet not created")
|
||||
TangemLogger.e("User wallet not created")
|
||||
setLoading(false)
|
||||
return
|
||||
}
|
||||
|
|
@ -221,7 +221,7 @@ internal class CreateWalletStartModel @Inject constructor(
|
|||
delay(HIDE_PROGRESS_DELAY)
|
||||
setLoading(false)
|
||||
when (error) {
|
||||
is SaveWalletError.DataError -> Timber.e(error.toString(), "Unable to save user wallet")
|
||||
is SaveWalletError.DataError -> TangemLogger.e("Unable to save user wallet: $error")
|
||||
is SaveWalletError.WalletAlreadySaved -> {
|
||||
userWalletsListRepository.unlock(
|
||||
userWalletId = userWallet.walletId,
|
||||
|
|
@ -246,8 +246,8 @@ internal class CreateWalletStartModel @Inject constructor(
|
|||
private fun handleScanError(error: TangemError) {
|
||||
when (error) {
|
||||
is TangemSdkError.NfcFeatureIsUnavailable -> handleNfcFeatureUnavailable()
|
||||
is TangemSdkError -> Timber.e(error, "Scan error occurred")
|
||||
else -> Timber.e(error, "Error happened")
|
||||
is TangemSdkError -> TangemLogger.e("Scan error occurred", error)
|
||||
else -> TangemLogger.e("Error happened", error)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ dependencies {
|
|||
implementation(projects.core.configToggles)
|
||||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.analytics)
|
||||
implementation(projects.core.utils)
|
||||
implementation(projects.core.analytics.models)
|
||||
implementation(projects.common.routing)
|
||||
implementation(projects.common.ui)
|
||||
|
|
@ -78,7 +79,6 @@ dependencies {
|
|||
/* Other */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.reKotlin)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.arrow.fx)
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.tangem.features.details.model
|
|||
|
||||
import android.content.res.Resources
|
||||
import arrow.core.getOrElse
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.common.routing.AppRoute
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
|
|
@ -45,7 +46,6 @@ import kotlinx.coroutines.flow.onEach
|
|||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import timber.log.Timber
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -84,8 +84,8 @@ internal class DetailsModel @Inject constructor(
|
|||
|
||||
val isWalletConnectAvailable = runBlocking {
|
||||
// danger region, this works immediately, but will be refactored later with WC
|
||||
checkIsWalletConnectAvailableUseCase(params.userWalletId).getOrElse {
|
||||
Timber.w("Unable to check WalletConnect availability: $it")
|
||||
checkIsWalletConnectAvailableUseCase(params.userWalletId).getOrElse { throwable ->
|
||||
TangemLogger.w("Unable to check WalletConnect availability: $throwable")
|
||||
|
||||
false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import kotlinx.collections.immutable.persistentListOf
|
|||
import kotlinx.collections.immutable.toPersistentList
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -115,7 +115,7 @@ internal class UserWalletListModel @Inject constructor(
|
|||
unlockWalletUseCase(userWalletId)
|
||||
.onRight { router.push(AppRoute.WalletSettings(userWalletId)) }
|
||||
.onLeft { error ->
|
||||
Timber.e("Failed to unlock wallet $userWalletId: $error")
|
||||
TangemLogger.e("Failed to unlock wallet $userWalletId: $error")
|
||||
error.handle(
|
||||
onUserCancelled = {},
|
||||
isFromUnlockAll = false,
|
||||
|
|
@ -142,7 +142,7 @@ internal class UserWalletListModel @Inject constructor(
|
|||
applyUserWalletListSortingUseCase(userWalletIds).onRight {
|
||||
analyticsEventHandler.send(WalletSettingsAnalyticEvents.WalletsReorder())
|
||||
}.onLeft { error ->
|
||||
Timber.e("Failed to apply wallet list sorting: $error")
|
||||
TangemLogger.e("Failed to apply wallet list sorting: $error")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ dependencies {
|
|||
|
||||
/** Other dependencies */
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.timber)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import android.webkit.WebResourceError
|
|||
import android.webkit.WebResourceRequest
|
||||
import android.webkit.WebView
|
||||
import com.google.accompanist.web.AccompanistWebViewClient
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
/**
|
||||
* [AccompanistWebViewClient] for Disclaimer [WebView]
|
||||
|
|
@ -24,7 +24,7 @@ internal class DisclaimerWebViewClient(
|
|||
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
|
||||
super.onPageStarted(view, url, favicon)
|
||||
|
||||
Timber.d("onPageStarted: $url")
|
||||
TangemLogger.d("onPageStarted: $url")
|
||||
if (url != null) {
|
||||
loadedUrls[url] = false
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ internal class DisclaimerWebViewClient(
|
|||
override fun onPageFinished(view: WebView?, url: String?) {
|
||||
super.onPageFinished(view, url)
|
||||
|
||||
Timber.d("onPageFinished: $url")
|
||||
TangemLogger.d("onPageFinished: $url")
|
||||
if (url != null && loadedUrls.containsKey(url)) {
|
||||
loadedUrls[url] = true
|
||||
onLoadingFinished(false)
|
||||
|
|
@ -45,7 +45,7 @@ internal class DisclaimerWebViewClient(
|
|||
|
||||
val url = request?.url?.toString()
|
||||
|
||||
Timber.d("onReceivedError: $url")
|
||||
TangemLogger.d("onReceivedError: $url")
|
||||
|
||||
if (url != null && loadedUrls.containsKey(url)) {
|
||||
loadedUrls[url] = true
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@ dependencies {
|
|||
|
||||
/* Other */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
|
||||
/* Core */
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import kotlinx.coroutines.channels.Channel
|
|||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val TOKEN_ACTIONS_DELAY = 500L
|
||||
|
|
@ -205,7 +205,7 @@ internal class AddToPortfolioModel @Inject constructor(
|
|||
finishFlow()
|
||||
}
|
||||
.catch { throwable ->
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
params.callback.onDismiss()
|
||||
}
|
||||
.launchIn(modelScope)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import com.tangem.features.feed.model.earn.analytics.EarnAnalyticsEvent
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -134,7 +134,7 @@ internal class AddToPortfolioPreselectedDataModel @Inject constructor(
|
|||
finishSuccessFlow(addedToken.currency, selectedPortfolioValue.userWallet.walletId)
|
||||
}
|
||||
.catch { throwable ->
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
params.callback.onDismiss()
|
||||
}
|
||||
.launchIn(modelScope)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import com.tangem.domain.managetokens.CheckCurrencyUnsupportedUseCase
|
|||
import com.tangem.domain.managetokens.model.CurrencyUnsupportedState
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.features.feed.impl.R
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
class CheckCurrencyUnsupportedDelegate @Inject constructor(
|
||||
|
|
@ -29,14 +29,14 @@ class CheckCurrencyUnsupportedDelegate @Inject constructor(
|
|||
networkId = rawNetworkId,
|
||||
isMainNetwork = isMainNetwork,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(
|
||||
throwable,
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Failed to check currency unsupported state
|
||||
|- User wallet ID: $userWalletId
|
||||
|- Network ID: $rawNetworkId
|
||||
|- Is main network: $isMainNetwork
|
||||
""".trimIndent(),
|
||||
throwable,
|
||||
)
|
||||
|
||||
val message = SnackbarMessage(
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import dagger.assisted.AssistedFactory
|
|||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultMarketsTokenDetailDeepLinkHandler @AssistedInject constructor(
|
||||
@Assisted private val scope: CoroutineScope,
|
||||
|
|
@ -44,7 +44,7 @@ internal class DefaultMarketsTokenDetailDeepLinkHandler @AssistedInject construc
|
|||
tokenId = rawTokenId,
|
||||
tokenSymbol = "", // used for analytics
|
||||
).getOrElse {
|
||||
Timber.e("Failed to get market token info")
|
||||
TangemLogger.e("Failed to get market token info")
|
||||
return@launch
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import dagger.assisted.AssistedFactory
|
|||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultNewsDetailsDeepLinkHandler @AssistedInject constructor(
|
||||
@Assisted private val scope: CoroutineScope,
|
||||
|
|
@ -25,7 +25,7 @@ internal class DefaultNewsDetailsDeepLinkHandler @AssistedInject constructor(
|
|||
scope.launch {
|
||||
val articleId = extractArticleIdFromUri(deeplinkUri)
|
||||
if (articleId == null) {
|
||||
Timber.e(
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Failed to extract article ID from deep link
|
||||
|- Received URI: $deeplinkUri
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ import com.tangem.domain.markets.TokenMarketUpdateRequest
|
|||
import com.tangem.pagination.BatchAction
|
||||
import com.tangem.pagination.BatchUpdateResult
|
||||
import com.tangem.pagination.PaginationStatus
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal fun logStatus(tag: String, status: PaginationStatus<List<TokenMarket>>) {
|
||||
Timber.tag(tag).d(
|
||||
TangemLogger.withTag(tag).d(
|
||||
"""
|
||||
Status
|
||||
$status
|
||||
|
|
@ -19,19 +19,19 @@ internal fun logStatus(tag: String, status: PaginationStatus<List<TokenMarket>>)
|
|||
|
||||
internal fun logAction(tag: String, action: BatchAction<Int, TokenMarketListConfig, TokenMarketUpdateRequest>) {
|
||||
when (action) {
|
||||
is BatchAction.Reload -> Timber.tag(tag).d(
|
||||
is BatchAction.Reload -> TangemLogger.withTag(tag).d(
|
||||
"""
|
||||
Reload = ${action.requestParams}
|
||||
""".trimIndent(),
|
||||
)
|
||||
is BatchAction.UpdateBatches -> Timber.tag(tag).d(
|
||||
is BatchAction.UpdateBatches -> TangemLogger.withTag(tag).d(
|
||||
"""
|
||||
To update:
|
||||
keys: ${action.keys.toList()}
|
||||
updateType: ${action.updateRequest.javaClass.simpleName}
|
||||
""".trimIndent(),
|
||||
)
|
||||
else -> Timber.tag(tag).d(
|
||||
else -> TangemLogger.withTag(tag).d(
|
||||
"""
|
||||
$action
|
||||
""".trimIndent(),
|
||||
|
|
@ -48,7 +48,7 @@ internal fun logUpdateResults(
|
|||
is BatchUpdateResult.Error -> s.throwable.toString()
|
||||
}
|
||||
|
||||
Timber.tag(tag).d(
|
||||
TangemLogger.withTag(tag).d(
|
||||
"""
|
||||
updateResults
|
||||
request: ${updateResult.first}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import kotlinx.collections.immutable.persistentListOf
|
|||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -134,7 +134,7 @@ internal class NewsDetailsModel @Inject constructor(
|
|||
modelScope.launch {
|
||||
toggleArticleLikedUseCase
|
||||
.toggleLiked(articleId)
|
||||
.onLeft { Timber.e(it) }
|
||||
.onLeft { TangemLogger.e("Error", it) }
|
||||
analyticsEventHandler.send(NewsDetailsAnalyticsEvent.NewsLikeClicked(articleId))
|
||||
}
|
||||
}
|
||||
|
|
@ -231,7 +231,7 @@ internal class NewsDetailsModel @Inject constructor(
|
|||
}
|
||||
// global request executing error
|
||||
newsId < 0 -> {
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
}
|
||||
else -> {
|
||||
val (code, message) = when (error) {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,8 @@ dependencies {
|
|||
implementation(projects.core.analytics)
|
||||
implementation(projects.core.analytics.models)
|
||||
implementation(projects.core.navigation)
|
||||
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/** Common */
|
||||
implementation(projects.common.routing)
|
||||
|
||||
|
|
@ -63,7 +64,6 @@ dependencies {
|
|||
|
||||
/** Other libraries */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ import kotlinx.collections.immutable.toImmutableList
|
|||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -196,7 +196,7 @@ internal class HomeModel @Inject constructor(
|
|||
val userWallet = coldUserWalletBuilderFactory.create(scanResponse = scanResponse).build()
|
||||
|
||||
if (userWallet == null) {
|
||||
Timber.e("User wallet not created")
|
||||
TangemLogger.e("User wallet not created")
|
||||
setLoading(false)
|
||||
return
|
||||
}
|
||||
|
|
@ -205,11 +205,11 @@ internal class HomeModel @Inject constructor(
|
|||
userWallet = userWallet,
|
||||
analyticsSource = AnalyticsParam.ScreensSources.Intro,
|
||||
).fold(
|
||||
ifLeft = {
|
||||
ifLeft = { error ->
|
||||
delay(HIDE_PROGRESS_DELAY)
|
||||
setLoading(false)
|
||||
when (it) {
|
||||
is SaveWalletError.DataError -> Timber.e(it.toString(), "Unable to save user wallet")
|
||||
when (error) {
|
||||
is SaveWalletError.DataError -> TangemLogger.e("Unable to save user wallet: $error")
|
||||
is SaveWalletError.WalletAlreadySaved -> appRouter.replaceAll(AppRoute.Wallet)
|
||||
}
|
||||
},
|
||||
|
|
@ -245,8 +245,8 @@ internal class HomeModel @Inject constructor(
|
|||
private fun handleScanError(error: TangemError) {
|
||||
when (error) {
|
||||
is TangemSdkError.NfcFeatureIsUnavailable -> handleNfcFeatureUnavailable()
|
||||
is TangemSdkError -> Timber.e(error, "Scan error occurred")
|
||||
else -> Timber.e(error, "Error happened")
|
||||
is TangemSdkError -> TangemLogger.e("Scan error occurred", error)
|
||||
else -> TangemLogger.e("Error happened", error)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import com.tangem.utils.coroutines.saveIn
|
|||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@ModelScoped
|
||||
|
|
@ -53,7 +53,7 @@ internal class HotAccessCodeRequestModel @Inject constructor(
|
|||
|
||||
suspend fun show(attemptRequest: HotWalletPasswordRequester.AttemptRequest) {
|
||||
if (userWalletExists(attemptRequest.hotWalletId).not()) {
|
||||
Timber.e("User wallet with id ${attemptRequest.hotWalletId} does not exist")
|
||||
TangemLogger.e("User wallet with id ${attemptRequest.hotWalletId} does not exist")
|
||||
result.value = HotWalletPasswordRequester.Result.Dismiss
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.features.hotwallet.addexistingwallet.im.port.model
|
||||
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
import com.tangem.core.analytics.models.event.OnboardingAnalyticsEvent
|
||||
|
|
@ -28,7 +29,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -96,10 +96,10 @@ internal class AddExistingWalletImportModel @Inject constructor(
|
|||
val hotUserWalletBuilder = hotUserWalletBuilderFactory.create(hotWalletId)
|
||||
val userWallet = hotUserWalletBuilder.build()
|
||||
saveUserWalletUseCase.invoke(userWallet.copy(backedUp = true))
|
||||
.onLeft {
|
||||
.onLeft { error ->
|
||||
setImportProgress(false)
|
||||
when (it) {
|
||||
is SaveWalletError.DataError -> Timber.e(it.toString(), "Unable to save user wallet")
|
||||
when (error) {
|
||||
is SaveWalletError.DataError -> TangemLogger.e("Unable to save user wallet: $error")
|
||||
is SaveWalletError.WalletAlreadySaved -> {
|
||||
uiMessageSender.send(
|
||||
SnackbarMessage(resourceReference(R.string.hw_import_seed_phrase_already_imported)),
|
||||
|
|
@ -129,8 +129,8 @@ internal class AddExistingWalletImportModel @Inject constructor(
|
|||
)
|
||||
params.callbacks.onWalletImported(userWallet.walletId)
|
||||
}
|
||||
}.onFailure {
|
||||
Timber.e(it)
|
||||
}.onFailure { throwable ->
|
||||
TangemLogger.e("Error", throwable)
|
||||
setImportProgress(false)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val HIDE_PROGRESS_DELAY = 400L
|
||||
|
|
@ -129,7 +129,7 @@ internal class CreateHardwareWalletModel @Inject constructor(
|
|||
val userWallet = coldUserWalletBuilderFactory.create(scanResponse = scanResponse).build()
|
||||
|
||||
if (userWallet == null) {
|
||||
Timber.e("User wallet not created")
|
||||
TangemLogger.e("User wallet not created")
|
||||
setLoading(false)
|
||||
return
|
||||
}
|
||||
|
|
@ -142,7 +142,7 @@ internal class CreateHardwareWalletModel @Inject constructor(
|
|||
delay(HIDE_PROGRESS_DELAY)
|
||||
setLoading(false)
|
||||
when (saveWalletError) {
|
||||
is SaveWalletError.DataError -> Timber.e(saveWalletError.toString(), "Unable to save user wallet")
|
||||
is SaveWalletError.DataError -> TangemLogger.e("Unable to save user wallet: $saveWalletError")
|
||||
is SaveWalletError.WalletAlreadySaved -> handleAlreadySavedCard(
|
||||
saveWalletError.messageId,
|
||||
walletId = userWallet.walletId,
|
||||
|
|
@ -164,8 +164,8 @@ internal class CreateHardwareWalletModel @Inject constructor(
|
|||
private fun handleScanError(error: TangemError) {
|
||||
when (error) {
|
||||
is TangemSdkError.NfcFeatureIsUnavailable -> handleNfcFeatureUnavailable()
|
||||
is TangemSdkError -> Timber.e(error, "Scan error occurred")
|
||||
else -> Timber.e(error, "Error happened")
|
||||
is TangemSdkError -> TangemLogger.e("Scan error occurred", error)
|
||||
else -> TangemLogger.e("Error happened", error)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -112,7 +112,7 @@ internal class CreateMobileWalletModel @Inject constructor(
|
|||
|
||||
router.replaceAll(AppRoute.Wallet)
|
||||
}.onFailure { throwable ->
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
|
||||
uiState.update { it.copy(createButtonLoading = false) }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.features.hotwallet.forgetwallet
|
||||
|
||||
import arrow.core.getOrElse
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.common.routing.AppRoute
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.decompose.model.Model
|
||||
|
|
@ -20,7 +21,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@ModelScoped
|
||||
|
|
@ -80,8 +80,8 @@ internal class ForgetWalletModel @Inject constructor(
|
|||
private fun forgetWallet() {
|
||||
modelScope.launch {
|
||||
val hasUserWallets = deleteWalletUseCase(params.userWalletId)
|
||||
.getOrElse {
|
||||
Timber.e("Unable to delete wallet: $it")
|
||||
.getOrElse { error ->
|
||||
TangemLogger.e("Unable to delete wallet: $error")
|
||||
|
||||
uiMessageSender.send(
|
||||
message = SnackbarMessage(resourceReference(R.string.common_unknown_error)),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.tangem.features.hotwallet.manualbackup.check.model
|
|||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import arrow.core.getOrElse
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
|
|
@ -20,15 +21,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
import kotlin.Boolean
|
||||
import kotlin.Int
|
||||
import kotlin.String
|
||||
import kotlin.Suppress
|
||||
import kotlin.collections.List
|
||||
import kotlin.collections.all
|
||||
import kotlin.collections.map
|
||||
|
||||
@Stable
|
||||
@ModelScoped
|
||||
|
|
@ -63,7 +56,7 @@ internal class ManualBackupCheckModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
}.onFailure {
|
||||
Timber.e(it)
|
||||
TangemLogger.e("Error", it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -114,8 +107,8 @@ internal class ManualBackupCheckModel @Inject constructor(
|
|||
uiState.update {
|
||||
it.copy(completeButtonProgress = false)
|
||||
}
|
||||
}.onFailure {
|
||||
Timber.e(it)
|
||||
}.onFailure { throwable ->
|
||||
TangemLogger.e("Error", throwable)
|
||||
|
||||
uiState.update {
|
||||
it.copy(completeButtonProgress = false)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Stable
|
||||
|
|
@ -58,7 +58,7 @@ internal class ManualBackupPhraseModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
}.onFailure {
|
||||
Timber.e(it)
|
||||
TangemLogger.e("Error", it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Stable
|
||||
|
|
@ -53,7 +53,7 @@ internal class ViewPhraseModel @Inject constructor(
|
|||
|
||||
modelScope.launch {
|
||||
val words = exportSeedPhraseUseCase.invoke(userWallet.hotWalletId)
|
||||
.getOrElse { error -> Timber.e(error); throw error }
|
||||
.getOrElse { error -> TangemLogger.e("Error", error); throw error }
|
||||
.mnemonic.mnemonicComponents
|
||||
|
||||
uiState.update {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import com.tangem.features.hotwallet.walletbackup.entity.WalletBackupUM
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ internal class WalletBackupModel @Inject constructor(
|
|||
.onEach { either ->
|
||||
either.fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
if (!isScreenOpenedEventSent.get() && userWallet is UserWallet.Hot) {
|
||||
|
|
@ -128,13 +128,13 @@ internal class WalletBackupModel @Inject constructor(
|
|||
getUserWalletUseCase.invoke(params.userWalletId)
|
||||
.fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
when (userWallet) {
|
||||
is UserWallet.Cold -> {
|
||||
val userWalletId = userWallet.walletId
|
||||
Timber.e("Unexpected cold wallet when request seed phrase: $userWalletId")
|
||||
TangemLogger.e("Unexpected cold wallet when request seed phrase: $userWalletId")
|
||||
}
|
||||
is UserWallet.Hot -> showSeedPhrase(userWallet)
|
||||
}
|
||||
|
|
@ -155,7 +155,7 @@ internal class WalletBackupModel @Inject constructor(
|
|||
unlockHotWalletContextualUseCase.invoke(hotWallet.hotWalletId)
|
||||
.fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error while export seed phrase: $it")
|
||||
TangemLogger.e("Error while export seed phrase: $it")
|
||||
},
|
||||
ifRight = { seedPhrasePrivateInfo ->
|
||||
router.push(AppRoute.ViewPhrase(params.userWalletId))
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import kotlinx.collections.immutable.persistentListOf
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -147,7 +147,7 @@ internal class WalletHardwareBackupModel @Inject constructor(
|
|||
-> modelScope.launch {
|
||||
unlockHotWalletContextualUseCase.invoke(hotWalletId)
|
||||
.onLeft {
|
||||
Timber.e(it, "Unable to unlock wallet with id ${params.userWalletId}")
|
||||
TangemLogger.e("Unable to unlock wallet with id ${params.userWalletId}", it)
|
||||
}
|
||||
.onRight {
|
||||
router.push(AppRoute.UpgradeWallet(userWalletId = params.userWalletId))
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ dependencies {
|
|||
/** Other libraries */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
implementation(deps.sumsub.sdk)
|
||||
implementation(deps.arrow.core)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Stable
|
||||
|
|
@ -40,7 +40,7 @@ class DefaultKycModel @Inject constructor(
|
|||
tangemPayEligibilityManager.reset()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
TangemLogger.e("Error", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ dependencies {
|
|||
implementation(projects.core.ui)
|
||||
implementation(projects.core.configToggles)
|
||||
implementation(projects.core.analytics)
|
||||
implementation(projects.core.utils)
|
||||
implementation(projects.common.routing)
|
||||
implementation(projects.common.ui)
|
||||
|
||||
|
|
@ -67,6 +68,5 @@ dependencies {
|
|||
/* Other */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.reKotlin) // need for legacy onboarding
|
||||
}
|
||||
|
|
@ -41,7 +41,7 @@ import kotlinx.collections.immutable.toPersistentList
|
|||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -243,7 +243,7 @@ internal class ChooseManagedTokensModel @Inject constructor(
|
|||
}
|
||||
is PaginationStatus.Paginating -> {
|
||||
(status.lastResult as? BatchFetchResult.Error)?.let { fetchError ->
|
||||
Timber.e(fetchError.throwable)
|
||||
TangemLogger.e("Error", fetchError.throwable)
|
||||
}
|
||||
|
||||
state.copy(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.features.managetokens.model
|
||||
|
||||
import arrow.core.getOrElse
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
import com.tangem.core.analytics.api.AnalyticsEventHandler
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
|
|
@ -36,7 +37,6 @@ import kotlinx.collections.immutable.mutate
|
|||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
// TODO: Divide to sub-components: [REDACTED_JIRA]
|
||||
|
|
@ -239,7 +239,7 @@ internal class CustomTokenFormModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun showErrorDialog(throwable: Throwable) {
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
val message = when (throwable) {
|
||||
is TangemSdkError -> resourceReference(
|
||||
R.string.generic_error_code,
|
||||
|
|
@ -279,7 +279,7 @@ internal class CustomTokenFormModel @Inject constructor(
|
|||
stateAcc // No need to display error
|
||||
}
|
||||
is CustomTokenFormValidationException.DataError -> {
|
||||
Timber.e(exception.cause, "Unable to validate custom currency")
|
||||
TangemLogger.e("Unable to validate custom currency", exception.cause)
|
||||
stateAcc
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import kotlinx.collections.immutable.toPersistentList
|
|||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList", "LargeClass")
|
||||
|
|
@ -248,7 +248,7 @@ internal class ManageTokensModel @Inject constructor(
|
|||
}
|
||||
is PaginationStatus.Paginating -> {
|
||||
(status.lastResult as? BatchFetchResult.Error)?.let { fetchError ->
|
||||
Timber.e(fetchError.throwable)
|
||||
TangemLogger.e("Error", fetchError.throwable)
|
||||
}
|
||||
|
||||
state.copySealed(
|
||||
|
|
@ -339,7 +339,7 @@ internal class ManageTokensModel @Inject constructor(
|
|||
currenciesToAdd = manageTokensListManager.currenciesToAdd.value,
|
||||
currenciesToRemove = manageTokensListManager.currenciesToRemove.value,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(throwable, "Failed to save changes")
|
||||
TangemLogger.e("Failed to save changes", throwable)
|
||||
return@resource
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import kotlinx.collections.immutable.toPersistentList
|
|||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -167,7 +167,7 @@ internal class OnboardingManageTokensModel @Inject constructor(
|
|||
}
|
||||
is PaginationStatus.Paginating -> {
|
||||
(status.lastResult as? BatchFetchResult.Error)?.let { fetchError ->
|
||||
Timber.e(fetchError.throwable)
|
||||
TangemLogger.e("Error", fetchError.throwable)
|
||||
}
|
||||
|
||||
state.copy(
|
||||
|
|
@ -261,7 +261,7 @@ internal class OnboardingManageTokensModel @Inject constructor(
|
|||
currenciesToAdd = manageTokensListManager.currenciesToAdd.value,
|
||||
currenciesToRemove = manageTokensListManager.currenciesToRemove.value,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(throwable, "Failed to save changes")
|
||||
TangemLogger.e("Failed to save changes", throwable)
|
||||
return@resource
|
||||
}
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ internal class OnboardingManageTokensModel @Inject constructor(
|
|||
currenciesToAdd = manageTokensListManager.currenciesToAdd.value,
|
||||
currenciesToRemove = manageTokensListManager.currenciesToRemove.value,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(throwable, "Failed to save changes")
|
||||
TangemLogger.e("Failed to save changes", throwable)
|
||||
return@resource
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import com.tangem.utils.coroutines.saveInAndJoin
|
|||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class CustomCurrencyValidator(
|
||||
private val userWalletId: UserWalletId,
|
||||
|
|
@ -103,7 +103,7 @@ internal class CustomCurrencyValidator(
|
|||
).getOrElse { e ->
|
||||
when (e) {
|
||||
is FindTokenException.DataError -> {
|
||||
Timber.e(e.cause, "Unable to find custom currency")
|
||||
TangemLogger.e("Unable to find custom currency", e.cause)
|
||||
updateStatus(Status.UnexpectedException(e.cause))
|
||||
return
|
||||
}
|
||||
|
|
@ -135,7 +135,7 @@ internal class CustomCurrencyValidator(
|
|||
).getOrElse { e ->
|
||||
val newStatus = when (e) {
|
||||
is FindTokenException.DataError -> {
|
||||
Timber.e(e.cause, "Unable to find custom currency")
|
||||
TangemLogger.e("Unable to find custom currency", e.cause)
|
||||
Status.UnexpectedException(e.cause)
|
||||
}
|
||||
is FindTokenException.NotFound -> {
|
||||
|
|
@ -161,7 +161,7 @@ internal class CustomCurrencyValidator(
|
|||
derivationPath = derivationPath,
|
||||
formValues = validatedForm,
|
||||
).getOrElse { e ->
|
||||
Timber.e(e, "Unable to create custom currency")
|
||||
TangemLogger.e("Unable to create custom currency", e)
|
||||
updateStatus(Status.UnexpectedException(e))
|
||||
return
|
||||
}
|
||||
|
|
@ -181,7 +181,7 @@ internal class CustomCurrencyValidator(
|
|||
is CryptoCurrency.Token -> currency.contractAddress
|
||||
},
|
||||
).getOrElse { e ->
|
||||
Timber.e(e, "Unable to check if currency is already added")
|
||||
TangemLogger.e("Unable to check if currency is already added", e)
|
||||
updateStatus(Status.UnexpectedException(e))
|
||||
|
||||
return
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import arrow.core.raise.Raise
|
|||
import arrow.core.raise.either
|
||||
import arrow.core.raise.ensureNotNull
|
||||
import arrow.core.right
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.blockchainsdk.utils.fromNetworkId
|
||||
import com.tangem.domain.account.producer.SingleAccountListProducer
|
||||
|
|
@ -21,7 +22,6 @@ import com.tangem.lib.crypto.derivation.AccountNodeRecognizer
|
|||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
|
||||
internal class CustomTokenFormUseCasesFacade @AssistedInject constructor(
|
||||
@Assisted private val userWalletId: UserWalletId,
|
||||
|
|
@ -84,14 +84,14 @@ internal class CustomTokenFormUseCasesFacade @AssistedInject constructor(
|
|||
val blockchain = Blockchain.fromNetworkId(networkId = currency.network.backendId)
|
||||
if (blockchain == null) {
|
||||
val exception = IllegalStateException("Token has unknown networkId: ${currency.id}")
|
||||
Timber.e(exception)
|
||||
TangemLogger.e("Error", exception)
|
||||
raise(exception)
|
||||
}
|
||||
|
||||
val derivationPathValue = currency.network.derivationPath.value
|
||||
if (derivationPathValue == null) {
|
||||
val exception = IllegalStateException("Token has no derivation path: ${currency.id}")
|
||||
Timber.e(exception)
|
||||
TangemLogger.e("Error", exception)
|
||||
raise(exception)
|
||||
}
|
||||
|
||||
|
|
@ -99,10 +99,9 @@ internal class CustomTokenFormUseCasesFacade @AssistedInject constructor(
|
|||
val index = accountNodeRecognizer.recognize(derivationPathValue)?.toInt()
|
||||
|
||||
if (index == null) {
|
||||
Timber.e(
|
||||
"%s%s",
|
||||
"Unable to determine account index for derivation path: $derivationPathValue. ",
|
||||
"Use main account index instead.",
|
||||
TangemLogger.e(
|
||||
"Unable to determine account index for derivation path: $derivationPathValue. " +
|
||||
"Use main account index instead.",
|
||||
)
|
||||
DerivationIndex.Main.value
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import kotlinx.coroutines.channels.BufferOverflow
|
|||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
@Suppress("LongParameterList", "LargeClass")
|
||||
internal class ManageTokensListManager @AssistedInject constructor(
|
||||
|
|
@ -222,7 +222,7 @@ internal class ManageTokensListManager @AssistedInject constructor(
|
|||
scope.launch {
|
||||
useCasesFacade.removeCustomCurrencyUseCase(currency)
|
||||
.onRight { reload() }
|
||||
.onLeft { Timber.e(it) }
|
||||
.onLeft { TangemLogger.e("Error", it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -266,13 +266,13 @@ internal class ManageTokensListManager @AssistedInject constructor(
|
|||
tempAddedTokens = changedCurrenciesManager.currenciesToAdd.value,
|
||||
tempRemovedTokens = changedCurrenciesManager.currenciesToRemove.value,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(
|
||||
throwable,
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Failed to check linked tokens
|
||||
|- Mode: $mode
|
||||
|- Network ID: ${network.id}
|
||||
""".trimIndent(),
|
||||
throwable,
|
||||
)
|
||||
|
||||
val message = SnackbarMessage(
|
||||
|
|
@ -292,13 +292,13 @@ internal class ManageTokensListManager @AssistedInject constructor(
|
|||
return useCasesFacade.checkCurrencyUnsupportedUseCase(
|
||||
sourceNetwork = sourceNetwork,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(
|
||||
throwable,
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Failed to check currency unsupported state
|
||||
|- Mode: $mode
|
||||
|- Source Network: $sourceNetwork
|
||||
""".trimIndent(),
|
||||
throwable,
|
||||
)
|
||||
|
||||
val message = SnackbarMessage(
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ dependencies {
|
|||
|
||||
/* Other */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
|
||||
/* Core */
|
||||
|
|
@ -78,6 +77,7 @@ dependencies {
|
|||
implementation(projects.core.analytics)
|
||||
implementation(projects.core.analytics.models)
|
||||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/* Common */
|
||||
implementation(projects.common.ui)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import com.tangem.features.nft.impl.R
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -136,7 +136,7 @@ internal class NFTCollectionsModel @Inject constructor(
|
|||
_state.update { ChangeRefreshingStateTransformer(true).transform(it) }
|
||||
try {
|
||||
refreshAllNFTUseCase(params.userWalletId)
|
||||
.onLeft { Timber.e(it) }
|
||||
.onLeft { TangemLogger.e("Error", it) }
|
||||
} finally {
|
||||
_state.update { ChangeRefreshingStateTransformer(false).transform(it) }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import kotlinx.coroutines.async
|
|||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -115,7 +115,7 @@ internal class NFTDetailsModel @Inject constructor(
|
|||
getNFTPriceUseCase(params.userWalletId, params.nftAsset)
|
||||
.fold(
|
||||
ifLeft = {
|
||||
Timber.w(it)
|
||||
TangemLogger.w("Error", it)
|
||||
},
|
||||
ifRight = { quoteFlow ->
|
||||
quoteFlow
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ dependencies {
|
|||
/** Other libraries */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.firebase.crashlytics)
|
||||
implementation(tangemDeps.card.core)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.features.onboarding.v2.twin.impl.model
|
||||
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import com.tangem.Message
|
||||
import com.tangem.common.CompletionResult
|
||||
import com.tangem.common.KeyPair
|
||||
|
|
@ -47,7 +48,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList", "LargeClass")
|
||||
|
|
@ -296,7 +296,7 @@ internal class OnboardingTwinModel @Inject constructor(
|
|||
|
||||
private suspend fun finishActivation(scanResponse: ScanResponse) = coroutineScope {
|
||||
val userWallet = coldUserWalletBuilderFactory.create(scanResponse).build() ?: run {
|
||||
Timber.e("User wallet not created")
|
||||
TangemLogger.e("User wallet not created")
|
||||
setLoading(false)
|
||||
return@coroutineScope
|
||||
}
|
||||
|
|
@ -305,8 +305,8 @@ internal class OnboardingTwinModel @Inject constructor(
|
|||
userWallet = userWallet,
|
||||
canOverride = true,
|
||||
analyticsSource = AnalyticsParam.ScreensSources.Onboarding,
|
||||
).onLeft {
|
||||
Timber.e("Unable to save user wallet: $it")
|
||||
).onLeft { error ->
|
||||
TangemLogger.e("Unable to save user wallet: $error")
|
||||
setLoading(false)
|
||||
return@coroutineScope
|
||||
}
|
||||
|
|
@ -326,7 +326,7 @@ internal class OnboardingTwinModel @Inject constructor(
|
|||
|
||||
modelScope.launch {
|
||||
val userWallet = coldUserWalletBuilderFactory.create(params.scanResponse).build() ?: run {
|
||||
Timber.e("User wallet not created")
|
||||
TangemLogger.e("User wallet not created")
|
||||
setLoading(false)
|
||||
return@launch
|
||||
}
|
||||
|
|
@ -335,8 +335,8 @@ internal class OnboardingTwinModel @Inject constructor(
|
|||
userWallet = userWallet,
|
||||
canOverride = true,
|
||||
analyticsSource = AnalyticsParam.ScreensSources.Onboarding,
|
||||
).onLeft {
|
||||
Timber.e("Unable to save user wallet: $it")
|
||||
).onLeft { error ->
|
||||
TangemLogger.e("Unable to save user wallet: $error")
|
||||
setLoading(false)
|
||||
return@launch
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,5 +82,4 @@ dependencies {
|
|||
implementation(deps.decompose.ext.compose)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.reKotlin)
|
||||
implementation(deps.timber)
|
||||
}
|
||||
|
|
@ -21,7 +21,7 @@ import kotlinx.coroutines.flow.StateFlow
|
|||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class AllOffersModel @Inject constructor(
|
||||
|
|
@ -127,7 +127,7 @@ internal class AllOffersModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun handleOnrampError(onrampError: OnrampError) {
|
||||
Timber.e(onrampError.toString())
|
||||
TangemLogger.e(onrampError.toString())
|
||||
state.update { stateFactory.getOnrampErrorState(onrampError) }
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ import com.tangem.common.routing.AppRouter
|
|||
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultBuyDeepLinkHandler @AssistedInject constructor(
|
||||
router: AppRouter,
|
||||
|
|
@ -16,7 +16,7 @@ internal class DefaultBuyDeepLinkHandler @AssistedInject constructor(
|
|||
// It is okay here, we are navigating from outside, and there is no other way to getting UserWallet
|
||||
getSelectedWalletSyncUseCase().fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
router.push(AppRoute.BuyCrypto(userWallet.walletId))
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import dagger.assisted.AssistedFactory
|
|||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultOnrampDeepLinkHandler @AssistedInject constructor(
|
||||
@Assisted scope: CoroutineScope,
|
||||
|
|
@ -36,7 +36,7 @@ internal class DefaultOnrampDeepLinkHandler @AssistedInject constructor(
|
|||
}
|
||||
}
|
||||
else -> {
|
||||
Timber.e(
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Invalid parameters for ONRAMP deeplink
|
||||
|- Params: $queryParams
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import com.tangem.common.routing.AppRouter
|
|||
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultSellDeepLinkHandler @AssistedInject constructor(
|
||||
router: AppRouter,
|
||||
|
|
@ -16,7 +16,7 @@ internal class DefaultSellDeepLinkHandler @AssistedInject constructor(
|
|||
// It is okay here, we are navigating from outside, and there is no other way to getting UserWallet
|
||||
getSelectedWalletSyncUseCase().fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
router.push(AppRoute.SellCrypto(userWallet.walletId))
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import com.tangem.common.routing.AppRouter
|
|||
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultSwapDeepLinkHandler @AssistedInject constructor(
|
||||
router: AppRouter,
|
||||
|
|
@ -16,7 +16,7 @@ internal class DefaultSwapDeepLinkHandler @AssistedInject constructor(
|
|||
// It is okay here, we are navigating from outside, and there is no other way to getting UserWallet
|
||||
getSelectedWalletSyncUseCase().fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
router.push(AppRoute.SwapCrypto(userWallet.walletId))
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import kotlinx.collections.immutable.toImmutableList
|
|||
import kotlinx.coroutines.channels.BufferOverflow
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -187,7 +187,7 @@ internal class HotCryptoModel @Inject constructor(
|
|||
channel.close()
|
||||
}
|
||||
.catch { throwable ->
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
closeNavigationFlow()
|
||||
}
|
||||
.launchIn(modelScope)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -56,13 +56,13 @@ internal class OnrampAddToPortfolioModel @Inject constructor(
|
|||
|
||||
private fun isTangemIconVisible(): Boolean {
|
||||
return getUserWalletUseCase(params.userWalletId)
|
||||
.onLeft { Timber.e("Unable to get wallet by id [${params.userWalletId}]: $it") }
|
||||
.onLeft { TangemLogger.e("Unable to get wallet by id [${params.userWalletId}]: $it") }
|
||||
.fold(ifLeft = { false }, ifRight = { it is UserWallet.Cold })
|
||||
}
|
||||
|
||||
private fun getUserWalletName(): String {
|
||||
return getUserWalletUseCase(params.userWalletId)
|
||||
.onLeft { Timber.e("Unable to get wallet name by id [${params.userWalletId}]: $it") }
|
||||
.onLeft { TangemLogger.e("Unable to get wallet name by id [${params.userWalletId}]: $it") }
|
||||
.fold(ifLeft = { "" }, ifRight = UserWallet::name)
|
||||
}
|
||||
|
||||
|
|
@ -74,7 +74,7 @@ internal class OnrampAddToPortfolioModel @Inject constructor(
|
|||
manageCryptoCurrenciesUseCase(accountId = accountId, add = params.cryptoCurrency)
|
||||
.onRight { params.onSuccessAdding(params.cryptoCurrency.id) }
|
||||
.onLeft { throwable ->
|
||||
Timber.e("Failed to add crypto currency: $throwable")
|
||||
TangemLogger.e("Failed to add crypto currency: $throwable")
|
||||
changeAddButtonProgressStatus(isProgress = false)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import com.tangem.utils.coroutines.runSuspendCatching
|
|||
import com.tangem.utils.isNullOrZero
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList", "LargeClass")
|
||||
|
|
@ -351,7 +351,7 @@ internal class OnrampMainComponentModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun handleOnrampError(onrampError: OnrampError) {
|
||||
Timber.e(onrampError.toString())
|
||||
TangemLogger.e(onrampError.toString())
|
||||
state.update { stateFactory.getOnrampErrorState(onrampError) }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
|
@ -116,7 +116,7 @@ internal class SelectProviderModel @Inject constructor(
|
|||
}
|
||||
.onLeft { error ->
|
||||
sendOnrampErrorEvent(error)
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import kotlinx.coroutines.flow.launchIn
|
|||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -133,7 +133,7 @@ internal class OnrampRedirectModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun handleError(error: OnrampError) {
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
analyticsEventHandler.sendOnrampErrorEvent(
|
||||
error = error,
|
||||
tokenSymbol = params.cryptoCurrency.symbol,
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.StateFlow
|
|||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
|
|
@ -89,12 +89,12 @@ internal class OnrampSuccessComponentModel @Inject constructor(
|
|||
getOnrampTransactionUseCase(txId = params.txId)
|
||||
.fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
showErrorAlert(error)
|
||||
},
|
||||
ifRight = { transaction ->
|
||||
userWallet = getUserWalletUseCase(transaction.userWalletId).getOrElse {
|
||||
Timber.e("UserWallet found")
|
||||
TangemLogger.e("UserWallet not found")
|
||||
// this case should never happened
|
||||
showErrorAlert(OnrampError.DomainError("UserWallet not found"))
|
||||
return@launch
|
||||
|
|
@ -104,7 +104,7 @@ internal class OnrampSuccessComponentModel @Inject constructor(
|
|||
?.getCryptoCurrency(currencyIdValue = transaction.toCurrencyId)?.getOrNull()
|
||||
.toOption()
|
||||
.getOrElse {
|
||||
Timber.e("Crypto currency not found")
|
||||
TangemLogger.e("Crypto currency not found")
|
||||
showErrorAlert(OnrampError.DomainError(null))
|
||||
return@launch
|
||||
}
|
||||
|
|
@ -145,7 +145,7 @@ internal class OnrampSuccessComponentModel @Inject constructor(
|
|||
providerName = transaction.providerName,
|
||||
paymentMethod = transaction.paymentMethod,
|
||||
)
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
showErrorAlert(error)
|
||||
},
|
||||
ifRight = { status ->
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import com.tangem.features.onramp.swap.entity.utils.createEmptyExchangeTo
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -26,12 +26,12 @@ internal class SwapSelectTokensController @Inject constructor() {
|
|||
)
|
||||
|
||||
fun update(transform: (SwapSelectTokensUM) -> SwapSelectTokensUM) {
|
||||
Timber.d("Applying non-name transformation")
|
||||
TangemLogger.d("Applying non-name transformation")
|
||||
state.update(transform)
|
||||
}
|
||||
|
||||
fun update(transformer: SwapSelectTokensUMTransformer) {
|
||||
Timber.d("Applying ${transformer::class.simpleName ?: "null"}")
|
||||
TangemLogger.d("Applying ${transformer::class.simpleName ?: "null"}")
|
||||
state.update(transformer::transform)
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ import kotlinx.collections.immutable.persistentListOf
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -36,17 +36,17 @@ internal class TokenListUMController @Inject constructor() {
|
|||
)
|
||||
|
||||
fun update(transform: (TokenListUM) -> TokenListUM) {
|
||||
Timber.d("Applying non-name transformation")
|
||||
TangemLogger.d("Applying non-name transformation")
|
||||
state.update(transform)
|
||||
}
|
||||
|
||||
fun update(transformer: TokenListUMTransformer) {
|
||||
Timber.d("Applying ${transformer::class.simpleName ?: "unknown"}")
|
||||
TangemLogger.d("Applying ${transformer::class.simpleName ?: "unknown"}")
|
||||
state.update(transformer::transform)
|
||||
}
|
||||
|
||||
fun update(transformer: SearchBarUMTransformer) {
|
||||
Timber.d("Applying ${transformer::class.simpleName ?: "unknown"}")
|
||||
TangemLogger.d("Applying ${transformer::class.simpleName ?: "unknown"}")
|
||||
state.update { prevState ->
|
||||
prevState.copy(
|
||||
searchBarUM = transformer.transform(prevState.searchBarUM),
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ dependencies {
|
|||
/** Other */
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@ import com.tangem.features.promobanners.impl.converters.PromoBannerDisplayToNoti
|
|||
import com.tangem.features.promobanners.impl.repository.PromoBannersRepository
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.runSuspendCatching
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import javax.inject.Inject
|
||||
|
|
@ -76,7 +76,7 @@ internal class PromoBannersBlockModel @Inject constructor(
|
|||
onCarouselScrolled = ::onCarouselScrolled,
|
||||
)
|
||||
}.onFailure { error ->
|
||||
Timber.w(error, "Failed to load promo banners")
|
||||
TangemLogger.w("Failed to load promo banners", error)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -111,11 +111,9 @@ internal class PromoBannersBlockModel @Inject constructor(
|
|||
runSuspendCatching {
|
||||
repository.dismissBanner(walletId, displayId)
|
||||
}.onFailure { error ->
|
||||
Timber.w(
|
||||
TangemLogger.w(
|
||||
"Failed to dismiss promo banner $displayId for wallet $walletId",
|
||||
error,
|
||||
"Failed to dismiss promo banner %s for wallet %s",
|
||||
displayId,
|
||||
walletId,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ dependencies {
|
|||
implementation(deps.compose.accompanist.permission)
|
||||
|
||||
/** Other dependencies */
|
||||
implementation(deps.timber)
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
|
||||
|
|
@ -34,6 +33,7 @@ dependencies {
|
|||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.analytics)
|
||||
implementation(projects.core.analytics.models)
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/** Common modules */
|
||||
implementation(projects.common.routing)
|
||||
|
|
|
|||
|
|
@ -60,6 +60,5 @@ dependencies {
|
|||
|
||||
/** Other dependencies */
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.timber)
|
||||
implementation(tangemDeps.card.core)
|
||||
}
|
||||
|
|
@ -26,7 +26,7 @@ import dagger.assisted.Assisted
|
|||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.delay
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.io.IOException
|
||||
import java.util.concurrent.ExecutorService
|
||||
import java.util.concurrent.Executors
|
||||
|
|
@ -63,8 +63,8 @@ class DefaultQrScanningComponent @AssistedInject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
val galleryLauncher = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) {
|
||||
val selectedImage = it ?: Uri.EMPTY
|
||||
val galleryLauncher = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) { uri ->
|
||||
val selectedImage = uri ?: Uri.EMPTY
|
||||
if (selectedImage != Uri.EMPTY) {
|
||||
val mimeType = context.contentResolver.getType(selectedImage)
|
||||
if (mimeType.isImageMimeType()) {
|
||||
|
|
@ -72,7 +72,7 @@ class DefaultQrScanningComponent @AssistedInject constructor(
|
|||
val image = InputImage.fromFilePath(context, selectedImage)
|
||||
analyzer.analyze(image)
|
||||
} catch (e: IOException) {
|
||||
Timber.e(e, "Unable to get image $selectedImage from gallery")
|
||||
TangemLogger.e("Unable to get image $selectedImage from gallery", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ dependencies {
|
|||
/** Dependencies */
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.jodatime)
|
||||
implementation(deps.timber)
|
||||
implementation(tangemDeps.card.core)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import com.tangem.domain.walletmanager.WalletManagersFacade
|
|||
import com.tangem.feature.referral.domain.errors.ReferralError
|
||||
import com.tangem.feature.referral.domain.models.ReferralData
|
||||
import com.tangem.feature.referral.domain.models.TokenData
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class ReferralInteractorImpl(
|
||||
private val repository: ReferralRepository,
|
||||
|
|
@ -62,7 +62,7 @@ internal class ReferralInteractorImpl(
|
|||
)
|
||||
.mapLeft { it.mapToDomainError() }
|
||||
.onLeft { error ->
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
if (error is ReferralError.UserCancelledException) {
|
||||
throw error
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ dependencies {
|
|||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
implementation(deps.compose.accompanist.systemUiController)
|
||||
implementation(deps.timber)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
|||
import com.tangem.feature.referral.api.deeplink.ReferralDeepLinkHandler
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
internal class DefaultReferralDeepLinkHandler @AssistedInject constructor(
|
||||
appRouter: AppRouter,
|
||||
|
|
@ -19,7 +19,7 @@ internal class DefaultReferralDeepLinkHandler @AssistedInject constructor(
|
|||
// It is okay here, we are navigating from outside, and there is no other way to getting UserWallet
|
||||
getSelectedWalletSyncUseCase().fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
if (userWallet !is UserWallet.Cold || userWallet.cardTypesResolver.isTangemWallet()) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ dependencies {
|
|||
implementation(projects.core.configToggles)
|
||||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.datasource)
|
||||
implementation(projects.core.utils)
|
||||
api(projects.core.pagination)
|
||||
|
||||
/** Tangem SDK */
|
||||
|
|
@ -85,7 +86,6 @@ dependencies {
|
|||
|
||||
/** Other dependencies */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.androidx.paging.runtime)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import dagger.assisted.AssistedFactory
|
|||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
@Suppress("ComplexCondition")
|
||||
internal class DefaultSellRedirectDeepLinkHandler @AssistedInject constructor(
|
||||
|
|
@ -40,13 +40,13 @@ internal class DefaultSellRedirectDeepLinkHandler @AssistedInject constructor(
|
|||
getSelectedWalletSyncUseCase()
|
||||
.fold(
|
||||
ifLeft = {
|
||||
Timber.e("Error on getting user wallet: $it")
|
||||
TangemLogger.e("Error on getting user wallet: $it")
|
||||
},
|
||||
ifRight = { userWallet ->
|
||||
if (currencyId.isNullOrEmpty() || transactionId.isNullOrEmpty() ||
|
||||
amount.isNullOrEmpty() || destinationAddress.isNullOrEmpty()
|
||||
) {
|
||||
Timber.e(
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Invalid parameters for SELL deeplink
|
||||
|- Params: $queryParams
|
||||
|
|
@ -57,7 +57,7 @@ internal class DefaultSellRedirectDeepLinkHandler @AssistedInject constructor(
|
|||
|
||||
scope.launch {
|
||||
val cryptoCurrency = getCryptoCurrency(userWallet.walletId, currencyId).getOrElse {
|
||||
Timber.e("Error on getting cryptoCurrency: $currencyId")
|
||||
TangemLogger.e("Error on getting cryptoCurrency: $currencyId")
|
||||
return@launch
|
||||
}
|
||||
// Convert using universal parser to account for regional separators
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ import kotlinx.coroutines.flow.StateFlow
|
|||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
internal class FeeSelectorLogic @AssistedInject constructor(
|
||||
|
|
@ -277,7 +277,7 @@ internal class FeeSelectorLogic @AssistedInject constructor(
|
|||
val selectedToken = getSelectedTokenStatus(fee.feeTokenId).bind()
|
||||
val availableTokens = getAvailableFeeTokens().fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e("Failed to get available fee tokens: $error")
|
||||
TangemLogger.e("Failed to get available fee tokens: $error")
|
||||
if (selectedToken.currency !is CryptoCurrency.Coin) {
|
||||
raise(error)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ import com.tangem.utils.extensions.stripZeroPlainString
|
|||
import com.tangem.utils.transformer.update
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import javax.inject.Inject
|
||||
import com.tangem.features.send.v2.api.entity.FeeSelectorUM as FeeSelectorUMRedesigned
|
||||
|
|
@ -374,7 +374,7 @@ internal class SendConfirmModel @Inject constructor(
|
|||
network = cryptoCurrency.network,
|
||||
).fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
_uiState.update(SendConfirmSendingStateTransformer(isSending = false))
|
||||
alertFactory.getGenericErrorState(
|
||||
onFailedTxEmailClick = {
|
||||
|
|
@ -470,7 +470,7 @@ internal class SendConfirmModel @Inject constructor(
|
|||
|
||||
val tokenToAdd = currenciesRepository.createTokenCurrency(cryptoCurrency, network)
|
||||
manageCryptoCurrenciesUseCase(accountId = accountId, add = tokenToAdd)
|
||||
.onLeft(Timber::e)
|
||||
.onLeft { TangemLogger.e("Error", it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ import com.tangem.utils.coroutines.JobHolder
|
|||
import com.tangem.utils.coroutines.saveIn
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ internal class SendModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onError(error: GetUserWalletError) {
|
||||
Timber.w(error.toString())
|
||||
TangemLogger.w(error.toString())
|
||||
showAlertError()
|
||||
}
|
||||
|
||||
|
|
@ -421,7 +421,7 @@ internal class SendModel @Inject constructor(
|
|||
.launchIn(modelScope)
|
||||
},
|
||||
ifLeft = { error ->
|
||||
Timber.w(error.toString())
|
||||
TangemLogger.w(error.toString())
|
||||
showAlertError()
|
||||
return@launch
|
||||
},
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ import com.tangem.utils.extensions.stripZeroPlainString
|
|||
import com.tangem.utils.transformer.update
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import javax.inject.Inject
|
||||
import com.tangem.features.send.v2.api.entity.FeeSelectorUM as FeeSelectorUMRedesigned
|
||||
|
|
@ -273,7 +273,7 @@ internal class NFTSendConfirmModel @Inject constructor(
|
|||
network = cryptoCurrency.network,
|
||||
).fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
_uiState.update(NFTSendConfirmSendingStateTransformer(isSending = false))
|
||||
alertFactory.getGenericErrorState(
|
||||
onFailedTxEmailClick = { onFailedTxEmailClick(error.localizedMessage.orEmpty()) },
|
||||
|
|
@ -297,7 +297,7 @@ internal class NFTSendConfirmModel @Inject constructor(
|
|||
|
||||
result.fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
alertFactory.getSendTransactionErrorState(
|
||||
error = error,
|
||||
popBack = appRouter::pop,
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.lifecycle.compose)
|
||||
implementation(deps.jodatime)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.moshi)
|
||||
|
||||
/** Compose */
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import dagger.assisted.AssistedFactory
|
|||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
internal class DefaultStakingDeepLinkHandler @AssistedInject constructor(
|
||||
|
|
@ -44,7 +44,7 @@ internal class DefaultStakingDeepLinkHandler @AssistedInject constructor(
|
|||
// If selected user wallet is different than from deeplink - ignore deeplink
|
||||
// If selected user wallet is null - ignore deeplink
|
||||
if (walletId != selectedUserWalletId || selectedUserWalletId == null) {
|
||||
Timber.e("Error on getting user wallet")
|
||||
TangemLogger.e("Error on getting user wallet")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ internal class DefaultStakingDeepLinkHandler @AssistedInject constructor(
|
|||
}
|
||||
|
||||
if (cryptoCurrency == null) {
|
||||
Timber.e(
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Could not get crypto currency for
|
||||
|- $NETWORK_ID_KEY: $networkId
|
||||
|
|
@ -77,7 +77,7 @@ internal class DefaultStakingDeepLinkHandler @AssistedInject constructor(
|
|||
|
||||
val option = (availability as? StakingAvailability.Available)?.option
|
||||
if (option == null) {
|
||||
Timber.e("Staking is unavailable for ${cryptoCurrency.name}")
|
||||
TangemLogger.e("Staking is unavailable for ${cryptoCurrency.name}")
|
||||
return@launch
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ import kotlinx.collections.immutable.toImmutableList
|
|||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
import javax.inject.Inject
|
||||
|
|
@ -835,7 +835,7 @@ internal class StakingModel @Inject constructor(
|
|||
userWalletId = userWalletId,
|
||||
).fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvent.TransactionError(
|
||||
errorCode = "CreateApprovalTxError",
|
||||
|
|
@ -864,7 +864,7 @@ internal class StakingModel @Inject constructor(
|
|||
network = tokenCryptoCurrency.network,
|
||||
).fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvent.TransactionError(
|
||||
errorCode = error.getAnalyticsDescription(),
|
||||
|
|
@ -1438,7 +1438,7 @@ internal class StakingModel @Inject constructor(
|
|||
userWalletId = userWalletId,
|
||||
network = cryptoCurrencyStatus.currency.network,
|
||||
).getOrElse { throwable ->
|
||||
Timber.e(throwable)
|
||||
TangemLogger.e("Error", throwable)
|
||||
false
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ import dagger.assisted.AssistedInject
|
|||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -286,7 +286,7 @@ internal class StakeKitTransactionSender @AssistedInject constructor(
|
|||
transactionHash = transactionHash,
|
||||
)
|
||||
}.onRight {
|
||||
Timber.d("Successful hash submission")
|
||||
TangemLogger.d("Successful hash submission")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ dependencies {
|
|||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.res)
|
||||
implementation(projects.core.ui)
|
||||
implementation(projects.core.utils)
|
||||
implementation(projects.core.analytics)
|
||||
|
||||
/** AndroidX */
|
||||
|
|
@ -37,10 +38,9 @@ dependencies {
|
|||
implementation(deps.compose.ui.tooling)
|
||||
|
||||
/** Others */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.compose.coil)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.compose.coil)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
|
||||
/** DI */
|
||||
implementation(deps.hilt.android)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
|||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class StoriesModel @Inject constructor(
|
||||
|
|
@ -52,7 +52,7 @@ internal class StoriesModel @Inject constructor(
|
|||
modelScope.launch {
|
||||
getStoryContentUseCase.invokeSync(params.storyId).fold(
|
||||
ifLeft = {
|
||||
Timber.e("Unable to load stories for ${params.storyId}")
|
||||
TangemLogger.e("Unable to load stories for ${params.storyId}")
|
||||
openScreen(hideStories = false)
|
||||
},
|
||||
ifRight = { story ->
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ dependencies {
|
|||
implementation(projects.core.configToggles)
|
||||
implementation(projects.core.datasource)
|
||||
implementation(projects.core.analytics)
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/** Common */
|
||||
implementation(projects.common.ui)
|
||||
|
|
@ -85,7 +86,6 @@ dependencies {
|
|||
implementation(deps.arrow.core)
|
||||
implementation(deps.decompose)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.coil)
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ import kotlinx.coroutines.async
|
|||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
|
@ -558,7 +558,7 @@ internal class SwapAmountModel @Inject constructor(
|
|||
startLoadingQuotesTask(isSilentReload = false)
|
||||
} else {
|
||||
@Suppress("NullableToStringCall")
|
||||
Timber.e(
|
||||
TangemLogger.e(
|
||||
"""
|
||||
Invalid cryptocurrencies status:
|
||||
| Primary -> $primaryStatus
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import kotlinx.coroutines.delay
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
|
|
@ -67,7 +67,7 @@ internal class SwapChooseTokenNetworkModel @Inject constructor(
|
|||
|
||||
private fun initContent() {
|
||||
val userWallet = getUserWalletUseCase(params.userWalletId).getOrElse { error ->
|
||||
Timber.e("Failed to get user wallet: $error")
|
||||
TangemLogger.e("Failed to get user wallet: $error")
|
||||
swapChooseTokenAlertFactory.getGenericErrorState(params.onDismiss)
|
||||
return
|
||||
}
|
||||
|
|
@ -77,7 +77,7 @@ internal class SwapChooseTokenNetworkModel @Inject constructor(
|
|||
token = params.token,
|
||||
userWalletId = params.userWalletId,
|
||||
).getOrElse {
|
||||
Timber.e("Failed to get crypto currency")
|
||||
TangemLogger.e("Failed to get crypto currency")
|
||||
swapChooseTokenAlertFactory.getGenericErrorState(params.onDismiss)
|
||||
return@launch
|
||||
}
|
||||
|
|
@ -88,7 +88,7 @@ internal class SwapChooseTokenNetworkModel @Inject constructor(
|
|||
filterProviderTypes = SEND_WITH_SWAP_PROVIDER_TYPES,
|
||||
swapTxType = SwapTxType.SendWithSwap,
|
||||
).getOrElse { error ->
|
||||
Timber.e(error.toString())
|
||||
TangemLogger.e(error.toString())
|
||||
uiState.update(
|
||||
SwapChooseErrorStateTransformer(
|
||||
tokenName = params.token.name,
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import com.tangem.features.swap.v2.impl.common.ConfirmData
|
|||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import java.math.RoundingMode
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ internal class SwapTransactionSender @AssistedInject constructor(
|
|||
ExpressProviderType.DEX_BRIDGE,
|
||||
ExpressProviderType.ONRAMP,
|
||||
-> {
|
||||
Timber.w("Provider $providerType is not supported in Send With Swap")
|
||||
TangemLogger.w("Provider $providerType is not supported in Send With Swap")
|
||||
onExpressError(ExpressError.UnknownError)
|
||||
}
|
||||
}
|
||||
|
|
@ -155,7 +155,7 @@ internal class SwapTransactionSender @AssistedInject constructor(
|
|||
userWalletId = userWallet.walletId,
|
||||
network = fromStatus.currency.network,
|
||||
).getOrElse { error ->
|
||||
Timber.e(error, "Failed to create swap CEX tx data")
|
||||
TangemLogger.e("Failed to create swap CEX tx data", error)
|
||||
onSendError(SendTransactionError.UnknownError(Exception(error)))
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import com.tangem.features.swap.v2.impl.sendviaswap.entity.SendWithSwapUM
|
|||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import javax.inject.Inject
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ internal class SendWithSwapModel @Inject constructor(
|
|||
getPrimaryCurrencyStatusUpdates(params.currency)
|
||||
},
|
||||
ifLeft = { error ->
|
||||
Timber.w(error.toString())
|
||||
TangemLogger.w(error.toString())
|
||||
swapAlertFactory.getGenericErrorState(
|
||||
expressError = ExpressError.UnknownError,
|
||||
onFailedTxEmailClick = {
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ dependencies {
|
|||
implementation(tangemDeps.blockchain)
|
||||
|
||||
/** Others */
|
||||
implementation(deps.timber)
|
||||
implementation(deps.jodatime)
|
||||
|
||||
/** DI */
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
|||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.supervisorScope
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.io.IOException
|
||||
import java.math.BigDecimal
|
||||
import java.util.UUID
|
||||
|
|
@ -253,7 +253,7 @@ internal class DefaultSwapRepository(
|
|||
)
|
||||
},
|
||||
catch = { exception ->
|
||||
Timber.e("getExchangeStatus error: $exception")
|
||||
TangemLogger.e("getExchangeStatus error: $exception")
|
||||
raise(UnknownError(exception.message))
|
||||
},
|
||||
)
|
||||
|
|
@ -404,7 +404,7 @@ internal class DefaultSwapRepository(
|
|||
return try {
|
||||
txDetailsMoshiAdapter.fromJson(txDetailsJson)
|
||||
} catch (e: IOException) {
|
||||
Timber.e(e, "error parsing txDetailsJson")
|
||||
TangemLogger.e("error parsing txDetailsJson", e)
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ dependencies {
|
|||
/** Other Libraries **/
|
||||
implementation(deps.kotlin.coroutines)
|
||||
implementation(deps.arrow.core)
|
||||
implementation(deps.timber)
|
||||
implementation(tangemDeps.blockchain)
|
||||
implementation(tangemDeps.card.core)
|
||||
implementation(deps.moshi)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ import dagger.assisted.Assisted
|
|||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import java.math.BigInteger
|
||||
import java.math.RoundingMode
|
||||
|
|
@ -290,7 +290,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
contractAddress = permissionOptions.forTokenContractAddress,
|
||||
spenderAddress = permissionOptions.spenderAddress,
|
||||
).getOrElse { error ->
|
||||
Timber.e(error, "Failed to create approveTransaction")
|
||||
TangemLogger.e("Failed to create approveTransaction", error)
|
||||
return SwapTransactionState.Error.UnknownError
|
||||
}
|
||||
|
||||
|
|
@ -321,7 +321,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
reduceBalanceBy: BigDecimal,
|
||||
txFeeSealedState: TxFeeSealedState,
|
||||
): Map<SwapProvider, SwapState> {
|
||||
Timber.i(
|
||||
TangemLogger.i(
|
||||
"""
|
||||
Find the best quote
|
||||
|- fromToken: $fromToken
|
||||
|
|
@ -702,7 +702,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
expressOperationType: ExpressOperationType,
|
||||
isTangemPayWithdrawal: Boolean,
|
||||
): SwapTransactionState {
|
||||
Timber.i(
|
||||
TangemLogger.i(
|
||||
"""
|
||||
Swap
|
||||
|- swapProvider: $swapProvider
|
||||
|
|
@ -795,7 +795,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
network = currencyToSendStatus.currency.network,
|
||||
txExtras = createDexTxExtras(dataToSign, currencyToSendStatus.currency.network, txFee.fee.getGasLimit()),
|
||||
).getOrElse { error ->
|
||||
Timber.e(error, "Failed to create swap dex tx data")
|
||||
TangemLogger.e("Failed to create swap dex tx data", error)
|
||||
return SwapTransactionState.Error.UnknownError
|
||||
}
|
||||
|
||||
|
|
@ -999,7 +999,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
userWalletId = userWalletId,
|
||||
network = currencyToSend.currency.network,
|
||||
).getOrElse { error ->
|
||||
Timber.e(error, "Failed to create swap CEX tx data")
|
||||
TangemLogger.e("Failed to create swap CEX tx data", error)
|
||||
return SwapTransactionState.Error.UnknownError
|
||||
}
|
||||
|
||||
|
|
@ -2065,7 +2065,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
userWallet = userWallet,
|
||||
).getOrNull() ?: error("unable to calculate fee")
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to get fee")
|
||||
TangemLogger.e("Failed to get fee", e)
|
||||
// it's impossible next steps without fee
|
||||
return createSwapErrorWith(
|
||||
fromToken = fromTokenStatus,
|
||||
|
|
@ -2491,7 +2491,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
|
||||
quotesRepository.getMultiQuoteSyncOrNull(currenciesIds = this@getQuotesOrEmpty).orEmpty()
|
||||
}.getOrElse { e ->
|
||||
Timber.e(e, "Failed to get quotes: ${e.message.orEmpty()}")
|
||||
TangemLogger.e("Failed to get quotes: ${e.message.orEmpty()}", e)
|
||||
emptySet()
|
||||
}
|
||||
}
|
||||
|
|
@ -2505,7 +2505,7 @@ internal class SwapInteractorImpl @AssistedInject constructor(
|
|||
return try {
|
||||
SolanaTransactionHelper.removeSignaturesPlaceholders(hash)
|
||||
} catch (e: Exception) {
|
||||
Timber.e("Failed to format the hash: ${e.message.orEmpty()}")
|
||||
TangemLogger.e("Failed to format the hash: ${e.message.orEmpty()}")
|
||||
hash
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,7 +94,6 @@ dependencies {
|
|||
implementation(deps.compose.accompanist.systemUiController)
|
||||
implementation(deps.kotlin.serialization)
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
implementation(deps.decompose.ext.compose)
|
||||
|
||||
/** Tangem libs */
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ import com.tangem.utils.coroutines.*
|
|||
import com.tangem.utils.isNullOrZero
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.*
|
||||
import timber.log.Timber
|
||||
import com.tangem.utils.logging.TangemLogger
|
||||
import java.math.BigDecimal
|
||||
import java.math.RoundingMode
|
||||
import java.text.DecimalFormat
|
||||
|
|
@ -555,7 +555,7 @@ internal class SwapModel @Inject constructor(
|
|||
|
||||
subscribeToCoinBalanceUpdatesIfNeeded()
|
||||
}.onFailure { error ->
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
|
||||
applyInitialTokenChoice(
|
||||
state = TokensDataStateExpress.EMPTY,
|
||||
|
|
@ -597,7 +597,7 @@ internal class SwapModel @Inject constructor(
|
|||
|
||||
swapRouter.back()
|
||||
}.onFailure { error ->
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -820,11 +820,11 @@ internal class SwapModel @Inject constructor(
|
|||
}
|
||||
} else {
|
||||
feeSelectorRepository.state.value = FeeSelectorUM.Error(GetFeeError.UnknownError, isHidden = true)
|
||||
Timber.e("Accidentally empty quotes list")
|
||||
TangemLogger.e("Accidentally empty quotes list")
|
||||
}
|
||||
},
|
||||
onError = { error ->
|
||||
Timber.e("Error when loading quotes: $error")
|
||||
TangemLogger.e("Error when loading quotes: $error")
|
||||
feeSelectorRepository.state.value = FeeSelectorUM.Error(GetFeeError.UnknownError, isHidden = true)
|
||||
uiState = stateBuilder.addNotification(uiState, null) { startLoadingQuotesFromLastState() }
|
||||
},
|
||||
|
|
@ -1031,7 +1031,7 @@ internal class SwapModel @Inject constructor(
|
|||
val provider = requireNotNull(dataState.selectedProvider) { "Selected provider is null" }
|
||||
val lastLoadedQuotesState = dataState.lastLoadedSwapStates[provider] as? SwapState.QuotesLoadedState
|
||||
if (lastLoadedQuotesState == null) {
|
||||
Timber.e("Last loaded quotes state is null")
|
||||
TangemLogger.e("Last loaded quotes state is null")
|
||||
return
|
||||
}
|
||||
val fromCurrency = requireNotNull(dataState.fromCryptoCurrency)
|
||||
|
|
@ -1075,7 +1075,7 @@ internal class SwapModel @Inject constructor(
|
|||
txHash = swapTransactionState.txHash,
|
||||
currency = fromCurrency.currency,
|
||||
).getOrElse {
|
||||
Timber.i("tx hash explore not supported")
|
||||
TangemLogger.i("tx hash explore not supported")
|
||||
""
|
||||
}
|
||||
|
||||
|
|
@ -1119,7 +1119,7 @@ internal class SwapModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
}.onFailure { error ->
|
||||
Timber.e(error)
|
||||
TangemLogger.e("Error", error)
|
||||
startLoadingQuotesFromLastState()
|
||||
showAlert()
|
||||
}
|
||||
|
|
@ -1214,7 +1214,7 @@ internal class SwapModel @Inject constructor(
|
|||
val feeForPermission = when (val fee = approveDataModel.fee) {
|
||||
TxFeeState.Empty -> {
|
||||
showAlert(resourceReference(R.string.swapping_fee_estimation_error_text))
|
||||
Timber.e("Fee should not be Empty")
|
||||
TangemLogger.e("Fee should not be Empty")
|
||||
return@launch
|
||||
}
|
||||
is TxFeeState.MultipleFeeState -> fee.priorityFee
|
||||
|
|
@ -1254,7 +1254,7 @@ internal class SwapModel @Inject constructor(
|
|||
}
|
||||
}.onFailure { showAlert() }
|
||||
}.onFailure { error ->
|
||||
Timber.e(error.message.orEmpty())
|
||||
TangemLogger.e(error.message.orEmpty())
|
||||
showAlert()
|
||||
}
|
||||
}
|
||||
|
|
@ -1436,14 +1436,14 @@ internal class SwapModel @Inject constructor(
|
|||
coin: CryptoCurrency.Coin,
|
||||
isFromCurrency: Boolean,
|
||||
) {
|
||||
Timber.d("Subscribe to ${coin.id} balance updates")
|
||||
TangemLogger.d("Subscribe to ${coin.id} balance updates")
|
||||
|
||||
getAccountCurrencyStatusUseCase(
|
||||
userWalletId = userWalletId,
|
||||
currency = coin,
|
||||
).distinctUntilChanged { old, new -> old.status.value.amount == new.status.value.amount } // Check only balance changes
|
||||
.onEach { (account, currencyStatus) ->
|
||||
Timber.d("${coin.id} balance is ${currencyStatus.value.amount ?: "null"}")
|
||||
TangemLogger.d("${coin.id} balance is ${currencyStatus.value.amount ?: "null"}")
|
||||
|
||||
if (isFromCurrency) {
|
||||
dataState = dataState.copy(
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ dependencies {
|
|||
implementation(projects.core.error)
|
||||
implementation(projects.core.navigation)
|
||||
implementation(projects.core.ui)
|
||||
implementation(projects.core.utils)
|
||||
|
||||
/** Common */
|
||||
implementation(projects.common.ui)
|
||||
|
|
@ -60,5 +61,4 @@ dependencies {
|
|||
|
||||
/** Other */
|
||||
implementation(deps.kotlin.immutable.collections)
|
||||
implementation(deps.timber)
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue