diff --git a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/NymVpn.kt b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/NymVpn.kt index 0cec2f137..d71a4892b 100644 --- a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/NymVpn.kt +++ b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/NymVpn.kt @@ -2,6 +2,7 @@ package net.nymtech.nymvpn import android.app.Application import android.content.Context +import android.os.Build import android.os.StrictMode import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner @@ -102,5 +103,15 @@ class NymVpn : Application() { private set val environment = Tunnel.Environment.from(BuildConfig.FLAVOR) + + fun getCPUArchitecture(): String { + return when (Build.SUPPORTED_ABIS.firstOrNull()) { + "arm64-v8a" -> "ARM64" + "armeabi-v7a" -> "ARM32" + "x86_64" -> "x86_64" + "x86" -> "x86" + else -> "Unknown" + } + } } } diff --git a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/module/AppModule.kt b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/module/AppModule.kt index 5672e10cd..aa98351ca 100644 --- a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/module/AppModule.kt +++ b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/module/AppModule.kt @@ -15,6 +15,7 @@ import kotlinx.coroutines.SupervisorJob import net.nymtech.logcatutil.LogCollect import net.nymtech.logcatutil.LogcatHelper import net.nymtech.nymvpn.BuildConfig +import net.nymtech.nymvpn.NymVpn import net.nymtech.nymvpn.data.GatewayRepository import net.nymtech.nymvpn.data.SettingsRepository import net.nymtech.nymvpn.manager.shortcut.DynamicShortcutManager @@ -34,6 +35,7 @@ import net.nymtech.nymvpn.service.notification.NotificationService import net.nymtech.nymvpn.service.notification.VpnAlertNotifications import net.nymtech.nymvpn.util.Constants import net.nymtech.nymvpn.util.FileUtils +import net.nymtech.nymvpn.util.extensions.isAndroidTV import net.nymtech.vpn.NymApi import net.nymtech.vpn.backend.Backend import net.nymtech.vpn.backend.NymBackend @@ -56,10 +58,16 @@ object AppModule { @Singleton @Provides - fun provideNymApi(@IoDispatcher dispatcher: CoroutineDispatcher): NymApi { + fun provideNymApi(@IoDispatcher dispatcher: CoroutineDispatcher, @ApplicationContext context: Context): NymApi { + val platform = if (context.isAndroidTV()) "AndroidTV" else "Android" return NymApi( dispatcher, - UserAgent(BuildConfig.APP_NAME, BuildConfig.VERSION_NAME, "android-sdk${Build.VERSION.SDK_INT}", BuildConfig.COMMIT_HASH), + UserAgent( + Constants.APP_PROJECT_NAME, + BuildConfig.VERSION_NAME, + "$platform; ${Build.VERSION.SDK_INT}; ${NymVpn.getCPUArchitecture()}; ${BuildConfig.FLAVOR}", + BuildConfig.COMMIT_HASH, + ), ) } diff --git a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/Constants.kt b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/Constants.kt index 84c3b0f55..567d7f827 100644 --- a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/Constants.kt +++ b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/Constants.kt @@ -2,6 +2,8 @@ package net.nymtech.nymvpn.util object Constants { + const val APP_PROJECT_NAME = "nym-vpn-android" + const val LANGUAGE_SWITCH_DELAY = 500L const val VPN_API_BASE_URL = "https://nymvpn.com/api/" const val SUBSCRIPTION_TIMEOUT = 5_000L diff --git a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/extensions/ContextExtensions.kt b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/extensions/ContextExtensions.kt index 7267cbf81..c987e2cdb 100644 --- a/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/extensions/ContextExtensions.kt +++ b/nym-vpn-android/app/src/main/java/net/nymtech/nymvpn/util/extensions/ContextExtensions.kt @@ -177,3 +177,7 @@ fun Context.launchAppSettings() { startActivity(intent) } } + +fun Context.isAndroidTV(): Boolean { + return packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) +}