@@ -22,125 +22,121 @@ import android.app.Application
2222import android.content.pm.PackageManager
2323import android.os.Build
2424import android.os.Bundle
25+ import android.util.Log
2526import android.view.View
2627import android.view.ViewGroup
2728import androidx.activity.ComponentActivity
2829import androidx.activity.result.ActivityResultLauncher
2930import androidx.activity.result.contract.ActivityResultContracts
3031import androidx.core.app.ActivityCompat
3132import androidx.core.content.ContextCompat
32- import io.getstream.log.taggedLogger
3333import kotlinx.coroutines.CoroutineScope
3434import kotlinx.coroutines.Dispatchers
3535import kotlinx.coroutines.launch
3636
3737internal class PushNotificationPermissionRequester private constructor() : ActivityLifecycleCallbacks() {
38- private val logger by taggedLogger( " Push:CurrentActivityProvider " )
38+ private val TAG = " PnPermissionRequester "
3939 private val pushNotificationPermissionCallbacks = mutableListOf<PushNotificationPermissionCallback >()
4040 private var currentActivity: Activity ? = null
4141 private val permissionContract = ActivityResultContracts .RequestPermission ()
4242 private val uiScope by lazy { CoroutineScope (Dispatchers .Main ) }
4343
4444 fun addCallback (callback : PushNotificationPermissionCallback ) {
45- logger.d { " [addCallback] callback: $callback " }
4645 pushNotificationPermissionCallbacks.add(callback)
4746 }
4847
4948 override fun onActivityCreated (
5049 activity : Activity ,
5150 bunlde : Bundle ?
5251 ) {
53- logger.v { " [onActivityCreated] activity: $activity " }
52+ Log .v( TAG , " [onActivityCreated] activity: $activity " )
5453 super .onActivityCreated(activity, bunlde)
5554 currentActivity = activity
5655 }
5756
5857 override fun onActivityStarted (activity : Activity ) {
59- logger.v { " [onActivityStarted] activity: $activity " }
58+ Log .v( TAG , " [onActivityStarted] activity: $activity " )
6059 currentActivity = activity
6160 activity.registerPermissionCallback()
6261 super .onActivityStarted(activity)
6362 }
6463
6564 override fun onActivityResumed (activity : Activity ) {
66- logger.v { " [onActivityResumed] activity: $activity " }
65+ Log .v( TAG , " [onActivityResumed] activity: $activity " )
6766 currentActivity = activity
6867 super .onActivityResumed(activity)
6968 }
7069
7170 override fun onActivityStopped (activity : Activity ) {
72- logger.v { " [onActivityStopped] activity: $activity " }
71+ Log .v( TAG , " [onActivityStopped] activity: $activity " )
7372 activity.unregisterPermissionCallback()
7473 super .onActivityStopped(activity)
7574 }
7675
7776 override fun onFirstActivityStarted (activity : Activity ) {
78- logger.i { " [onFirstActivityStarted] activity: $activity " }
77+ Log .i( TAG , " [onFirstActivityStarted] activity: $activity " )
7978 super .onFirstActivityStarted(activity)
8079 pushNotificationPermissionCallbacks.forEach { it.onAppLaunched() }
8180 }
8281
8382 override fun onLastActivityStopped (activity : Activity ) {
84- logger.i { " [onLastActivityStopped] activity: $activity " }
83+ Log .i( TAG , " [onLastActivityStopped] activity: $activity " )
8584 super .onLastActivityStopped(activity)
8685 currentActivity = null
8786 }
8887
8988 internal fun requestPermission () {
90- logger.d { " [requestPermission]" }
9189 uiScope.launch { currentActivity?.requestPermission() }
9290 }
9391
9492 internal fun onPermissionStatus (permissionStatus : NotificationPermissionStatus ) {
95- logger.d { " [onPermissionStatus] permissionStatus: $permissionStatus " }
93+ Log .v( TAG , " [onPermissionStatus] permissionStatus: $permissionStatus " )
9694 pushNotificationPermissionCallbacks.forEach { it.onPermissionStatusChanged(permissionStatus) }
9795 }
9896
9997 private fun Activity.registerPermissionCallback () {
10098 if (this !is ComponentActivity ) return
10199 if (Build .VERSION .SDK_INT < Build .VERSION_CODES .TIRAMISU ) return
102- logger.i { " [registerPermissionCallback] activity: ${this ::class .simpleName} " }
100+ Log .i( TAG , " [registerPermissionCallback] activity: ${this ::class .simpleName} " )
103101 val launcher =
104102 registerForActivityResult(permissionContract) { isGranted: Boolean ->
105- logger.v { " [registerPermissionCallback] completed: $isGranted " }
106103 when (isGranted) {
107104 true -> onPermissionStatus(NotificationPermissionStatus .GRANTED )
108105 else -> onPermissionStatus(NotificationPermissionStatus .DENIED )
109106 }
110107 }
111- logger.v { " [registerPermissionCallback] launcher: $launcher " }
108+ Log .v( TAG , " [registerPermissionCallback] launcher: $launcher " )
112109 putActivityResultLauncher(launcher)
113110 }
114111
115112 private fun Activity.unregisterPermissionCallback () {
116113 if (this !is ComponentActivity ) return
117- logger.i { " [unregisterPermissionCallback] activity: ${this ::class .simpleName} " }
114+ Log .i( TAG , " [unregisterPermissionCallback] activity: ${this ::class .simpleName} " )
118115 val launcher = getActivityResultLauncher()
119- logger.v { " [unregisterPermissionCallback] found launcher: $launcher " }
116+ Log .d( TAG , " [unregisterPermissionCallback] found launcher: $launcher " )
120117 launcher?.unregister()
121118 }
122119
123120 private fun Activity.requestPermission () {
124- logger.d { " [requestPermission] no args" }
125121 when {
126122 Build .VERSION .SDK_INT < Build .VERSION_CODES .TIRAMISU -> {
127- logger.w { " [requestPermission] not supported on this version" }
123+ Log .w( TAG , " [requestPermission] not supported on this version" )
128124 onPermissionStatus(NotificationPermissionStatus .GRANTED )
129125 }
130126 ContextCompat .checkSelfPermission(
131127 this ,
132128 Manifest .permission.POST_NOTIFICATIONS
133129 ) == PackageManager .PERMISSION_GRANTED -> {
134- logger.v { " [requestPermission] already granted" }
130+ Log .v( TAG , " [requestPermission] already granted" )
135131 onPermissionStatus(NotificationPermissionStatus .GRANTED )
136132 }
137133 ActivityCompat .shouldShowRequestPermissionRationale(this , Manifest .permission.POST_NOTIFICATIONS ) -> {
138- logger.i { " [requestPermission] rationale requested" }
134+ Log .i( TAG , " [requestPermission] rationale requested" )
139135 onPermissionStatus(NotificationPermissionStatus .RATIONALE_NEEDED )
140136 }
141137 else -> {
142138 val launcher = (this as ? ComponentActivity )?.getActivityResultLauncher()
143- logger.i { " [requestPermission] launcher: $launcher " }
139+ Log .i( TAG , " [requestPermission] launcher: $launcher " )
144140 launcher?.launch(Manifest .permission.POST_NOTIFICATIONS )
145141 onPermissionStatus(NotificationPermissionStatus .REQUESTED )
146142 }
0 commit comments