Loading data/build.gradle +1 −0 Original line number Original line Diff line number Diff line Loading @@ -82,6 +82,7 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutines_version" implementation 'com.android.installreferrer:installreferrer:1.1' implementation 'com.callcontrol:datashare:1.2.0' implementation 'com.callcontrol:datashare:1.2.0' implementation "com.f2prateek.rx.preferences2:rx-preferences:$rx_preferences_version" implementation "com.f2prateek.rx.preferences2:rx-preferences:$rx_preferences_version" implementation "com.jakewharton.timber:timber:$timber_version" implementation "com.jakewharton.timber:timber:$timber_version" Loading data/src/main/java/com/moez/QKSMS/manager/ReferralManagerImpl.kt 0 → 100644 +57 −0 Original line number Original line Diff line number Diff line package com.moez.QKSMS.manager import android.content.Context import com.android.installreferrer.api.InstallReferrerClient import com.android.installreferrer.api.InstallReferrerStateListener import com.moez.QKSMS.util.Preferences import kotlinx.coroutines.suspendCancellableCoroutine import javax.inject.Inject import kotlin.coroutines.resume class ReferralManagerImpl @Inject constructor( private val analytics: AnalyticsManager, private val context: Context, private val prefs: Preferences ) : ReferralManager { override suspend fun trackReferrer() { if (prefs.didSetReferrer.get()) { return } context.packageManager.getInstallerPackageName(context.packageName)?.let { installer -> analytics.setUserProperty("Installer", installer) } val referrerClient = InstallReferrerClient.newBuilder(context).build() val responseCode = suspendCancellableCoroutine<Int> { cont -> referrerClient.startConnection(object : InstallReferrerStateListener { override fun onInstallReferrerSetupFinished(responseCode: Int) { cont.resume(responseCode) } override fun onInstallReferrerServiceDisconnected() { cont.resume(InstallReferrerClient.InstallReferrerResponse.SERVICE_DISCONNECTED) } }) cont.invokeOnCancellation { referrerClient.endConnection() } } when (responseCode) { InstallReferrerClient.InstallReferrerResponse.OK -> { analytics.setUserProperty("Referrer", referrerClient.installReferrer.installReferrer) prefs.didSetReferrer.set(true) } InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> { prefs.didSetReferrer.set(true) } } referrerClient.endConnection() } } domain/src/main/java/com/moez/QKSMS/manager/ReferralManager.kt 0 → 100644 +7 −0 Original line number Original line Diff line number Diff line package com.moez.QKSMS.manager interface ReferralManager { suspend fun trackReferrer() } domain/src/main/java/com/moez/QKSMS/util/Preferences.kt +1 −0 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,7 @@ class Preferences @Inject constructor( } } // Internal // Internal val didSetReferrer = rxPrefs.getBoolean("didSetReferrer", false) val night = rxPrefs.getBoolean("night", false) val night = rxPrefs.getBoolean("night", false) val canUseSubId = rxPrefs.getBoolean("canUseSubId", true) val canUseSubId = rxPrefs.getBoolean("canUseSubId", true) val version = rxPrefs.getInteger("version", context.versionCode) val version = rxPrefs.getInteger("version", context.versionCode) Loading presentation/src/main/java/com/moez/QKSMS/common/QKApplication.kt +7 −2 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.moez.QKSMS.common.util.FileLoggingTree import com.moez.QKSMS.injection.AppComponentManager import com.moez.QKSMS.injection.AppComponentManager import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.manager.AnalyticsManager import com.moez.QKSMS.manager.AnalyticsManager import com.moez.QKSMS.manager.ReferralManager import com.moez.QKSMS.migration.QkMigration import com.moez.QKSMS.migration.QkMigration import com.moez.QKSMS.migration.QkRealmMigration import com.moez.QKSMS.migration.QkRealmMigration import com.moez.QKSMS.util.NightModeManager import com.moez.QKSMS.util.NightModeManager Loading @@ -43,6 +44,9 @@ import dagger.android.HasBroadcastReceiverInjector import dagger.android.HasServiceInjector import dagger.android.HasServiceInjector import io.realm.Realm import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmConfiguration import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import timber.log.Timber import timber.log.Timber import javax.inject.Inject import javax.inject.Inject Loading @@ -62,6 +66,7 @@ class QKApplication : Application(), HasActivityInjector, HasBroadcastReceiverIn @Inject lateinit var fileLoggingTree: FileLoggingTree @Inject lateinit var fileLoggingTree: FileLoggingTree @Inject lateinit var nightModeManager: NightModeManager @Inject lateinit var nightModeManager: NightModeManager @Inject lateinit var realmMigration: QkRealmMigration @Inject lateinit var realmMigration: QkRealmMigration @Inject lateinit var referralManager: ReferralManager override fun onCreate() { override fun onCreate() { super.onCreate() super.onCreate() Loading @@ -76,8 +81,8 @@ class QKApplication : Application(), HasActivityInjector, HasBroadcastReceiverIn .schemaVersion(QkRealmMigration.SchemaVersion) .schemaVersion(QkRealmMigration.SchemaVersion) .build()) .build()) packageManager.getInstallerPackageName(packageName)?.let { installer -> GlobalScope.launch(Dispatchers.IO) { analyticsManager.setUserProperty("Installer", installer) referralManager.trackReferrer() } } nightModeManager.updateCurrentTheme() nightModeManager.updateCurrentTheme() Loading Loading
data/build.gradle +1 −0 Original line number Original line Diff line number Diff line Loading @@ -82,6 +82,7 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutines_version" implementation 'com.android.installreferrer:installreferrer:1.1' implementation 'com.callcontrol:datashare:1.2.0' implementation 'com.callcontrol:datashare:1.2.0' implementation "com.f2prateek.rx.preferences2:rx-preferences:$rx_preferences_version" implementation "com.f2prateek.rx.preferences2:rx-preferences:$rx_preferences_version" implementation "com.jakewharton.timber:timber:$timber_version" implementation "com.jakewharton.timber:timber:$timber_version" Loading
data/src/main/java/com/moez/QKSMS/manager/ReferralManagerImpl.kt 0 → 100644 +57 −0 Original line number Original line Diff line number Diff line package com.moez.QKSMS.manager import android.content.Context import com.android.installreferrer.api.InstallReferrerClient import com.android.installreferrer.api.InstallReferrerStateListener import com.moez.QKSMS.util.Preferences import kotlinx.coroutines.suspendCancellableCoroutine import javax.inject.Inject import kotlin.coroutines.resume class ReferralManagerImpl @Inject constructor( private val analytics: AnalyticsManager, private val context: Context, private val prefs: Preferences ) : ReferralManager { override suspend fun trackReferrer() { if (prefs.didSetReferrer.get()) { return } context.packageManager.getInstallerPackageName(context.packageName)?.let { installer -> analytics.setUserProperty("Installer", installer) } val referrerClient = InstallReferrerClient.newBuilder(context).build() val responseCode = suspendCancellableCoroutine<Int> { cont -> referrerClient.startConnection(object : InstallReferrerStateListener { override fun onInstallReferrerSetupFinished(responseCode: Int) { cont.resume(responseCode) } override fun onInstallReferrerServiceDisconnected() { cont.resume(InstallReferrerClient.InstallReferrerResponse.SERVICE_DISCONNECTED) } }) cont.invokeOnCancellation { referrerClient.endConnection() } } when (responseCode) { InstallReferrerClient.InstallReferrerResponse.OK -> { analytics.setUserProperty("Referrer", referrerClient.installReferrer.installReferrer) prefs.didSetReferrer.set(true) } InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> { prefs.didSetReferrer.set(true) } } referrerClient.endConnection() } }
domain/src/main/java/com/moez/QKSMS/manager/ReferralManager.kt 0 → 100644 +7 −0 Original line number Original line Diff line number Diff line package com.moez.QKSMS.manager interface ReferralManager { suspend fun trackReferrer() }
domain/src/main/java/com/moez/QKSMS/util/Preferences.kt +1 −0 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,7 @@ class Preferences @Inject constructor( } } // Internal // Internal val didSetReferrer = rxPrefs.getBoolean("didSetReferrer", false) val night = rxPrefs.getBoolean("night", false) val night = rxPrefs.getBoolean("night", false) val canUseSubId = rxPrefs.getBoolean("canUseSubId", true) val canUseSubId = rxPrefs.getBoolean("canUseSubId", true) val version = rxPrefs.getInteger("version", context.versionCode) val version = rxPrefs.getInteger("version", context.versionCode) Loading
presentation/src/main/java/com/moez/QKSMS/common/QKApplication.kt +7 −2 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.moez.QKSMS.common.util.FileLoggingTree import com.moez.QKSMS.injection.AppComponentManager import com.moez.QKSMS.injection.AppComponentManager import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.manager.AnalyticsManager import com.moez.QKSMS.manager.AnalyticsManager import com.moez.QKSMS.manager.ReferralManager import com.moez.QKSMS.migration.QkMigration import com.moez.QKSMS.migration.QkMigration import com.moez.QKSMS.migration.QkRealmMigration import com.moez.QKSMS.migration.QkRealmMigration import com.moez.QKSMS.util.NightModeManager import com.moez.QKSMS.util.NightModeManager Loading @@ -43,6 +44,9 @@ import dagger.android.HasBroadcastReceiverInjector import dagger.android.HasServiceInjector import dagger.android.HasServiceInjector import io.realm.Realm import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmConfiguration import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import timber.log.Timber import timber.log.Timber import javax.inject.Inject import javax.inject.Inject Loading @@ -62,6 +66,7 @@ class QKApplication : Application(), HasActivityInjector, HasBroadcastReceiverIn @Inject lateinit var fileLoggingTree: FileLoggingTree @Inject lateinit var fileLoggingTree: FileLoggingTree @Inject lateinit var nightModeManager: NightModeManager @Inject lateinit var nightModeManager: NightModeManager @Inject lateinit var realmMigration: QkRealmMigration @Inject lateinit var realmMigration: QkRealmMigration @Inject lateinit var referralManager: ReferralManager override fun onCreate() { override fun onCreate() { super.onCreate() super.onCreate() Loading @@ -76,8 +81,8 @@ class QKApplication : Application(), HasActivityInjector, HasBroadcastReceiverIn .schemaVersion(QkRealmMigration.SchemaVersion) .schemaVersion(QkRealmMigration.SchemaVersion) .build()) .build()) packageManager.getInstallerPackageName(packageName)?.let { installer -> GlobalScope.launch(Dispatchers.IO) { analyticsManager.setUserProperty("Installer", installer) referralManager.trackReferrer() } } nightModeManager.updateCurrentTheme() nightModeManager.updateCurrentTheme() Loading