From a3a6f4304778bb00b1f52a62f0356840254c7dc4 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 11 Aug 2022 15:44:24 +0300 Subject: [PATCH 1/5] Updated on 2026-08-14 --- .../tap/NavBarInsetsFragmentLifecycleCallback.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt index 94177e8463..ddedbca8f6 100644 --- a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt +++ b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt @@ -19,10 +19,17 @@ class NavBarInsetsFragmentLifecycleCallback : FragmentLifecycleCallbacks() { ) { if (v is ComposeView) return ViewCompat.setOnApplyWindowInsetsListener(v) { view, windowInsets -> - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) - view.updatePadding( - bottom = insets.bottom, - ) + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars()) + if (view.fitsSystemWindows) { + view.updatePadding( + top = insets.top, + bottom = insets.bottom, + ) + } else { + view.updatePadding( + bottom = insets.bottom, + ) + } windowInsets } } From 0c8852a3740c13639e2b5d0066754426262c7ec7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 5 Aug 2022 13:23:02 +0300 Subject: [PATCH 2/5] Updated on 2026-08-14 --- .../java/com/tangem/tap/TapApplication.kt | 12 +++++++++-- .../tap/common/feedback/FeedbackManager.kt | 20 +++++++++++++++++++ .../tap/persistence/PreferencesStorage.kt | 7 ++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index adcd569b7f..0c69e5de88 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -122,11 +122,19 @@ class TapApplication : Application(), ImageLoaderFactory { ) val logWriter = TangemLogCollector( levels = logLevels, - messageFormatter = LogFormat.StairsFormatter() + messageFormatter = LogFormat.StairsFormatter(), ) Log.addLogger(logWriter) - store.dispatch(GlobalAction.SetFeedbackManager(FeedbackManager(infoHolder, logWriter))) + store.dispatch( + GlobalAction.SetFeedbackManager( + FeedbackManager( + infoHolder = infoHolder, + logCollector = logWriter, + preferencesStorage = preferencesStorage, + ), + ), + ) } private fun initAppsFlyer() { diff --git a/app/src/main/java/com/tangem/tap/common/feedback/FeedbackManager.kt b/app/src/main/java/com/tangem/tap/common/feedback/FeedbackManager.kt index c2bb70a931..ddd4e6ff6d 100644 --- a/app/src/main/java/com/tangem/tap/common/feedback/FeedbackManager.kt +++ b/app/src/main/java/com/tangem/tap/common/feedback/FeedbackManager.kt @@ -1,12 +1,14 @@ package com.tangem.tap.common.feedback import android.content.Context +import android.os.Build import com.tangem.domain.common.TapWorkarounds import com.tangem.tap.common.extensions.sendEmail import com.tangem.tap.common.log.TangemLogCollector import com.tangem.tap.common.zendesk.ZendeskConfig import com.tangem.tap.foregroundActivityObserver import com.tangem.tap.logConfig +import com.tangem.tap.persistence.PreferencesStorage import com.tangem.tap.withForegroundActivity import com.tangem.wallet.R import com.zendesk.logger.Logger @@ -14,6 +16,8 @@ import timber.log.Timber import zendesk.chat.Chat import zendesk.chat.ChatConfiguration import zendesk.chat.ChatEngine +import zendesk.chat.ChatProvidersConfiguration +import zendesk.chat.VisitorInfo import zendesk.configurations.Configuration import zendesk.messaging.MessagingActivity import java.io.File @@ -26,6 +30,7 @@ import java.io.StringWriter class FeedbackManager( val infoHolder: AdditionalFeedbackInfo, private val logCollector: TangemLogCollector, + private val preferencesStorage: PreferencesStorage, ) { fun initChat( context: Context, @@ -58,6 +63,7 @@ class FeedbackManager( fun openChat(feedbackData: FeedbackData) { feedbackData.prepare(infoHolder) foregroundActivityObserver.withForegroundActivity { activity -> + setChatVisitorInfo() setChatVisitorNote(activity, feedbackData) showMessagingActivity(activity) } @@ -82,6 +88,20 @@ class FeedbackManager( } } + private fun setChatVisitorInfo() { + if (preferencesStorage.chatFirstLaunchTime == null) { + preferencesStorage.chatFirstLaunchTime = System.currentTimeMillis() + } + val chatUserId = (preferencesStorage.chatFirstLaunchTime.toString() + Build.MODEL).hashCode() + val visitorInfo = VisitorInfo.builder() + .withName("User $chatUserId") + .build() + + Chat.INSTANCE.chatProvidersConfiguration = ChatProvidersConfiguration.builder() + .withVisitorInfo(visitorInfo) + .build() + } + private fun setChatVisitorNote( context: Context, feedbackData: FeedbackData, diff --git a/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt b/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt index 15073fb931..aeab14497b 100644 --- a/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt +++ b/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt @@ -5,7 +5,7 @@ import android.content.Context import android.content.SharedPreferences import androidx.core.content.edit import com.tangem.common.json.MoshiJsonConverter -import java.util.Calendar +import java.util.* class PreferencesStorage(applicationContext: Application) { @@ -25,6 +25,10 @@ class PreferencesStorage(applicationContext: Application) { fiatCurrenciesPrefStorage.migrate() } + var chatFirstLaunchTime: Long? + get() = preferences.getLong(CHAT_FIRST_LAUNCH_KEY, 0).takeIf { it != 0L } + set(value) = preferences.edit { putLong(CHAT_FIRST_LAUNCH_KEY, value ?: 0) } + fun getCountOfLaunches(): Int = preferences.getInt(APP_LAUNCH_COUNT_KEY, 1) @Deprecated("Use UsedCardsPrefStorage instead") @@ -58,6 +62,7 @@ class PreferencesStorage(applicationContext: Application) { private const val DISCLAIMER_ACCEPTED_KEY = "disclaimerAccepted" private const val TWINS_ONBOARDING_SHOWN_KEY = "twinsOnboardingShown" private const val APP_LAUNCH_COUNT_KEY = "launchCount" + private const val CHAT_FIRST_LAUNCH_KEY = "chatFirstLaunchKey" } } From 138da32afccda6db347a732494239fa9c65e7cf6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Aug 2022 13:44:18 +0300 Subject: [PATCH 3/5] Updated on 2026-08-14 --- app/src/main/res/values-ru/strings_final.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings_final.xml b/app/src/main/res/values-ru/strings_final.xml index 415a83ca56..359b5c0488 100644 --- a/app/src/main/res/values-ru/strings_final.xml +++ b/app/src/main/res/values-ru/strings_final.xml @@ -100,7 +100,7 @@ Подключение к Dapps Добавить еще карты - Вы можете объеденить до трех карт в одним кошельке. Это можно сделать только один раз. + Вы можете объединить до трех карт в одном кошельке. Это можно сделать только один раз. Privacy policy From 8e4f8877f78f2a66151ab9d4d45f580b8921afdf Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Aug 2022 14:23:00 +0300 Subject: [PATCH 4/5] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt | 4 ++-- dependencies.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt b/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt index 72b7c51672..650ce5ea09 100644 --- a/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt @@ -7,7 +7,7 @@ import com.tangem.blockchain.common.TransactionData import com.tangem.blockchain.common.TransactionSender import com.tangem.blockchain.common.TransactionSigner import com.tangem.blockchain.common.WalletManager -import com.tangem.blockchain.common.toBlockchainCustomError +import com.tangem.blockchain.common.toBlockchainSdkError import com.tangem.blockchain.extensions.Result import com.tangem.blockchain.extensions.SimpleResult import com.tangem.common.CompletionResult @@ -484,7 +484,7 @@ class DemoTransactionSender( publicKey = walletManager.wallet.publicKey ) return when (signerResponse) { - is CompletionResult.Success -> SimpleResult.Failure(Exception(ID).toBlockchainCustomError()) + is CompletionResult.Success -> SimpleResult.Failure(Exception(ID).toBlockchainSdkError()) is CompletionResult.Failure -> SimpleResult.fromTangemSdkError(signerResponse.error) } } diff --git a/dependencies.gradle b/dependencies.gradle index 7097fccd86..3fdecfb84c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,7 +2,7 @@ ext.versions = [ kotlin : '1.6.10', build_gradle : '7.1.3', tangem_card_sdk : 'develop-159', - tangem_blockchain_sdk: 'develop-101', + tangem_blockchain_sdk: 'develop-103', // tangem_blockchain_sdk: '0.0.1', ] From 333bee7ef31d5e0da062fbba7ba86f498c875c13 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 15 Aug 2022 17:34:13 +0300 Subject: [PATCH 5/5] Updated on 2026-08-14 --- .../tap/NavBarInsetsFragmentLifecycleCallback.kt | 13 ++++++++----- .../main/res/layout/fragment_onboarding_main.xml | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt index ddedbca8f6..2239eacd70 100644 --- a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt +++ b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt @@ -18,19 +18,22 @@ class NavBarInsetsFragmentLifecycleCallback : FragmentLifecycleCallbacks() { savedInstanceState: Bundle?, ) { if (v is ComposeView) return + ViewCompat.setOnApplyWindowInsetsListener(v) { view, windowInsets -> - val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars()) + val statusBarInsets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars()) + val navigationBarInsets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) + if (view.fitsSystemWindows) { view.updatePadding( - top = insets.top, - bottom = insets.bottom, + top = statusBarInsets.top, + bottom = navigationBarInsets.bottom, ) } else { view.updatePadding( - bottom = insets.bottom, + bottom = navigationBarInsets.bottom, ) } windowInsets } } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_onboarding_main.xml b/app/src/main/res/layout/fragment_onboarding_main.xml index 82b94a5def..faa2c0c829 100644 --- a/app/src/main/res/layout/fragment_onboarding_main.xml +++ b/app/src/main/res/layout/fragment_onboarding_main.xml @@ -6,6 +6,7 @@ android:layout_height="match_parent" android:background="@color/backgroundWhite" android:clipChildren="false" + android:clipToPadding="false" android:fitsSystemWindows="true" android:orientation="vertical">