From 126d6a8954e3b933d6309b8020d4a6624df311be Mon Sep 17 00:00:00 2001 From: Sanjay P Date: Wed, 27 Mar 2024 22:48:24 +0530 Subject: [PATCH] TP-62123 | Added Background Event to Check Permissions (#10196) --- .../manager/RetryableUserDataUploadWorker.kt | 20 ++++++++++++++++++- .../main/java/com/naviapp/utils/Constants.kt | 4 ++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/naviapp/manager/RetryableUserDataUploadWorker.kt b/android/app/src/main/java/com/naviapp/manager/RetryableUserDataUploadWorker.kt index 45450c9906..fe557fcbfa 100644 --- a/android/app/src/main/java/com/naviapp/manager/RetryableUserDataUploadWorker.kt +++ b/android/app/src/main/java/com/naviapp/manager/RetryableUserDataUploadWorker.kt @@ -7,10 +7,13 @@ package com.naviapp.manager +import android.Manifest +import android.app.Activity import android.content.Context import androidx.work.CoroutineWorker import androidx.work.WorkerParameters import com.navi.base.utils.orElse +import com.navi.common.managers.PermissionsManager import com.navi.common.model.UploadDataAsyncResponse import com.navi.common.network.models.isSuccess import com.navi.common.useruploaddata.model.IngestionStatus @@ -26,17 +29,21 @@ import com.naviapp.manager.usecase.UserDataUploadWorkerUseCase import com.naviapp.models.request.PreSignedUrlRequest import com.naviapp.models.response.PreSignedUrlListResponse import com.naviapp.utils.Constants +import com.naviapp.utils.Constants.BACKGROUND_PERMISSION_CHECK import com.naviapp.utils.Constants.DEFAULT import com.naviapp.utils.Constants.FAILED +import com.naviapp.utils.Constants.HAS_COARSE_LOCATION_PERMISSION +import com.naviapp.utils.Constants.HAS_CONTACTS_PERMISSION +import com.naviapp.utils.Constants.HAS_SMS_PERMISSION import com.naviapp.utils.Constants.SOURCE import com.naviapp.utils.Constants.SUCCESS_CAPITAL import com.naviapp.utils.Constants.WORKER_TYPE import com.naviapp.utils.SmsUtil.extractTasks -import java.util.concurrent.atomic.AtomicBoolean import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.awaitAll import kotlinx.coroutines.launch +import java.util.concurrent.atomic.AtomicBoolean /** * The worker is responsible for uploading user data to server. Flows using the worker - @@ -53,6 +60,7 @@ class RetryableUserDataUploadWorker(val context: Context, workerParams: WorkerPa private var attemptToSendData = AtomicBoolean(true) private var failureResult: Result? = null private lateinit var userDataUploadWorkerConfig: UserDataUploadWorkerConfig + private val permissionsManager by lazy { PermissionsManager(context as Activity) } override suspend fun doWork(): Result { initData() @@ -76,6 +84,16 @@ class RetryableUserDataUploadWorker(val context: Context, workerParams: WorkerPa private fun sendEventTracker(eventName: String, data: Map? = null) { eventTracker.onEvent(eventName, data) + eventTracker.onEvent( + eventName = BACKGROUND_PERMISSION_CHECK, mapOf( + HAS_SMS_PERMISSION to permissionsManager.hasPermission(Manifest.permission.READ_SMS) + .toString(), + HAS_CONTACTS_PERMISSION to permissionsManager.hasPermission(Manifest.permission.READ_CONTACTS) + .toString(), + HAS_COARSE_LOCATION_PERMISSION to permissionsManager.hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION) + .toString() + ) + ) } private fun initEventTracker() { diff --git a/android/app/src/main/java/com/naviapp/utils/Constants.kt b/android/app/src/main/java/com/naviapp/utils/Constants.kt index 115bd726eb..88f738c5d6 100644 --- a/android/app/src/main/java/com/naviapp/utils/Constants.kt +++ b/android/app/src/main/java/com/naviapp/utils/Constants.kt @@ -455,6 +455,10 @@ object Constants { const val LAST_SESSION_ID = "last_session_id" const val FETCH_HOME_ITEMS = "fetchHomeItems" const val MIDDLE_ROW_VISIBLE_FALSE = "middleRowVisibleFalse" + const val HAS_SMS_PERMISSION = "hasSmsPermission" + const val HAS_CONTACTS_PERMISSION = "hasContactsPermission" + const val HAS_COARSE_LOCATION_PERMISSION = "hasCoarseLocationPermission" + const val BACKGROUND_PERMISSION_CHECK = "background_permission_check" object Notification { const val HIDE_NOTIFICATION_COUNT = "hideNotificationCount"