diff --git a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt
index 94177e8463..2239eacd70 100644
--- a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt
+++ b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt
@@ -18,12 +18,22 @@ class NavBarInsetsFragmentLifecycleCallback : FragmentLifecycleCallbacks() {
savedInstanceState: Bundle?,
) {
if (v is ComposeView) return
+
ViewCompat.setOnApplyWindowInsetsListener(v) { view, windowInsets ->
- val insets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars())
- view.updatePadding(
- bottom = insets.bottom,
- )
+ val statusBarInsets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
+ val navigationBarInsets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars())
+
+ if (view.fitsSystemWindows) {
+ view.updatePadding(
+ top = statusBarInsets.top,
+ bottom = navigationBarInsets.bottom,
+ )
+ } else {
+ view.updatePadding(
+ bottom = navigationBarInsets.bottom,
+ )
+ }
windowInsets
}
}
-}
\ No newline at end of file
+}
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/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/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"
}
}
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">
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
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',
]