@@ -5,98 +5,35 @@ import com.facebook.react.bridge.*
55import com.facebook.react.modules.core.DeviceEventManagerModule
66import com.queue_it.androidsdk.*
77
8-
98enum class EnqueueResultState {
109 Passed , Disabled , Unavailable , RestartedSession
1110}
1211
13- class QueueItModule (reactContext : ReactApplicationContext )
14- : ReactContextBaseJavaModule (reactContext) {
12+ class QueueItModule (reactContext : ReactApplicationContext ) {
13+
14+ companion object {
15+ const val NAME = " QueueIt"
16+ }
1517
16- private val handler = Handler (reactContext.mainLooper)
17- private val context = reactContext
18+ public val handler = Handler (reactContext.mainLooper)
19+ public val context = reactContext
1820
19- override fun getName (): String {
20- return " QueueIt "
21+ fun getName (): String {
22+ return NAME
2123 }
2224
23- @ReactMethod
2425 fun enableTesting (value : Boolean ) {
2526 QueueService .IsTest = value
2627 }
2728
28- fun getQueueListener (promise : Promise ): QueueListener {
29- return object : QueueListener () {
30- override fun onUserExited () {
31- val params = Arguments .createMap()
32- sendEvent(context, " userExited" , params)
33- }
34-
35- override fun onQueuePassed (queuePassedInfo : QueuePassedInfo ? ) {
36- handler.post {
37- val params = Arguments .createMap()
38- val token = if (queuePassedInfo?.queueItToken != null ) queuePassedInfo.queueItToken else " "
39- params.putString(" queueittoken" , token)
40- params.putString(" state" , EnqueueResultState .Passed .name)
41- promise.resolve(params)
42- }
43- }
44-
45- override fun onQueueItUnavailable () {
46- handler.post {
47- val params = Arguments .createMap()
48- params.putNull(" queueittoken" )
49- params.putString(" state" , EnqueueResultState .Unavailable .name)
50- promise.resolve(params)
51- }
52- }
53-
54- override fun onQueueViewWillOpen () {
55- val params = Arguments .createMap()
56- sendEvent(context, " openingQueueView" , params)
57- }
58-
59- override fun onQueueDisabled (queueDisabledInfo : QueueDisabledInfo ? ) {
60- handler.post {
61- val params = Arguments .createMap()
62- val token = if (queueDisabledInfo?.queueItToken != null ) queueDisabledInfo.queueItToken else " "
63- params.putString(" queueittoken" , token)
64- params.putString(" state" , EnqueueResultState .Disabled .name)
65- promise.resolve(params)
66- }
67- }
68-
69- override fun onError (error : Error ? , errorMessage : String? ) {
70- handler.post {
71- promise.reject(" error" , errorMessage)
72- }
73- }
74-
75- override fun onSessionRestart (queueITEngine : QueueITEngine ? ) {
76- handler.post {
77- val params = Arguments .createMap()
78- params.putNull(" queueittoken" )
79- params.putString(" state" , EnqueueResultState .RestartedSession .name)
80- promise.resolve(params)
81- }
82- }
83-
84- override fun onWebViewClosed (){
85- val params = Arguments .createMap()
86- sendEvent(context, " webViewClosed" , params)
87- }
88- }
89- }
90-
91- @ReactMethod
92- fun runAsync (customerId : String , eventAlias : String , layoutName : String? , language : String? , promise : Promise ) {
29+ fun runAsync (customerId : String , eventAlias : String , layoutName : String? , language : String? , queueListener : QueueListener ? , promise : Promise ) {
9330 handler.post {
9431 if (context.currentActivity == null ) {
9532 promise.reject(" error" , " Calling QueueItRun with a null activity/context" )
9633 return @post
9734 }
9835 try {
99- val queueEngine = QueueITEngine (context.currentActivity, customerId, eventAlias, layoutName, language, getQueueListener(promise) )
36+ val queueEngine = QueueITEngine (context.currentActivity, customerId, eventAlias, layoutName, language, queueListener )
10037 queueEngine.run (context.currentActivity)
10138 } catch (e: Exception ) {
10239 promise.reject(" error" , e.message)
@@ -105,15 +42,14 @@ class QueueItModule(reactContext: ReactApplicationContext)
10542 }
10643 }
10744
108- @ReactMethod
109- fun runWithEnqueueTokenAsync (customerId : String , eventAlias : String , enqueueToken : String , layoutName : String? , language : String? , promise : Promise ) {
45+ fun runWithEnqueueTokenAsync (customerId : String , eventAlias : String , enqueueToken : String , layoutName : String? , language : String? , queueListener : QueueListener ? , promise : Promise ) {
11046 handler.post {
11147 if (context.currentActivity == null ) {
11248 promise.reject(" error" , " Calling QueueItRun with a null activity/context" )
11349 return @post
11450 }
11551 try {
116- val queueEngine = QueueITEngine (context.currentActivity, customerId, eventAlias, layoutName, language, getQueueListener(promise) )
52+ val queueEngine = QueueITEngine (context.currentActivity, customerId, eventAlias, layoutName, language, queueListener )
11753 queueEngine.runWithEnqueueToken(context.currentActivity, enqueueToken)
11854 } catch (e: Exception ) {
11955 promise.reject(" error" , e.message)
@@ -122,27 +58,19 @@ class QueueItModule(reactContext: ReactApplicationContext)
12258 }
12359 }
12460
125- @ReactMethod
126- fun runWithEnqueueKeyAsync (customerId : String , eventAlias : String , enqueueKey : String , layoutName : String? , language : String? , promise : Promise ) {
61+ fun runWithEnqueueKeyAsync (customerId : String , eventAlias : String , enqueueKey : String , layoutName : String? , language : String? , queueListener : QueueListener ? , promise : Promise ) {
12762 handler.post {
12863 if (context.currentActivity == null ) {
12964 promise.reject(" error" , " Calling QueueItRun with a null activity/context" )
13065 return @post
13166 }
13267 try {
133- val queueEngine = QueueITEngine (context.currentActivity, customerId, eventAlias, layoutName, language, getQueueListener(promise) )
68+ val queueEngine = QueueITEngine (context.currentActivity, customerId, eventAlias, layoutName, language, queueListener )
13469 queueEngine.runWithEnqueueKey(context.currentActivity, enqueueKey)
13570 } catch (e: Exception ) {
13671 promise.reject(" error" , e.message)
13772 return @post
13873 }
13974 }
14075 }
141-
142- private fun sendEvent (reactContext : ReactContext ,
143- eventName : String ,
144- params : WritableMap ) {
145- reactContext.getJSModule(DeviceEventManagerModule .RCTDeviceEventEmitter ::class .java)
146- .emit(eventName, params)
147- }
14876}
0 commit comments