From 0c8852a3740c13639e2b5d0066754426262c7ec7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 5 Aug 2022 13:23:02 +0300 Subject: [PATCH] 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" } }