Skip to content

Commit 88c402e

Browse files
authored
Fix Leanplum.hasStarted to be true when device is offline (#439)
1 parent 95f7298 commit 88c402e

File tree

2 files changed

+40
-44
lines changed

2 files changed

+40
-44
lines changed

AndroidSDKCore/src/main/java/com/leanplum/internal/RequestSender.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ private void sendSync(@NonNull Request request) {
228228

229229
if (Constants.isDevelopmentModeEnabled || RequestType.IMMEDIATE.equals(request.getType())) {
230230
try {
231-
if (validateConfig()) {
231+
if (validateConfig(request)) {
232232
sendRequests();
233233
}
234234
} catch (Throwable t) {
@@ -237,7 +237,7 @@ private void sendSync(@NonNull Request request) {
237237
}
238238
}
239239

240-
private boolean validateConfig() {
240+
private boolean validateConfig(@NonNull Request request) {
241241
if (APIConfig.getInstance().appId() == null) {
242242
Log.e("Cannot send request. appId is not set.");
243243
return false;
@@ -250,6 +250,9 @@ private boolean validateConfig() {
250250

251251
if (!Util.isConnected()) {
252252
Log.d("Device is offline, will try sending requests again later.");
253+
if (request.error != null) {
254+
request.error.error(new Exception("Leanplum: device is offline"));
255+
}
253256
return false;
254257
}
255258

AndroidSDKTests/src/test/java/com/leanplum/LeanplumTest.java

Lines changed: 35 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,48 +1654,41 @@ public void variablesChanged() {
16541654
assertEquals(4, VarCache.variants().size());
16551655
}
16561656

1657-
// TODO: Currently hasStarted flag is not set if network is down.
1658-
// This must be discussed and fixed as well.
1659-
//
1660-
// @Test
1661-
// public void testStartChangeCallBackForOffline() throws Exception {
1662-
// final Semaphore semaphore = new Semaphore(1);
1663-
// semaphore.acquire();
1664-
//
1665-
// //Offline Mode.
1666-
// ResponseHelper.seedResponseNull();
1667-
//
1668-
// // Expected request params.
1669-
// final HashMap<String, Object> expectedRequestParams = CollectionUtil.newHashMap(
1670-
// "city", "(detect)",
1671-
// "country", "(detect)",
1672-
// "location", "(detect)",
1673-
// "region", "(detect)",
1674-
// "locale", "en_US"
1675-
// );
1676-
//
1677-
// // Validate request.
1678-
// // Validate request.
1679-
// RequestHelper.addRequestHandler(new RequestHelper.RequestHandler() {
1680-
// @Override
1681-
// public void onRequest(String httpMethod, String apiMethod, Map<String, Object> params) {
1682-
// assertEquals(RequestBuilder.ACTION_START, apiMethod);
1683-
// assertTrue(params.keySet().containsAll(expectedRequestParams.keySet()));
1684-
// assertTrue(params.values().containsAll(expectedRequestParams.values()));
1685-
// }
1686-
// });
1687-
//
1688-
//
1689-
// Leanplum.start(mContext, new StartCallback() {
1690-
// @Override
1691-
// public void onResponse(boolean success) {
1692-
// assertTrue(success);
1693-
// semaphore.release();
1694-
// }
1695-
// });
1696-
// assertTrue(Leanplum.hasStarted());
1697-
//
1698-
// }
1657+
@Test
1658+
public void testStartChangeCallBackForOffline() throws Exception {
1659+
//Offline Mode.
1660+
ResponseHelper.seedResponseNull();
1661+
1662+
// Expected request params.
1663+
final HashMap<String, Object> expectedRequestParams = CollectionUtil.newHashMap(
1664+
"city", "(detect)",
1665+
"country", "(detect)",
1666+
"location", "(detect)",
1667+
"region", "(detect)",
1668+
"locale", "en_US"
1669+
);
1670+
1671+
// Validate request.
1672+
// Validate request.
1673+
RequestHelper.addRequestHandler(new RequestHelper.RequestHandler() {
1674+
@Override
1675+
public void onRequest(String httpMethod, String apiMethod, Map<String, Object> params) {
1676+
assertEquals(RequestBuilder.ACTION_START, apiMethod);
1677+
assertTrue(params.keySet().containsAll(expectedRequestParams.keySet()));
1678+
assertTrue(params.values().containsAll(expectedRequestParams.values()));
1679+
}
1680+
});
1681+
1682+
1683+
Leanplum.start(mContext, new StartCallback() {
1684+
@Override
1685+
public void onResponse(boolean success) {
1686+
assertFalse(success); // in offline mode the success flag is false and isStarted is true
1687+
}
1688+
});
1689+
assertTrue(Leanplum.hasStarted());
1690+
1691+
}
16991692

17001693
@Test
17011694
public void testVariableChangeCallBacksForOffline() throws Exception {

0 commit comments

Comments
 (0)