Fix ClassCastException while parsing fireDate

ClassCastException was thrown on Android 8.1 while trying to schedule
local notification. Use try-catch approach instead of relaying on the
default parse value.
This commit is contained in:
Dariusz Luksza 2018-05-11 14:26:58 +02:00
parent f3806da600
commit dbc5a2d54e
1 changed files with 11 additions and 9 deletions

View File

@ -309,17 +309,19 @@ public class RNFirebaseNotificationManager {
// fireDate is stored in the Bundle as Long after notifications are rescheduled. // fireDate is stored in the Bundle as Long after notifications are rescheduled.
// This would lead to a fireDate of 0.0 when trying to extract a Double from the bundle. // This would lead to a fireDate of 0.0 when trying to extract a Double from the bundle.
// Instead always try extract a Long // Instead always try extract a Long
Long fireDate = schedule.getLong("fireDate", -1); Long fireDate = -1L;
if (fireDate == -1) { try {
fireDate = (long) schedule.getDouble("fireDate", -1); fireDate = (long) schedule.getDouble("fireDate", -1);
if (fireDate == -1) { } catch (ClassCastException e) {
if (promise == null) { fireDate = schedule.getLong("fireDate", -1);
Log.e(TAG, "Missing schedule information"); }
} else { if (fireDate == -1) {
promise.reject("notification/schedule_notification_error", "Missing fireDate information"); if (promise == null) {
} Log.e(TAG, "Missing schedule information");
return; } else {
promise.reject("notification/schedule_notification_error", "Missing fireDate information");
} }
return;
} }
// Scheduled alarms are cleared on restart // Scheduled alarms are cleared on restart