From 2720e5588c45053f390b35538ace879ea4ea5314 Mon Sep 17 00:00:00 2001 From: Tangem Date: Sun, 17 Mar 2024 21:59:37 +0800 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/data/RuntimeUserWalletsStore.kt | 6 ++++++ .../datasource/local/userwallet/UserWalletsStore.kt | 2 ++ .../data/feedback/DefaultFeedbackRepository.kt | 12 ++++++++---- .../data/feedback/converters/CardInfoConverter.kt | 2 +- .../tangem/domain/feedback/FeedbackDataBuilder.kt | 8 +++++++- .../feedback/GetSupportFeedbackEmailUseCase.kt | 2 ++ .../com/tangem/domain/feedback/models/CardInfo.kt | 2 +- .../tangem/domain/feedback/models/UserWalletsInfo.kt | 6 ++++++ .../domain/feedback/repository/FeedbackRepository.kt | 7 +++---- 9 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 domain/feedback/src/main/java/com/tangem/domain/feedback/models/UserWalletsInfo.kt diff --git a/app/src/main/java/com/tangem/tap/data/RuntimeUserWalletsStore.kt b/app/src/main/java/com/tangem/tap/data/RuntimeUserWalletsStore.kt index 884fa65323..87b5944231 100644 --- a/app/src/main/java/com/tangem/tap/data/RuntimeUserWalletsStore.kt +++ b/app/src/main/java/com/tangem/tap/data/RuntimeUserWalletsStore.kt @@ -22,6 +22,12 @@ internal class RuntimeUserWalletsStore( ?.singleOrNull { it.walletId == key } } + override suspend fun getAllSyncOrNull(): List? { + return walletsStateHolder.userWalletsListManager + ?.userWallets + ?.firstOrNull() + } + override suspend fun update(userWalletId: UserWalletId, update: suspend (UserWallet) -> UserWallet) { walletsStateHolder.userWalletsListManager?.update(userWalletId, update) } diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/userwallet/UserWalletsStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/userwallet/UserWalletsStore.kt index f3b1c56267..bfee20e460 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/userwallet/UserWalletsStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/userwallet/UserWalletsStore.kt @@ -9,6 +9,8 @@ interface UserWalletsStore { suspend fun getSyncOrNull(key: UserWalletId): UserWallet? + suspend fun getAllSyncOrNull(): List? + @Throws suspend fun update(userWalletId: UserWalletId, update: suspend (UserWallet) -> UserWallet) } \ No newline at end of file diff --git a/data/feedback/src/main/java/com/tangem/data/feedback/DefaultFeedbackRepository.kt b/data/feedback/src/main/java/com/tangem/data/feedback/DefaultFeedbackRepository.kt index 6148da1827..9f6c1aa883 100644 --- a/data/feedback/src/main/java/com/tangem/data/feedback/DefaultFeedbackRepository.kt +++ b/data/feedback/src/main/java/com/tangem/data/feedback/DefaultFeedbackRepository.kt @@ -10,10 +10,7 @@ import com.tangem.datasource.local.preferences.PreferencesKeys import com.tangem.datasource.local.preferences.utils.getObjectMap import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.datasource.local.walletmanager.WalletManagersStore -import com.tangem.domain.feedback.models.AppLogModel -import com.tangem.domain.feedback.models.BlockchainInfo -import com.tangem.domain.feedback.models.CardInfo -import com.tangem.domain.feedback.models.PhoneInfo +import com.tangem.domain.feedback.models.* import com.tangem.domain.feedback.repository.FeedbackRepository import com.tangem.domain.wallets.models.UserWallet import timber.log.Timber @@ -38,6 +35,13 @@ internal class DefaultFeedbackRepository( private val context: Context, ) : FeedbackRepository { + override suspend fun getUserWalletsInfo(): UserWalletsInfo { + return UserWalletsInfo( + selectedUserWalletId = getSelectedUserWallet().walletId.stringValue, + totalUserWallets = userWalletsStore.getAllSyncOrNull()?.size ?: error("No user wallets found"), + ) + } + override suspend fun getCardInfo(): CardInfo { return CardInfoConverter.convert(value = getSelectedUserWallet()) } diff --git a/data/feedback/src/main/java/com/tangem/data/feedback/converters/CardInfoConverter.kt b/data/feedback/src/main/java/com/tangem/data/feedback/converters/CardInfoConverter.kt index e9a1a61019..7d16454467 100644 --- a/data/feedback/src/main/java/com/tangem/data/feedback/converters/CardInfoConverter.kt +++ b/data/feedback/src/main/java/com/tangem/data/feedback/converters/CardInfoConverter.kt @@ -15,13 +15,13 @@ internal object CardInfoConverter : Converter { override fun convert(value: UserWallet): CardInfo { return with(value.scanResponse) { CardInfo( - userWalletId = value.walletId.stringValue, cardId = card.cardId, firmwareVersion = card.firmwareVersion.stringValue, cardBlockchain = walletData?.blockchain, signedHashesList = card.wallets.map { CardInfo.SignedHashes(curve = it.curve.curve, total = it.totalSignedHashes?.toString()) }, + isImported = value.isImported, isStart2Coin = value.scanResponse.card.isStart2Coin, ) } diff --git a/domain/feedback/src/main/java/com/tangem/domain/feedback/FeedbackDataBuilder.kt b/domain/feedback/src/main/java/com/tangem/domain/feedback/FeedbackDataBuilder.kt index 35740e1357..5350902e33 100644 --- a/domain/feedback/src/main/java/com/tangem/domain/feedback/FeedbackDataBuilder.kt +++ b/domain/feedback/src/main/java/com/tangem/domain/feedback/FeedbackDataBuilder.kt @@ -3,6 +3,7 @@ package com.tangem.domain.feedback import com.tangem.domain.feedback.models.BlockchainInfo import com.tangem.domain.feedback.models.CardInfo import com.tangem.domain.feedback.models.PhoneInfo +import com.tangem.domain.feedback.models.UserWalletsInfo import com.tangem.domain.feedback.utils.breakLine import com.tangem.domain.feedback.models.BlockchainInfo.Addresses as BlockchainAddresses @@ -10,12 +11,17 @@ internal class FeedbackDataBuilder { private val builder = StringBuilder() + fun addUserWalletsInfo(userWalletsInfo: UserWalletsInfo) { + builder.appendKeyValue("User Wallet ID", userWalletsInfo.selectedUserWalletId) + builder.appendKeyValue("Total saved wallets", userWalletsInfo.totalUserWallets.toString()) + } + fun addCardInfo(cardInfo: CardInfo) { builder.appendKeyValue("Card ID", cardInfo.cardId) builder.appendKeyValue("Firmware version", cardInfo.firmwareVersion) + builder.appendKeyValue("Imported wallet", if (cardInfo.isImported) "yes" else "no") builder.appendKeyValue("Card Blockchain", cardInfo.cardBlockchain) builder.appendSignedHashes(cardInfo.signedHashesList) - builder.appendKeyValue("User Wallet ID", cardInfo.userWalletId) } fun addBlockchainInfoList(blockchainInfoList: List) { diff --git a/domain/feedback/src/main/java/com/tangem/domain/feedback/GetSupportFeedbackEmailUseCase.kt b/domain/feedback/src/main/java/com/tangem/domain/feedback/GetSupportFeedbackEmailUseCase.kt index 25db3a0ef6..6ab491c734 100644 --- a/domain/feedback/src/main/java/com/tangem/domain/feedback/GetSupportFeedbackEmailUseCase.kt +++ b/domain/feedback/src/main/java/com/tangem/domain/feedback/GetSupportFeedbackEmailUseCase.kt @@ -71,6 +71,8 @@ class GetSupportFeedbackEmailUseCase( skipLine() append( FeedbackDataBuilder().apply { + addUserWalletsInfo(userWalletsInfo = feedbackRepository.getUserWalletsInfo()) + addDelimiter() addCardInfo(cardInfo) addDelimiter() addBlockchainInfoList(blockchainInfoList = feedbackRepository.getBlockchainInfoList()) diff --git a/domain/feedback/src/main/java/com/tangem/domain/feedback/models/CardInfo.kt b/domain/feedback/src/main/java/com/tangem/domain/feedback/models/CardInfo.kt index 79eb5285c6..7ae84ac608 100644 --- a/domain/feedback/src/main/java/com/tangem/domain/feedback/models/CardInfo.kt +++ b/domain/feedback/src/main/java/com/tangem/domain/feedback/models/CardInfo.kt @@ -1,11 +1,11 @@ package com.tangem.domain.feedback.models data class CardInfo( - val userWalletId: String, val cardId: String, val firmwareVersion: String, val cardBlockchain: String?, val signedHashesList: List, + val isImported: Boolean, val isStart2Coin: Boolean, ) { diff --git a/domain/feedback/src/main/java/com/tangem/domain/feedback/models/UserWalletsInfo.kt b/domain/feedback/src/main/java/com/tangem/domain/feedback/models/UserWalletsInfo.kt new file mode 100644 index 0000000000..0438e80ae4 --- /dev/null +++ b/domain/feedback/src/main/java/com/tangem/domain/feedback/models/UserWalletsInfo.kt @@ -0,0 +1,6 @@ +package com.tangem.domain.feedback.models + +data class UserWalletsInfo( + val selectedUserWalletId: String, + val totalUserWallets: Int, +) \ No newline at end of file diff --git a/domain/feedback/src/main/java/com/tangem/domain/feedback/repository/FeedbackRepository.kt b/domain/feedback/src/main/java/com/tangem/domain/feedback/repository/FeedbackRepository.kt index 5e137df28a..58281067c1 100644 --- a/domain/feedback/src/main/java/com/tangem/domain/feedback/repository/FeedbackRepository.kt +++ b/domain/feedback/src/main/java/com/tangem/domain/feedback/repository/FeedbackRepository.kt @@ -1,13 +1,12 @@ package com.tangem.domain.feedback.repository -import com.tangem.domain.feedback.models.AppLogModel -import com.tangem.domain.feedback.models.BlockchainInfo -import com.tangem.domain.feedback.models.CardInfo -import com.tangem.domain.feedback.models.PhoneInfo +import com.tangem.domain.feedback.models.* import java.io.File interface FeedbackRepository { + suspend fun getUserWalletsInfo(): UserWalletsInfo + suspend fun getCardInfo(): CardInfo suspend fun getBlockchainInfoList(): List