Skip to content

Commit 38e45c9

Browse files
committed
Added QueueItEngineOptions to help with config
1 parent f47563f commit 38e45c9

File tree

9 files changed

+122
-14
lines changed

9 files changed

+122
-14
lines changed

README.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ This whitepaper contains the needed information to perform a successful integrat
1616
Using Gradle:
1717

1818
```gradle
19-
implementation 'com.queue-it.androidsdk:library:2.0.33'
19+
implementation 'com.queue-it.androidsdk:library:2.0.34'
2020
//For AndroidX
21-
//implementation 'com.queue-it.androidsdk:library-androidx:2.0.33'
21+
//implementation 'com.queue-it.androidsdk:library-androidx:2.0.34'
2222
```
2323

2424
## Usage
2525

26-
Invoke QueueITEngine as per example below. Parameters `layoutName` and `language` are optional.
26+
Invoke QueueITEngine as per example below. Parameters `layoutName`, `language` and `options` are optional.
2727

2828
```java
2929
QueueITEngine engine = new QueueITEngine(YourActivity.this, customerId, eventIdOrAlias, layoutName, language,
@@ -89,6 +89,15 @@ When the user clicks back, the same check needs to be done.
8989

9090
If your application is using an API that's protected by a Queue-it connector (KnownUser) you can check out [this documentation](https://github.com/queueit/android-webui-sdk/blob/master/documentation/protected_apis.md).
9191

92+
### QueueITEngine options
93+
94+
The QueueITEngine can be configured if you use the `options` argument in it's constructor. Here's an example.
95+
96+
```java
97+
QueueItEngineOptions options = new QueueItEngineOptions();
98+
// Use this if you want to disable the back button when the waiting room is shown
99+
options.setBackButtonDisabledFromWR(true);
100+
```
92101

93102
## Required permissions
94103

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ allprojects {
3737
groupId = 'com.queue-it.androidsdk'
3838
libraryName = 'com.queue_it.androidsdk'
3939
libraryDescription = 'Android SDK to integrate with Queue-it'
40-
libraryVersion = "2.0.33"
40+
libraryVersion = "2.0.34"
4141
organization = "Queue-it"
4242
organizationUrl = "https://queue-it.com"
4343

demoapp/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,11 @@ android {
3333
dependencies {
3434
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
3535
//implementation project(path: ':library')
36-
library_androidxImplementation 'com.queue-it.androidsdk:library-androidx:2.0.33'
37-
libraryImplementation 'com.queue-it.androidsdk:library:2.0.33'
36+
//library_androidxImplementation 'com.queue-it.androidsdk:library-androidx:2.0.34'
37+
library_androidxImplementation project(path: ':library')
38+
//libraryImplementation 'com.queue-it.androidsdk:library:2.0.34'
39+
libraryImplementation project(path: ':library')
40+
3841
testImplementation 'junit:junit:4.13'
3942

4043
library_androidxImplementation 'androidx.appcompat:appcompat:1.2.0'

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void onClick(View v) {
7272
editor.commit();
7373

7474
Toast.makeText(getApplicationContext(), "Please wait for your turn.", Toast.LENGTH_SHORT).show();
75+
QueueItEngineOptions options = new QueueItEngineOptions();
7576

7677
QueueITEngine queueITEngine = new QueueITEngine(MainActivity.this, customerId, eventOrAliasId, layoutName, language, new QueueListener() {
7778
@Override
@@ -114,7 +115,7 @@ public void onWebViewClosed(){
114115
showResultActivity("WebView closed ", false);
115116
queue_button.setEnabled(true);
116117
}
117-
});
118+
}, options);
118119
try {
119120
queueITEngine.run(MainActivity.this, !enableCacheRadioButton.isChecked());
120121
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ protected void onCreate(Bundle savedInstanceState) {
1313
base.initialize(savedInstanceState);
1414
}
1515

16+
@Override
17+
public void onBackPressed() {
18+
if (base.getOptions().isBackButtonDisabledFromWR()) {
19+
return;
20+
}
21+
super.onBackPressed();
22+
}
23+
1624
@Override
1725
protected void onSaveInstanceState(Bundle outState) {
1826
super.onSaveInstanceState(outState);

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ protected void onCreate(Bundle savedInstanceState) {
1313
base.initialize(savedInstanceState);
1414
}
1515

16+
@Override
17+
public void onBackPressed() {
18+
if (base.getOptions().isBackButtonDisabledFromWR()) {
19+
return;
20+
}
21+
super.onBackPressed();
22+
}
23+
1624
@Override
1725
protected void onSaveInstanceState(Bundle outState) {
1826
super.onSaveInstanceState(outState);

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.annotation.SuppressLint;
44
import android.app.Activity;
5-
import android.content.Context;
65
import android.net.Uri;
76
import android.net.http.SslError;
87
import android.os.Build;
@@ -29,12 +28,18 @@ public class QueueActivityBase {
2928
private static WebView previousWebView;
3029
private IUriOverrider uriOverrider;
3130
private final IWaitingRoomStateBroadcaster broadcaster;
31+
private QueueItEngineOptions options;
3232

3333
public QueueActivityBase(Activity context) {
3434
_context = context;
35+
options = QueueItEngineOptions.getDefault();
3536
broadcaster = new WaitingRoomStateBroadcaster(_context);
3637
}
3738

39+
public QueueItEngineOptions getOptions(){
40+
return options;
41+
}
42+
3843
WebViewClient webviewClient = new WebViewClient() {
3944

4045
@Override
@@ -107,7 +112,7 @@ private static void cleanupWebView() {
107112
public void initialize(Bundle savedInstanceState) {
108113
uriOverrider = new UriOverrider();
109114
_context.setContentView(R.layout.activity_queue);
110-
readActivityUrls(savedInstanceState);
115+
readActivityExtras(savedInstanceState);
111116
cleanupWebView();
112117
final ProgressBar progressBar = _context.findViewById(R.id.progressBar);
113118

@@ -147,7 +152,7 @@ public void destroy() {
147152
}
148153
}
149154

150-
private void readActivityUrls(Bundle savedInstanceState) {
155+
private void readActivityExtras(Bundle savedInstanceState) {
151156
if (savedInstanceState == null) {
152157
Bundle extras = _context.getIntent().getExtras();
153158
if (extras == null) {
@@ -157,6 +162,7 @@ private void readActivityUrls(Bundle savedInstanceState) {
157162
queueUrl = extras.getString("queueUrl");
158163
targetUrl = extras.getString("targetUrl");
159164
uriOverrider.setUserId(extras.getString("userId"));
165+
options = (QueueItEngineOptions)extras.getParcelable("options");
160166
}
161167
} else {
162168
queueUrl = (String) savedInstanceState.getSerializable("queueUrl");

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

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class QueueITEngine {
2323
private final String _language;
2424
private final QueueListener _queueListener;
2525
private final QueueCache _queueCache;
26+
private final QueueItEngineOptions _options;
2627
private Context _context;
2728
private final AtomicBoolean _requestInProgress;
2829
private boolean _isInQueue;
@@ -37,11 +38,28 @@ public class QueueITEngine {
3738
private int _isOnlineRetry = 0;
3839

3940
public QueueITEngine(Activity applicationContext, String customerId, String eventOrAliasId, QueueListener queueListener) {
40-
this(applicationContext, customerId, eventOrAliasId, "", "", queueListener);
41+
this(applicationContext, customerId, eventOrAliasId, "", "", queueListener, QueueItEngineOptions.getDefault());
4142
}
4243

43-
public QueueITEngine(Activity activityContext, String customerId, String eventOrAliasId, String layoutName,
44-
String language, QueueListener queueListener) {
44+
public QueueITEngine(Activity activityContext,
45+
String customerId,
46+
String eventOrAliasId,
47+
String layoutName,
48+
String language,
49+
QueueListener queueListener) {
50+
this(activityContext, customerId, eventOrAliasId, layoutName, language, queueListener, QueueItEngineOptions.getDefault());
51+
}
52+
53+
public QueueITEngine(Activity activityContext,
54+
String customerId,
55+
String eventOrAliasId,
56+
String layoutName,
57+
String language,
58+
QueueListener queueListener,
59+
QueueItEngineOptions options) {
60+
if (options == null) {
61+
options = QueueItEngineOptions.getDefault();
62+
}
4563
_requestInProgress = new AtomicBoolean(false);
4664
UserAgentManager.initialize(activityContext);
4765
if (TextUtils.isEmpty(customerId)) {
@@ -59,6 +77,7 @@ public QueueITEngine(Activity activityContext, String customerId, String eventOr
5977
_queueCache = new QueueCache(_context, customerId, eventOrAliasId);
6078
_deltaSec = INITIAL_WAIT_RETRY_SEC;
6179
_stateBroadcaster = new WaitingRoomStateBroadcaster(_context);
80+
_options = options;
6281
}
6382

6483
public void setViewDelay(int delayInterval) {
@@ -212,6 +231,7 @@ private void showQueue(String queueUrl, final String targetUrl) {
212231
intent.putExtra("queueUrl", queueUrl);
213232
intent.putExtra("targetUrl", targetUrl);
214233
intent.putExtra("userId", getUserId());
234+
intent.putExtra("options", _options);
215235
_context.startActivity(intent);
216236
}
217237

@@ -320,4 +340,4 @@ private void updateQueuePageUrl(String queueUrl) {
320340
public String getSdkVersion() {
321341
return "Android-" + BuildConfig.VERSION_NAME;
322342
}
323-
}
343+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.queue_it.androidsdk;
2+
3+
import android.os.Parcel;
4+
import android.os.Parcelable;
5+
6+
public class QueueItEngineOptions implements Parcelable {
7+
private boolean disableBackButtonFromWR;
8+
9+
public QueueItEngineOptions() {
10+
}
11+
12+
public QueueItEngineOptions(boolean disableBackButtonFromWR) {
13+
this.disableBackButtonFromWR = disableBackButtonFromWR;
14+
}
15+
16+
protected QueueItEngineOptions(Parcel in) {
17+
disableBackButtonFromWR = in.readInt() != 0;
18+
}
19+
20+
public static final Creator<QueueItEngineOptions> CREATOR = new Creator<QueueItEngineOptions>() {
21+
@Override
22+
public QueueItEngineOptions createFromParcel(Parcel in) {
23+
return new QueueItEngineOptions(in);
24+
}
25+
26+
@Override
27+
public QueueItEngineOptions[] newArray(int size) {
28+
return new QueueItEngineOptions[size];
29+
}
30+
};
31+
32+
public boolean isBackButtonDisabledFromWR() {
33+
return disableBackButtonFromWR;
34+
}
35+
36+
public void setBackButtonDisabledFromWR(boolean disableBackButtonFromWR) {
37+
this.disableBackButtonFromWR = disableBackButtonFromWR;
38+
}
39+
40+
public static QueueItEngineOptions getDefault() {
41+
return new QueueItEngineOptions(true);
42+
}
43+
44+
@Override
45+
public int describeContents() {
46+
return 0;
47+
}
48+
49+
@Override
50+
public void writeToParcel(Parcel dest, int flags) {
51+
dest.writeInt(this.disableBackButtonFromWR ? 1 : 0);
52+
}
53+
}

0 commit comments

Comments
 (0)