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.
// This would lead to a fireDate of 0.0 when trying to extract a Double from the bundle.
// Instead always try extract a Long
Long fireDate = schedule.getLong("fireDate", -1);
if (fireDate == -1) {
Long fireDate = -1L;
try {
fireDate = (long) schedule.getDouble("fireDate", -1);
if (fireDate == -1) {
if (promise == null) {
Log.e(TAG, "Missing schedule information");
} else {
promise.reject("notification/schedule_notification_error", "Missing fireDate information");
}
return;
} catch (ClassCastException e) {
fireDate = schedule.getLong("fireDate", -1);
}
if (fireDate == -1) {
if (promise == null) {
Log.e(TAG, "Missing schedule information");
} else {
promise.reject("notification/schedule_notification_error", "Missing fireDate information");
}
return;
}
// Scheduled alarms are cleared on restart