@@ -34,7 +34,8 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
34
34
private const val PERMISSION_TYPE = " NOTIFICATION"
35
35
private const val ANDROID_PERMISSION_STRING = " android.permission.POST_NOTIFICATIONS"
36
36
37
- private var callback: OneSignal .PromptForPushNotificationPermissionResponseHandler ? = null
37
+ private val callbacks:
38
+ MutableSet <OneSignal .PromptForPushNotificationPermissionResponseHandler > = HashSet ()
38
39
39
40
init {
40
41
PermissionsActivity .registerAsCallback(PERMISSION_TYPE , this )
@@ -49,18 +50,18 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
49
50
fallbackToSettings : Boolean ,
50
51
callback : OneSignal .PromptForPushNotificationPermissionResponseHandler ? ,
51
52
) {
52
- if (callback != null ) this . callback = callback
53
+ if (callback != null ) callbacks.add( callback)
53
54
54
55
if (notificationsEnabled()) {
55
- fireCallBack (true )
56
+ fireCallBacks (true )
56
57
return
57
58
}
58
59
59
60
if (! supportsNativePrompt) {
60
61
if (fallbackToSettings)
61
62
showFallbackAlertDialog()
62
63
else
63
- fireCallBack (false )
64
+ fireCallBacks (false )
64
65
return
65
66
}
66
67
@@ -74,7 +75,7 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
74
75
75
76
override fun onAccept () {
76
77
OneSignal .refreshNotificationPermissionState()
77
- fireCallBack (true )
78
+ fireCallBacks (true )
78
79
}
79
80
80
81
override fun onReject (fallbackToSettings : Boolean ) {
@@ -83,7 +84,7 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
83
84
showFallbackAlertDialog()
84
85
else
85
86
false
86
- if (! fallbackShown) fireCallBack (false )
87
+ if (! fallbackShown) fireCallBacks (false )
87
88
}
88
89
89
90
// Returns true if dialog was shown
@@ -98,21 +99,21 @@ object NotificationPermissionController : PermissionsActivity.PermissionCallback
98
99
NavigateToAndroidSettingsForNotifications .show(activity)
99
100
}
100
101
override fun onDecline () {
101
- fireCallBack (false )
102
+ fireCallBacks (false )
102
103
}
103
104
}
104
105
)
105
106
return true
106
107
}
107
108
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()
112
113
}
113
114
114
115
fun onAppForegrounded () {
115
- fireCallBack (notificationsEnabled())
116
+ fireCallBacks (notificationsEnabled())
116
117
}
117
118
118
119
private fun notificationsEnabled () = OSUtils .areNotificationsEnabled(OneSignal .appContext)
0 commit comments