Updated on 2026-08-14
This commit is contained in:
parent
96868cdf9d
commit
05113dc124
56 changed files with 624 additions and 516 deletions
|
|
@ -1,12 +1,11 @@
|
|||
package com.tangem.tap.common.analytics
|
||||
|
||||
import com.tangem.TangemSdkError
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.commands.common.card.Card
|
||||
import com.tangem.common.card.Card
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
|
||||
|
||||
interface AnalyticsHandler {
|
||||
fun triggerEvent(event: AnalyticsEvent, card: Card? = null, blockchain: Blockchain? = null)
|
||||
fun triggerEvent(event: AnalyticsEvent, card: Card? = null, blockchain: String? = null)
|
||||
fun logCardSdkError(
|
||||
error: TangemSdkError,
|
||||
actionToLog: FirebaseAnalyticsHandler.ActionToLog,
|
||||
|
|
|
|||
|
|
@ -5,13 +5,12 @@ import androidx.core.os.bundleOf
|
|||
import com.google.firebase.analytics.ktx.analytics
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import com.tangem.TangemSdkError
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.commands.common.card.Card
|
||||
import com.tangem.common.card.Card
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
import com.tangem.tap.common.extensions.filterNotNull
|
||||
|
||||
object FirebaseAnalyticsHandler : AnalyticsHandler {
|
||||
override fun triggerEvent(event: AnalyticsEvent, card: Card?, blockchain: Blockchain?) {
|
||||
override fun triggerEvent(event: AnalyticsEvent, card: Card?, blockchain: String?) {
|
||||
Firebase.analytics.logEvent(event.event, setData(card, blockchain))
|
||||
}
|
||||
|
||||
|
|
@ -47,18 +46,17 @@ object FirebaseAnalyticsHandler : AnalyticsHandler {
|
|||
|
||||
private fun getParamsFromCard(card: Card): Map<AnalyticsParam, String> {
|
||||
return mapOf(
|
||||
AnalyticsParam.FIRMWARE to card.firmwareVersion.version,
|
||||
AnalyticsParam.BATCH_ID to card.cardData?.batchId
|
||||
AnalyticsParam.FIRMWARE to card.firmwareVersion.stringValue,
|
||||
AnalyticsParam.BATCH_ID to card.batchId
|
||||
).filterNotNull()
|
||||
}
|
||||
|
||||
private fun setData(card: Card?, blockchain: Blockchain?): Bundle {
|
||||
private fun setData(card: Card?, blockchain: String?): Bundle {
|
||||
if (card == null) return bundleOf()
|
||||
return bundleOf(
|
||||
AnalyticsParam.BLOCKCHAIN.param to (blockchain?.currency
|
||||
?: card.cardData?.blockchainName),
|
||||
AnalyticsParam.BATCH_ID.param to card.cardData?.batchId,
|
||||
AnalyticsParam.FIRMWARE.param to card.firmwareVersion.version
|
||||
AnalyticsParam.BLOCKCHAIN.param to (blockchain),
|
||||
AnalyticsParam.BATCH_ID.param to card.batchId,
|
||||
AnalyticsParam.FIRMWARE.param to card.firmwareVersion.stringValue
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.tangem.tap.common.analytics
|
||||
|
||||
import com.tangem.TangemSdkError
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
|
||||
object TangemSdk {
|
||||
|
||||
|
|
@ -31,17 +31,15 @@ object TangemSdk {
|
|||
is TangemSdkError.WalletNotFound -> TangemSdkError.WalletNotFound()
|
||||
is TangemSdkError.AlreadyPersonalized -> TangemSdkError.AlreadyPersonalized()
|
||||
is TangemSdkError.CannotBeDepersonalized -> TangemSdkError.CannotBeDepersonalized()
|
||||
is TangemSdkError.Pin1Required -> TangemSdkError.Pin1Required()
|
||||
is TangemSdkError.AccessCodeRequired -> TangemSdkError.AccessCodeRequired()
|
||||
is TangemSdkError.CardReadWrongWallet -> TangemSdkError.CardReadWrongWallet()
|
||||
is TangemSdkError.CardWithMaxZeroWallets -> TangemSdkError.CardWithMaxZeroWallets()
|
||||
is TangemSdkError.AlreadyCreated -> TangemSdkError.AlreadyCreated()
|
||||
is TangemSdkError.WalletIndexExceedsMaxValue -> TangemSdkError.WalletIndexExceedsMaxValue()
|
||||
is TangemSdkError.MaxNumberOfWalletsCreated -> TangemSdkError.MaxNumberOfWalletsCreated()
|
||||
is TangemSdkError.WalletIndexNotCorrect -> TangemSdkError.WalletIndexNotCorrect()
|
||||
is TangemSdkError.PurgeWalletProhibited -> TangemSdkError.PurgeWalletProhibited()
|
||||
is TangemSdkError.Pin1CannotBeChanged -> TangemSdkError.Pin1CannotBeChanged()
|
||||
is TangemSdkError.Pin2CannotBeChanged -> TangemSdkError.Pin2CannotBeChanged()
|
||||
is TangemSdkError.Pin1CannotBeDefault -> TangemSdkError.Pin1CannotBeDefault()
|
||||
is TangemSdkError.AccessCodeCannotBeChanged -> TangemSdkError.AccessCodeCannotBeChanged()
|
||||
is TangemSdkError.PasscodeCannotBeChanged -> TangemSdkError.PasscodeCannotBeChanged()
|
||||
is TangemSdkError.AccessCodeCannotBeDefault -> TangemSdkError.AccessCodeCannotBeDefault()
|
||||
is TangemSdkError.NoRemainingSignatures -> TangemSdkError.NoRemainingSignatures()
|
||||
is TangemSdkError.EmptyHashes -> TangemSdkError.EmptyHashes()
|
||||
is TangemSdkError.HashSizeMustBeEqual -> TangemSdkError.HashSizeMustBeEqual()
|
||||
|
|
@ -52,7 +50,7 @@ object TangemSdk {
|
|||
is TangemSdkError.NotPersonalized -> TangemSdkError.NotPersonalized()
|
||||
is TangemSdkError.NotActivated -> TangemSdkError.NotActivated()
|
||||
is TangemSdkError.WalletIsPurged -> TangemSdkError.WalletIsPurged()
|
||||
is TangemSdkError.Pin2OrCvcRequired -> TangemSdkError.Pin2OrCvcRequired()
|
||||
is TangemSdkError.PasscodeRequired -> TangemSdkError.PasscodeRequired()
|
||||
is TangemSdkError.VerificationFailed -> TangemSdkError.VerificationFailed()
|
||||
is TangemSdkError.DataSizeTooLarge -> TangemSdkError.DataSizeTooLarge()
|
||||
is TangemSdkError.MissingCounter -> TangemSdkError.MissingCounter()
|
||||
|
|
@ -60,8 +58,8 @@ object TangemSdk {
|
|||
is TangemSdkError.DataCannotBeWritten -> TangemSdkError.DataCannotBeWritten()
|
||||
is TangemSdkError.MissingIssuerPubicKey -> TangemSdkError.MissingIssuerPubicKey()
|
||||
is TangemSdkError.CardVerificationFailed -> TangemSdkError.CardVerificationFailed()
|
||||
is TangemSdkError.WrongPin1 -> TangemSdkError.WrongPin1()
|
||||
is TangemSdkError.WrongPin2 -> TangemSdkError.WrongPin2()
|
||||
is TangemSdkError.WrongAccessCode -> TangemSdkError.WrongAccessCode()
|
||||
is TangemSdkError.WrongPasscode -> TangemSdkError.WrongPasscode()
|
||||
is TangemSdkError.UnknownError -> TangemSdkError.UnknownError()
|
||||
is TangemSdkError.UserCancelled -> TangemSdkError.UserCancelled()
|
||||
is TangemSdkError.Busy -> TangemSdkError.Busy()
|
||||
|
|
@ -69,8 +67,14 @@ object TangemSdk {
|
|||
is TangemSdkError.WrongCardNumber -> TangemSdkError.WrongCardNumber()
|
||||
is TangemSdkError.WrongCardType -> TangemSdkError.WrongCardType()
|
||||
is TangemSdkError.CardError -> TangemSdkError.CardError()
|
||||
is TangemSdkError.FirmwareNotSupported -> TangemSdkError.FirmwareNotSupported()
|
||||
is TangemSdkError.NotSupportedFirmwareVersion -> TangemSdkError.NotSupportedFirmwareVersion()
|
||||
is TangemSdkError.WalletError -> TangemSdkError.WalletError()
|
||||
is TangemSdkError.WalletCannotBeCreated -> TangemSdkError.WalletCannotBeCreated()
|
||||
is TangemSdkError.UnsupportedCurve -> TangemSdkError.UnsupportedCurve()
|
||||
is TangemSdkError.UnsupportedWalletConfig -> TangemSdkError.UnsupportedWalletConfig()
|
||||
is TangemSdkError.CryptoUtilsError -> TangemSdkError.CryptoUtilsError()
|
||||
is TangemSdkError.NetworkError -> TangemSdkError.NetworkError(error.customMessage)
|
||||
is TangemSdkError.ExceptionError -> TangemSdkError.ExceptionError(error.throwable)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ sealed class GlobalAction : Action {
|
|||
}
|
||||
|
||||
data class SaveScanNoteResponse(val scanNoteResponse: ScanNoteResponse) : GlobalAction()
|
||||
|
||||
data class SetIfCardVerifiedOnline(val verified: Boolean) : GlobalAction()
|
||||
|
||||
data class ChangeAppCurrency(val appCurrency: FiatCurrencyName) : GlobalAction()
|
||||
object RestoreAppCurrency : GlobalAction() {
|
||||
data class Success(val appCurrency: FiatCurrencyName) : GlobalAction()
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.tangem.tap.common.redux.global
|
||||
|
||||
import com.tangem.TangemSdkError
|
||||
import com.tangem.commands.common.network.Result
|
||||
import com.tangem.common.CompletionResult
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
import com.tangem.common.services.Result
|
||||
import com.tangem.tap.common.extensions.dispatchOnMain
|
||||
import com.tangem.tap.common.redux.AppState
|
||||
import com.tangem.tap.domain.configurable.warningMessage.WarningMessagesManager
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package com.tangem.tap.common.redux.global
|
||||
|
||||
import com.tangem.commands.wallet.WalletIndex
|
||||
import com.tangem.tap.common.redux.AppState
|
||||
import com.tangem.tap.features.details.redux.SecurityOption
|
||||
import org.rekotlin.Action
|
||||
|
||||
fun globalReducer(action: Action, state: AppState): GlobalState {
|
||||
|
|
@ -30,29 +28,11 @@ fun globalReducer(action: Action, state: AppState): GlobalState {
|
|||
globalState.copy(configManager = action.configManager)
|
||||
}
|
||||
is GlobalAction.SetWarningManager -> globalState.copy(warningManager = action.warningManager)
|
||||
is GlobalAction.UpdateSecurityOptions -> {
|
||||
val card = when (action.securityOption) {
|
||||
SecurityOption.LongTap -> globalState.scanNoteResponse?.card?.copy(
|
||||
isPin1Default = true, isPin2Default = true
|
||||
)
|
||||
SecurityOption.PassCode -> globalState.scanNoteResponse?.card?.copy(
|
||||
isPin1Default = true, isPin2Default = false
|
||||
)
|
||||
SecurityOption.AccessCode -> globalState.scanNoteResponse?.card?.copy(
|
||||
isPin1Default = false, isPin2Default = true
|
||||
)
|
||||
}
|
||||
if (card != null) {
|
||||
globalState.copy(scanNoteResponse = globalState.scanNoteResponse?.copy(card = card))
|
||||
} else {
|
||||
globalState
|
||||
}
|
||||
}
|
||||
is GlobalAction.UpdateWalletSignedHashes -> {
|
||||
val wallet = globalState.scanNoteResponse?.card
|
||||
?.wallet(WalletIndex.PublicKey(action.walletPublicKey))
|
||||
?.wallet(action.walletPublicKey)
|
||||
?.copy(
|
||||
signedHashes = action.walletSignedHashes,
|
||||
totalSignedHashes = action.walletSignedHashes,
|
||||
remainingSignatures = action.remainingSignatures
|
||||
)
|
||||
val card = globalState.scanNoteResponse?.card
|
||||
|
|
@ -76,6 +56,9 @@ fun globalReducer(action: Action, state: AppState): GlobalState {
|
|||
is GlobalAction.GetMoonPayUserStatus.Success -> {
|
||||
globalState.copy(moonPayUserStatus = action.moonPayUserStatus)
|
||||
}
|
||||
is GlobalAction.SetIfCardVerifiedOnline ->
|
||||
globalState.copy(cardVerifiedOnline = action.verified)
|
||||
|
||||
else -> globalState
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.tap.common.redux.global
|
||||
|
||||
import com.tangem.commands.common.network.TangemService
|
||||
import com.tangem.tap.common.entities.TapCurrency.Companion.DEFAULT_FIAT_CURRENCY
|
||||
import com.tangem.tap.domain.PayIdManager
|
||||
import com.tangem.tap.domain.TapWalletManager
|
||||
|
|
@ -14,10 +13,10 @@ import org.rekotlin.StateType
|
|||
|
||||
data class GlobalState(
|
||||
val scanNoteResponse: ScanNoteResponse? = null,
|
||||
val cardVerifiedOnline: Boolean = false,
|
||||
val tapWalletManager: TapWalletManager = TapWalletManager(),
|
||||
val payIdManager: PayIdManager = PayIdManager(),
|
||||
val coinMarketCapService: CoinMarketCapService = CoinMarketCapService(),
|
||||
val tangemService: TangemService = TangemService(),
|
||||
val configManager: ConfigManager? = null,
|
||||
val warningManager: WarningMessagesManager? = null,
|
||||
val feedbackManager: FeedbackManager? = null,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue