Skip to content

Commit ead4b21

Browse files
committed
Added onWebViewClosed callback whenever a closing link is clicked
1 parent 96b1fb6 commit ead4b21

12 files changed

Lines changed: 473 additions & 314 deletions

File tree

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,22 @@ QueueITEngine engine = new QueueITEngine(YourActivity.this, customerId, eventOrA
5656
}
5757

5858
// This callback will be triggered when the mobile application can't reach Queue-it's servers.
59-
// It can be any one of these scenarioes:
59+
// It can be any one of these scenarios:
6060
// 1) Queue-it's servers can't be reached (connectivity issue).
6161
// 2) SSL connection error if custom queue domain is used having an invalid certificate.
6262
// 3) Client receives HTTP 4xx response.
6363
// In all these cases is most likely a misconfiguration of the queue settings:
6464
// Invalid customer ID, event alias ID or cname setting on queue (GO Queue-it portal -> event settings).
6565
@Override
66-
public void onError(Error error, String errorMessage) { } // Called on connectivity problems
66+
public void onError(Error error, String errorMessage) {
67+
} // Called on connectivity problems
68+
69+
// This callback will be triggered after a user clicks a close link in the layout and the WebView closes.
70+
// The close link is "queueit://close". Whenever the user navigates to this link, the SDK intercepts the navigation
71+
// and closes the WebView.
72+
@Override
73+
public void onWebViewClosed(){
74+
}
6775
});
6876

6977
try {

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ allprojects {
3333

3434
libraryName = 'com.queue_it.androidsdk'
3535
libraryDescription = 'Android SDK to integrate with Queue-it'
36-
libraryVersion = "2.0.26"
36+
libraryVersion = "2.0.27"
3737

3838
artifact = 'library'
3939
siteUrl = "https://github.com/${org}/android-webui-sdk"

demoapp/src/library_androidx/java/com/queue_it/shopdemo/MainActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ public void onError(Error error, String errorMessage) {
109109
queue_button.setEnabled(true);
110110
}
111111

112+
@Override
113+
public void onWebViewClosed(){
114+
showResultActivity("WebView closed ", false);
115+
queue_button.setEnabled(true);
116+
}
112117
});
113118
try {
114119
queueITEngine.run(MainActivity.this, !enableCacheRadioButton.isChecked());

library/src/library/java/com/queue_it/androidsdk/WaitingRoomStateBroadcaster.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,32 @@ public void registerReceivers(BroadcastReceiver onPassed,
1818
BroadcastReceiver onUrlChanged,
1919
BroadcastReceiver onActivityClosed,
2020
BroadcastReceiver onUserExited,
21-
BroadcastReceiver onError) {
21+
BroadcastReceiver onError,
22+
BroadcastReceiver onWebViewClosed) {
2223
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(_context);
2324

2425
localBroadcastManager.registerReceiver(onPassed, new IntentFilter("on-queue-passed"));
2526
localBroadcastManager.registerReceiver(onUrlChanged, new IntentFilter("on-changed-queue-url"));
2627
localBroadcastManager.registerReceiver(onActivityClosed, new IntentFilter("queue-activity-closed"));
2728
localBroadcastManager.registerReceiver(onUserExited, new IntentFilter("queue-user-exited"));
2829
localBroadcastManager.registerReceiver(onError, new IntentFilter("on-queue-error"));
30+
localBroadcastManager.registerReceiver(onWebViewClosed, new IntentFilter("on-webview-close"));
2931
}
3032

3133
public void unregisterReceivers(BroadcastReceiver onPassed,
3234
BroadcastReceiver onUrlChanged,
3335
BroadcastReceiver onActivityClosed,
3436
BroadcastReceiver onUserExited,
35-
BroadcastReceiver onError) {
37+
BroadcastReceiver onError,
38+
BroadcastReceiver onWebViewClosed) {
3639
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(_context);
3740

3841
localBroadcastManager.unregisterReceiver(onPassed);
3942
localBroadcastManager.unregisterReceiver(onUrlChanged);
4043
localBroadcastManager.unregisterReceiver(onActivityClosed);
4144
localBroadcastManager.unregisterReceiver(onUserExited);
4245
localBroadcastManager.unregisterReceiver(onError);
46+
localBroadcastManager.unregisterReceiver(onWebViewClosed);
4347
}
4448

4549
@Override
@@ -74,4 +78,10 @@ public void broadcastQueueError(String errorMessage) {
7478
intent.putExtra("error-message", errorMessage);
7579
LocalBroadcastManager.getInstance(_context).sendBroadcast(intent);
7680
}
81+
82+
@Override
83+
public void broadcastWebViewClosed() {
84+
Intent intent = new Intent("on-webview-close");
85+
LocalBroadcastManager.getInstance(_context).sendBroadcast(intent);
86+
}
7787
}

library/src/library_androidx/java/com/queue_it/androidsdk/WaitingRoomStateBroadcaster.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,32 @@ public void registerReceivers(BroadcastReceiver onPassed,
1919
BroadcastReceiver onUrlChanged,
2020
BroadcastReceiver onActivityClosed,
2121
BroadcastReceiver onUserExited,
22-
BroadcastReceiver onError) {
22+
BroadcastReceiver onError,
23+
BroadcastReceiver onWebViewClosed) {
2324
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(_context);
2425

2526
localBroadcastManager.registerReceiver(onPassed, new IntentFilter("on-queue-passed"));
2627
localBroadcastManager.registerReceiver(onUrlChanged, new IntentFilter("on-changed-queue-url"));
2728
localBroadcastManager.registerReceiver(onActivityClosed, new IntentFilter("queue-activity-closed"));
2829
localBroadcastManager.registerReceiver(onUserExited, new IntentFilter("queue-user-exited"));
2930
localBroadcastManager.registerReceiver(onError, new IntentFilter("on-queue-error"));
31+
localBroadcastManager.registerReceiver(onWebViewClosed, new IntentFilter("on-webview-close"));
3032
}
3133

3234
public void unregisterReceivers(BroadcastReceiver onPassed,
3335
BroadcastReceiver onUrlChanged,
3436
BroadcastReceiver onActivityClosed,
3537
BroadcastReceiver onUserExited,
36-
BroadcastReceiver onError) {
38+
BroadcastReceiver onError,
39+
BroadcastReceiver onWebViewClosed) {
3740
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(_context);
3841

3942
localBroadcastManager.unregisterReceiver(onPassed);
4043
localBroadcastManager.unregisterReceiver(onUrlChanged);
4144
localBroadcastManager.unregisterReceiver(onActivityClosed);
4245
localBroadcastManager.unregisterReceiver(onUserExited);
4346
localBroadcastManager.unregisterReceiver(onError);
47+
localBroadcastManager.unregisterReceiver(onWebViewClosed);
4448
}
4549

4650
@Override
@@ -75,4 +79,10 @@ public void broadcastQueueError(String errorMessage) {
7579
intent.putExtra("error-message", errorMessage);
7680
LocalBroadcastManager.getInstance(_context).sendBroadcast(intent);
7781
}
82+
83+
@Override
84+
public void broadcastWebViewClosed() {
85+
Intent intent = new Intent("on-webview-close");
86+
LocalBroadcastManager.getInstance(_context).sendBroadcast(intent);
87+
}
7888
}

library/src/main/java/com/queue_it/androidsdk/IWaitingRoomStateBroadcaster.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ public interface IWaitingRoomStateBroadcaster {
1313

1414
void broadcastQueueError(String errorMessage);
1515

16+
void broadcastWebViewClosed();
17+
1618
void registerReceivers(BroadcastReceiver queuePassedBroadcastReceiver,
1719
BroadcastReceiver queueUrlChangedBroadcastReceiver,
1820
BroadcastReceiver queueActivityClosedBroadcastReceiver,
1921
BroadcastReceiver queueUserExitedBroadcastReceiver,
20-
BroadcastReceiver queueErrorBroadcastReceiver);
22+
BroadcastReceiver queueErrorBroadcastReceiver,
23+
BroadcastReceiver webViewClosedBroadcastReceiver);
2124

