Updated on 2026-08-14
This commit is contained in:
parent
228c0c8af4
commit
82fa3edf45
18 changed files with 97 additions and 61 deletions
|
|
@ -1,20 +1,15 @@
|
|||
package com.tangem.common
|
||||
|
||||
import com.tangem.utils.SupportedLanguages
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
object TangemBlogUrlBuilder {
|
||||
|
||||
fun build(post: Post): String {
|
||||
val code = SupportedLanguages.getCurrentSupportedLanguageCode()
|
||||
.takeIf { code ->
|
||||
code == SupportedLanguages.RUSSIAN || code == SupportedLanguages.ENGLISH
|
||||
}
|
||||
?: SupportedLanguages.ENGLISH
|
||||
|
||||
return "https://tangem.com/$code/blog/post/${post.path}/"
|
||||
suspend fun build(post: Post): String {
|
||||
return TangemSiteUrlBuilder.url(
|
||||
path = "/blog/post/${post.path}/",
|
||||
campaign = "articles",
|
||||
)
|
||||
}
|
||||
|
||||
sealed interface Post {
|
||||
|
|
@ -28,5 +23,13 @@ object TangemBlogUrlBuilder {
|
|||
data object SeedNotifySecond : Post {
|
||||
override val path: String = "tangem-resolves-log-issue"
|
||||
}
|
||||
|
||||
data object SeedPhraseRiskySolution : Post {
|
||||
override val path: String = "seed-phrase-a-risky-solution"
|
||||
}
|
||||
|
||||
data object WhatWalletToChoose : Post {
|
||||
override val path: String = "mobile-wallet"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
package com.tangem.common
|
||||
|
||||
import android.content.res.Resources
|
||||
import com.google.firebase.analytics.ktx.analytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import java.util.Locale
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
object TangemSiteUrlBuilder {
|
||||
|
||||
suspend fun getUtmTags(campaign: String?): String {
|
||||
val langCode = Locale.getDefault().language
|
||||
val utmCampaignPart = campaign?.let { "&utm_campaign=$it-$langCode" }.orEmpty()
|
||||
val utmContent = deviceLang()?.let { "&utm_content=devicelang-$it" }.orEmpty()
|
||||
val appInstanceIdPart = getAppInstanceId()?.let { "&app_instance_id=$it" }.orEmpty()
|
||||
return "utm_source=tangem-app&utm_medium=app$utmCampaignPart$utmContent$appInstanceIdPart"
|
||||
}
|
||||
|
||||
suspend fun url(path: String, campaign: String): String {
|
||||
val normalizedPath = path.trim('/')
|
||||
return "https://tangem.com/$normalizedPath?${getUtmTags(campaign)}"
|
||||
}
|
||||
|
||||
private fun deviceLang(): String? {
|
||||
return runCatching {
|
||||
Resources.getSystem().configuration.locales.get(0).toLanguageTag()
|
||||
}.getOrNull()
|
||||
}
|
||||
|
||||
private suspend fun getAppInstanceId(): String? {
|
||||
return suspendCoroutine { cont ->
|
||||
Firebase.analytics.appInstanceId
|
||||
.addOnSuccessListener { id ->
|
||||
cont.resume(id)
|
||||
}
|
||||
.addOnFailureListener {
|
||||
cont.resume(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue