Panagiotis Triantafyllou

crash fixes

...@@ -1586,8 +1586,8 @@ public enum Warply { ...@@ -1586,8 +1586,8 @@ public enum Warply {
1586 } 1586 }
1587 } 1587 }
1588 1588
1589 - if (INSTANCE.mRequestQueue == null) 1589 + if (INSTANCE.mRequestQueue == null && INSTANCE.mContext != null)
1590 - INSTANCE.mRequestQueue = Volley.newRequestQueue(mContext); 1590 + INSTANCE.mRequestQueue = Volley.newRequestQueue(INSTANCE.mContext);
1591 1591
1592 if (tempAnalytics != null && tempAnalytics.length() > 0) { 1592 if (tempAnalytics != null && tempAnalytics.length() > 0) {
1593 String urlAnalytics = WarplyProperty.getBaseUrl(mContext) + WarpConstants.WARPLY_ASYNC + WarpConstants.WARPLY_ANALYTICS + WarplyProperty.getAppUuid(mContext) + "/"; 1593 String urlAnalytics = WarplyProperty.getBaseUrl(mContext) + WarpConstants.WARPLY_ASYNC + WarpConstants.WARPLY_ANALYTICS + WarplyProperty.getAppUuid(mContext) + "/";
......
...@@ -247,7 +247,7 @@ public class WarplyManagerHelper { ...@@ -247,7 +247,7 @@ public class WarplyManagerHelper {
247 /** 247 /**
248 * Handle sharing flow 248 * Handle sharing flow
249 */ 249 */
250 - public static void handleSharing(Context context, String sharingId) { 250 + public static void handleSharing(Activity context, String sharingId) {
251 WarpUtils.log("SHARING_ID: " + sharingId); 251 WarpUtils.log("SHARING_ID: " + sharingId);
252 WarplyManager.cosmoteSharing(new CosmoteSharingRequest().setSharingId(sharingId), new CallbackReceiver<JSONObject>() { 252 WarplyManager.cosmoteSharing(new CosmoteSharingRequest().setSharingId(sharingId), new CallbackReceiver<JSONObject>() {
253 @Override 253 @Override
...@@ -292,205 +292,223 @@ public class WarplyManagerHelper { ...@@ -292,205 +292,223 @@ public class WarplyManagerHelper {
292 /** 292 /**
293 * First dialog when we handle the deeplink 293 * First dialog when we handle the deeplink
294 */ 294 */
295 - private static void initialSharingDialog(Context context, String alertTitle, String sharingId, boolean isSupermarket) { 295 + private static void initialSharingDialog(Activity context, String alertTitle, String sharingId, boolean isSupermarket) {
296 - mAlertDialogSharing = new AlertDialog.Builder(context) 296 + if (!context.isFinishing()) {
297 - .setTitle(R.string.cos_dlg_success_title) 297 + mAlertDialogSharing = new AlertDialog.Builder(context)
298 - .setMessage(alertTitle) 298 + .setTitle(R.string.cos_dlg_success_title)
299 - .setNegativeButton(R.string.cos_dlg_negative_button, (dialogPositive, whichPositive) -> { 299 + .setMessage(alertTitle)
300 - rejectSharingDialog(context, sharingId); 300 + .setNegativeButton(R.string.cos_dlg_negative_button, (dialogPositive, whichPositive) -> {
301 - }) 301 + rejectSharingDialog(context, sharingId);
302 - .setPositiveButton(R.string.cos_dlg_positive_button, (dialogNegative, whichNegative) -> { 302 + })
303 - WarplyManager.cosmoteRetrieveSharing(new CosmoteRetrieveSharingRequest() 303 + .setPositiveButton(R.string.cos_dlg_positive_button, (dialogNegative, whichNegative) -> {
304 - .setSharingId(sharingId) 304 + WarplyManager.cosmoteRetrieveSharing(new CosmoteRetrieveSharingRequest()
305 - .setAccept(true), 305 + .setSharingId(sharingId)
306 - new CallbackReceiver<JSONObject>() { 306 + .setAccept(true),
307 - @Override 307 + new CallbackReceiver<JSONObject>() {
308 - public void onSuccess(JSONObject result) { 308 + @Override
309 - int status = result.optInt("status", 2); 309 + public void onSuccess(JSONObject result) {
310 - if (status == 1) { 310 + int status = result.optInt("status", 2);
311 - WarplyManager.getUserCouponsWithCouponsets(new CallbackReceiver<CouponList>() { 311 + if (status == 1) {
312 - @Override 312 + WarplyManager.getUserCouponsWithCouponsets(new CallbackReceiver<CouponList>() {
313 - public void onSuccess(CouponList result) { 313 + @Override
314 - WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); 314 + public void onSuccess(CouponList result) {
315 - couponsChanged.setChanged(true); 315 + WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel();
316 - EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); 316 + couponsChanged.setChanged(true);
317 - } 317 + EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged));
318 - 318 + }
319 - @Override 319 +
320 - public void onFailure(int errorCode) { 320 + @Override
321 - 321 + public void onFailure(int errorCode) {
322 - } 322 +
323 - }); 323 + }
324 - acceptSharingDialog(context, isSupermarket); 324 + });
325 - } else 325 + acceptSharingDialog(context, isSupermarket);
326 - errorSharingDialog(context); 326 + } else
327 - } 327 + errorSharingDialog(context);
328 + }
328 329
329 - @Override 330 + @Override
330 - public void onFailure(int errorCode) { 331 + public void onFailure(int errorCode) {
331 - errorSharingDialog(context); 332 + errorSharingDialog(context);
332 - } 333 + }
333 - }); 334 + });
334 - }) 335 + })
335 - .show(); 336 + .show();
337 + }
336 } 338 }
337 339
338 /** 340 /**
339 * Dialog when we success get the sharing gift 341 * Dialog when we success get the sharing gift
340 */ 342 */
341 - private static void acceptSharingDialog(Context context, boolean isSupermarket) { 343 + private static void acceptSharingDialog(Activity context, boolean isSupermarket) {
342 - mAlertDialogAcceptSharing = new AlertDialog.Builder(context) 344 + if (!context.isFinishing()) {
343 - .setTitle(R.string.cos_dlg_success_title) 345 + mAlertDialogAcceptSharing = new AlertDialog.Builder(context)
344 - .setMessage(isSupermarket ? R.string.cos_dlg_positive_button_text2 : R.string.cos_dlg_positive_button_text) 346 + .setTitle(R.string.cos_dlg_success_title)
345 - .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 347 + .setMessage(isSupermarket ? R.string.cos_dlg_positive_button_text2 : R.string.cos_dlg_positive_button_text)
346 - dialogPositive.dismiss(); 348 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
347 - }) 349 + dialogPositive.dismiss();
348 - .show(); 350 + })
351 + .show();
352 + }
349 } 353 }
350 354
351 /** 355 /**
352 * Dialog when we reject the sharing gift 356 * Dialog when we reject the sharing gift
353 */ 357 */
354 - private static void rejectSharingDialog(Context context, String sharingId) { 358 + private static void rejectSharingDialog(Activity context, String sharingId) {
355 - mAlertDialogRejectSharing = new AlertDialog.Builder(context) 359 + if (!context.isFinishing()) {
356 - .setTitle(R.string.cos_dlg_reject_title) 360 + mAlertDialogRejectSharing = new AlertDialog.Builder(context)
357 - .setMessage(R.string.cos_dlg_reject_text) 361 + .setTitle(R.string.cos_dlg_reject_title)
358 - .setPositiveButton(R.string.cos_dlg_negative_button, (dialogPositive, whichPositive) -> { 362 + .setMessage(R.string.cos_dlg_reject_text)
359 - WarplyManager.cosmoteRetrieveSharing(new CosmoteRetrieveSharingRequest() 363 + .setPositiveButton(R.string.cos_dlg_negative_button, (dialogPositive, whichPositive) -> {
360 - .setSharingId(sharingId) 364 + WarplyManager.cosmoteRetrieveSharing(new CosmoteRetrieveSharingRequest()
361 - .setAccept(false), 365 + .setSharingId(sharingId)
362 - new CallbackReceiver<JSONObject>() { 366 + .setAccept(false),
363 - @Override 367 + new CallbackReceiver<JSONObject>() {
364 - public void onSuccess(JSONObject result) { 368 + @Override
365 - int status = result.optInt("status", 2); 369 + public void onSuccess(JSONObject result) {
366 - if (status == 1) 370 + int status = result.optInt("status", 2);
367 - returnSharingSuccessDialog(context); 371 + if (status == 1)
368 - else 372 + returnSharingSuccessDialog(context);
369 - errorSharingDialog(context); 373 + else
370 - } 374 + errorSharingDialog(context);
375 + }
371 376
372 - @Override 377 + @Override
373 - public void onFailure(int errorCode) { 378 + public void onFailure(int errorCode) {
374 - errorSharingDialog(context); 379 + errorSharingDialog(context);
375 - } 380 + }
376 - }); 381 + });
377 - }) 382 + })
378 - .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichNegative) -> { 383 + .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichNegative) -> {
379 - dialogNegative.dismiss(); 384 + dialogNegative.dismiss();
380 - }) 385 + })
381 - .show(); 386 + .show();
387 + }
382 } 388 }
383 389
384 /** 390 /**
385 * Dialog when the gift gets returned 391 * Dialog when the gift gets returned
386 */ 392 */
387 - private static void returnSharingDialog(Context context, String alertTitle) { 393 + private static void returnSharingDialog(Activity context, String alertTitle) {
388 - mAlertDialogReturnSharing = new AlertDialog.Builder(context) 394 + if (!context.isFinishing()) {
389 - .setTitle(R.string.cod_dlg_return_title) 395 + mAlertDialogReturnSharing = new AlertDialog.Builder(context)
390 - .setMessage(alertTitle) 396 + .setTitle(R.string.cod_dlg_return_title)
391 - .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 397 + .setMessage(alertTitle)
392 - dialogPositive.dismiss(); 398 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
393 - }) 399 + dialogPositive.dismiss();
394 - .show(); 400 + })
401 + .show();
402 + }
395 } 403 }
396 404
397 /** 405 /**
398 * Dialog when the gift gets successfully returned 406 * Dialog when the gift gets successfully returned
399 */ 407 */
400 - private static void returnSharingSuccessDialog(Context context) { 408 + private static void returnSharingSuccessDialog(Activity context) {
401 - mAlertDialogReturnSharing = new AlertDialog.Builder(context) 409 + if (!context.isFinishing()) {
402 - .setTitle(R.string.cod_dlg_reject_title) 410 + mAlertDialogReturnSharing = new AlertDialog.Builder(context)
403 - .setMessage(R.string.cod_dlg_reject_subtitle) 411 + .setTitle(R.string.cod_dlg_reject_title)
404 - .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 412 + .setMessage(R.string.cod_dlg_reject_subtitle)
405 - dialogPositive.dismiss(); 413 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
406 - }) 414 + dialogPositive.dismiss();
407 - .show(); 415 + })
416 + .show();
417 + }
408 } 418 }
409 419
410 /** 420 /**
411 * Error dialog 421 * Error dialog
412 */ 422 */
413 - private static void errorSharingDialog(Context context) { 423 + private static void errorSharingDialog(Activity context) {
414 - mAlertDialogErrorSharing = new AlertDialog.Builder(context) 424 + if (!context.isFinishing()) {
415 - .setTitle(R.string.cos_dlg_error_title) 425 + mAlertDialogErrorSharing = new AlertDialog.Builder(context)
416 - .setMessage(R.string.cos_dlg_error_subtitle) 426 + .setTitle(R.string.cos_dlg_error_title)
417 - .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 427 + .setMessage(R.string.cos_dlg_error_subtitle)
418 - dialogPositive.dismiss(); 428 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
419 - }) 429 + dialogPositive.dismiss();
420 - .show(); 430 + })
431 + .show();
432 + }
421 } 433 }
422 434
423 /** 435 /**
424 * Return dialog 436 * Return dialog
425 */ 437 */
426 - private static void returnDialog(Context context, String message, String sharingId) { 438 + private static void returnDialog(Activity context, String message, String sharingId) {
427 - mAlertDialogErrorSharing = new AlertDialog.Builder(context) 439 + if (!context.isFinishing()) {
428 - .setTitle(R.string.cos_dlg_return_title) 440 + mAlertDialogErrorSharing = new AlertDialog.Builder(context)
429 - .setMessage(message) 441 + .setTitle(R.string.cos_dlg_return_title)
430 - .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogPositive, whichPositive) -> { 442 + .setMessage(message)
443 + .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogPositive, whichPositive) -> {
431 // rejectSharingDialog(context, sharingId); 444 // rejectSharingDialog(context, sharingId);
432 - dialogPositive.dismiss(); 445 + dialogPositive.dismiss();
433 - }) 446 + })
434 - .setPositiveButton(R.string.cos_dlg_positive_button, (dialogNegative, whichNegative) -> { 447 + .setPositiveButton(R.string.cos_dlg_positive_button, (dialogNegative, whichNegative) -> {
435 - WarplyManager.cosmoteRetrieveSharing(new CosmoteRetrieveSharingRequest() 448 + WarplyManager.cosmoteRetrieveSharing(new CosmoteRetrieveSharingRequest()
436 - .setSharingId(sharingId) 449 + .setSharingId(sharingId)
437 - .setAccept(true), 450 + .setAccept(true),
438 - new CallbackReceiver<JSONObject>() { 451 + new CallbackReceiver<JSONObject>() {
439 - @Override 452 + @Override
440 - public void onSuccess(JSONObject result) { 453 + public void onSuccess(JSONObject result) {
441 - int status = result.optInt("status", 2); 454 + int status = result.optInt("status", 2);
442 - if (status == 1) { 455 + if (status == 1) {
443 - WarplyManager.getUserCouponsWithCouponsets(new CallbackReceiver<CouponList>() { 456 + WarplyManager.getUserCouponsWithCouponsets(new CallbackReceiver<CouponList>() {
444 - @Override 457 + @Override
445 - public void onSuccess(CouponList result) { 458 + public void onSuccess(CouponList result) {
446 - WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); 459 + WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel();
447 - couponsChanged.setChanged(true); 460 + couponsChanged.setChanged(true);
448 - EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); 461 + EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged));
449 - } 462 + }
450 - 463 +
451 - @Override 464 + @Override
452 - public void onFailure(int errorCode) { 465 + public void onFailure(int errorCode) {
453 - 466 +
454 - } 467 + }
455 - }); 468 + });
456 // acceptSharingDialog(context); 469 // acceptSharingDialog(context);
457 - } else 470 + } else
458 - errorSharingDialog(context); 471 + errorSharingDialog(context);
459 - } 472 + }
460 473
461 - @Override 474 + @Override
462 - public void onFailure(int errorCode) { 475 + public void onFailure(int errorCode) {
463 - errorSharingDialog(context); 476 + errorSharingDialog(context);
464 - } 477 + }
465 - }); 478 + });
466 - }) 479 + })
467 - .show(); 480 + .show();
481 + }
468 } 482 }
469 483
470 /** 484 /**
471 * Expired dialog 485 * Expired dialog
472 */ 486 */
473 - private static void errorExpiredDialog(Context context, String message) { 487 + private static void errorExpiredDialog(Activity context, String message) {
474 - mAlertDialogErrorExpiredSharing = new AlertDialog.Builder(context) 488 + if (!context.isFinishing()) {
475 - .setTitle(R.string.cos_dlg_error_title) 489 + mAlertDialogErrorExpiredSharing = new AlertDialog.Builder(context)
476 - .setMessage(message) 490 + .setTitle(R.string.cos_dlg_error_title)
477 - .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 491 + .setMessage(message)
478 - dialogPositive.dismiss(); 492 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
479 - }) 493 + dialogPositive.dismiss();
480 - .show(); 494 + })
495 + .show();
496 + }
481 } 497 }
482 498
483 /** 499 /**
484 * Used dialog 500 * Used dialog
485 */ 501 */
486 - private static void errorUsedDialog(Context context, String message) { 502 + private static void errorUsedDialog(Activity context, String message) {
487 - mAlertDialogErrorUsedSharing = new AlertDialog.Builder(context) 503 + if (!context.isFinishing()) {
488 - .setTitle(R.string.cos_dlg_error_title) 504 + mAlertDialogErrorUsedSharing = new AlertDialog.Builder(context)
489 - .setMessage(message) 505 + .setTitle(R.string.cos_dlg_error_title)
490 - .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 506 + .setMessage(message)
491 - dialogPositive.dismiss(); 507 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
492 - }) 508 + dialogPositive.dismiss();
493 - .show(); 509 + })
510 + .show();
511 + }
494 } 512 }
495 513
496 /** 514 /**
......
...@@ -659,6 +659,7 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { ...@@ -659,6 +659,7 @@ public class WarpView extends WebView implements DefaultLifecycleObserver {
659 private void checkForPermissions(String origin, Callback callback) { 659 private void checkForPermissions(String origin, Callback callback) {
660 String perm = Manifest.permission.ACCESS_FINE_LOCATION; 660 String perm = Manifest.permission.ACCESS_FINE_LOCATION;
661 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || getContext().checkSelfPermission(perm) == PackageManager.PERMISSION_GRANTED) { 661 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || getContext().checkSelfPermission(perm) == PackageManager.PERMISSION_GRANTED) {
662 + geolocationCallback = callback;
662 if (isGPSEnabled()) { 663 if (isGPSEnabled()) {
663 callback.invoke(origin, true, false); 664 callback.invoke(origin, true, false);
664 } else { 665 } else {
...@@ -678,6 +679,8 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { ...@@ -678,6 +679,8 @@ public class WarpView extends WebView implements DefaultLifecycleObserver {
678 } 679 }
679 680
680 private void enableLocationSettings() { 681 private void enableLocationSettings() {
682 + if (geolocationCallback == null) return;
683 +
681 GoogleApiClient googleApiClient = new GoogleApiClient.Builder(WarpActivity) 684 GoogleApiClient googleApiClient = new GoogleApiClient.Builder(WarpActivity)
682 .addApi(LocationServices.API) 685 .addApi(LocationServices.API)
683 .build(); 686 .build();
......