2225
void unregisterReceivers(BroadcastReceiver queuePassedBroadcastReceiver,
2326
BroadcastReceiver queueUrlChangedBroadcastReceiver,
2427
BroadcastReceiver queueActivityClosedBroadcastReceiver,
2528
BroadcastReceiver queueUserExitedBroadcastReceiver,
26-
BroadcastReceiver queueErrorBroadcastReceiver);
29+
BroadcastReceiver queueErrorBroadcastReceiver,
30+
BroadcastReceiver webViewClosedBroadcastReceiver);
2731
}

library/src/main/java/com/queue_it/androidsdk/QueueActivityBase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ protected void onPassed(String queueItToken) {
8686
broadcaster.broadcastQueuePassed(queueItToken);
8787
disposeWebview(webview);
8888
}
89+
90+
@Override
91+
protected void onCloseClicked() {
92+
broadcaster.broadcastWebViewClosed();
93+
disposeWebview(webview);
94+
}
8995
});
9096
}
9197
};

library/src/main/java/com/queue_it/androidsdk/QueueITEngine.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,22 @@ public void onReceive(Context context, Intent intent) {
151151
}
152152
};
153153

154+
private BroadcastReceiver _webViewClosedBroadcastReceiver = new BroadcastReceiver() {
155+
@Override
156+
public void onReceive(Context context, Intent intent) {
157+
raiseWebViewClosed();
158+
}
159+
};
160+
154161
private BroadcastReceiver _queueActivityClosedBroadcastReceiver = new BroadcastReceiver() {
155162
@Override
156163
public void onReceive(Context context, Intent intent) {
157164
_stateBroadcaster.unregisterReceivers(_queuePassedBroadcastReceiver,
158165
_queueUrlChangedBroadcastReceiver,
159166
_queueActivityClosedBroadcastReceiver,
160167
_queueUserExitedBroadcastReceiver,
161-
_queueErrorBroadcastReceiver);
168+
_queueErrorBroadcastReceiver,
169+
_webViewClosedBroadcastReceiver);
162170
}
163171
};
164172

@@ -197,7 +205,8 @@ private void showQueue(String queueUrl, final String targetUrl) {
197205
_queueUrlChangedBroadcastReceiver,
198206
_queueActivityClosedBroadcastReceiver,
199207
_queueUserExitedBroadcastReceiver,
200-
_queueErrorBroadcastReceiver);
208+
_queueErrorBroadcastReceiver,
209+
_webViewClosedBroadcastReceiver);
201210

202211
Intent intent = new Intent(_context, QueueActivity.class);
203212
intent.putExtra("queueUrl", queueUrl);
@@ -227,6 +236,10 @@ private void raiseQueueDisabled() {
227236
_queueListener.onQueueDisabled();
228237
}
229238

239+
private void raiseWebViewClosed(){
240+
_queueListener.onWebViewClosed();
241+
}
242+
230243
private String getUserId() {
231244
return Settings.Secure.getString(_context.getContentResolver(), Settings.Secure.ANDROID_ID);
232245
}
Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.queue_it.androidsdk;
22

33

4-
public interface QueueListener {
5-
void onQueuePassed(QueuePassedInfo queuePassedInfo);
6-
void onQueueViewWillOpen();
7-
void onQueueDisabled();
8-
void onQueueItUnavailable();
9-
void onError(Error error, String errorMessage);
10-
void onUserExited();
4+
public abstract class QueueListener {
5+
protected abstract void onQueuePassed(QueuePassedInfo queuePassedInfo);
6+
protected abstract void onQueueViewWillOpen();
7+
protected abstract void onQueueDisabled();
8+
protected abstract void onQueueItUnavailable();
9+
protected abstract void onError(Error error, String errorMessage);
10+
protected void onWebViewClosed(){
11+
12+
}
13+
protected void onUserExited(){
14+
15+
}
1116
}

library/src/main/java/com/queue_it/androidsdk/UriOverrideWrapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
public abstract class UriOverrideWrapper{
44
protected abstract void onQueueUrlChange(String uri);
55
protected abstract void onPassed(String queueItToken);
6+
protected abstract void onCloseClicked();
67
}

0 commit comments

Comments
 (0)