@@ -34,7 +34,8 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
3434 private const val PERMISSION_TYPE = " NOTIFICATION"
3535 private const val ANDROID_PERMISSION_STRING = " android.permission.POST_NOTIFICATIONS"
3636
37- private var callback: OneSignal .PromptForPushNotificationPermissionResponseHandler ? = null
37+ private val callbacks:
38+ MutableSet <OneSignal .PromptForPushNotificationPermissionResponseHandler > = HashSet ()
3839
3940 init {
4041 PermissionsActivity .registerAsCallback(PERMISSION_TYPE , this )
@@ -49,18 +50,18 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
4950 fallbackToSettings : Boolean ,
5051 callback : OneSignal .PromptForPushNotificationPermissionResponseHandler ? ,
5152 ) {
52- if (callback != null ) this . callback = callback
53+ if (callback != null ) callbacks.add( callback)
5354
5455 if (notificationsEnabled()) {
55- fireCallBack (true )
56+ fireCallBacks (true )
5657 return
5758 }
5859
5960 if (! supportsNativePrompt) {
6061 if (fallbackToSettings)
6162 showFallbackAlertDialog()
6263 else
63- fireCallBack (false )
64+ fireCallBacks (false )
6465 return
6566 }
6667
@@ -74,7 +75,7 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
7475
7576 override fun onAccept () {
7677 OneSignal .refreshNotificationPermissionState()
77- fireCallBack (true )
78+ fireCallBacks (true )
7879 }
7980
8081 override fun onReject (fallbackToSettings : Boolean ) {
@@ -83,7 +84,7 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
8384 showFallbackAlertDialog()
8485 else
8586 false
86- if (! fallbackShown) fireCallBack (false )
87+ if (! fallbackShown) fireCallBacks (false )
8788 }
8889
8990 // Returns true if dialog was shown
@@ -98,21 +99,21 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
9899 NavigateToAndroidSettingsForNotifications .show(activity)
99100 }
100101 override fun onDecline () {
101- fireCallBack (false )
102+ fireCallBacks (false )
102103 }
103104 }
104105 )
105106 return true
106107 }
107108
108- // Fires callback and clears it to ensure it is only called once.
109- private fun fireCallBack (accepted : Boolean ) {
110- callback?. response(accepted)
111- callback = null
109+ // Fires callbacks and clears them to ensure each is only called once.
110+ private fun fireCallBacks (accepted : Boolean ) {
111+ callbacks.forEach { it. response(accepted) }
112+ callbacks.clear()
112113 }
113114
114115 fun onAppForegrounded () {
115- fireCallBack (notificationsEnabled())
116+ fireCallBacks (notificationsEnabled())
116117 }
117118
118119 private fun notificationsEnabled () = OSUtils .areNotificationsEnabled(OneSignal .appContext)
0 commit comments