package com.dieam.reactnativepushnotification.modules;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import java.util.Set;
import static com.dieam.reactnativepushnotification.modules.RNPushNotification.LOG_TAG;
/**
* Set alarms for scheduled notification after system reboot.
*/
public class RNPushNotificationBootEventReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(LOG_TAG, "RNPushNotificationBootEventReceiver loading scheduled notifications");
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
SharedPreferences sharedPreferences = context.getSharedPreferences(RNPushNotificationHelper.PREFERENCES_KEY, Context.MODE_PRIVATE);
Set<String> ids = sharedPreferences.getAll().keySet();
Application applicationContext = (Application) context.getApplicationContext();
RNPushNotificationHelper rnPushNotificationHelper = new RNPushNotificationHelper(applicationContext);
for (String id : ids) {
try {
String notificationAttributesJson = sharedPreferences.getString(id, null);
if (notificationAttributesJson != null) {
RNPushNotificationAttributes notificationAttributes = RNPushNotificationAttributes.fromJson(notificationAttributesJson);
if (notificationAttributes.getFireDate() < System.currentTimeMillis()) {
Log.i(LOG_TAG, "RNPushNotificationBootEventReceiver: Showing notification for " +
notificationAttributes.getId());
rnPushNotificationHelper.sendToNotificationCentre(notificationAttributes.toBundle());
} else {
Log.i(LOG_TAG, "RNPushNotificationBootEventReceiver: Scheduling notification for " +
notificationAttributes.getId());
rnPushNotificationHelper.sendNotificationScheduledCore(notificationAttributes.toBundle());
}
}
} catch (Exception e) {
Log.e(LOG_TAG, "Problem with boot receiver loading notification " + id, e);
}
}
}
}
}