diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java index e52084e5e..8310efb1d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java @@ -73,9 +73,7 @@ public class PushNotificationManager { Map pushDeviceData = new HashMap<>(); pushDeviceData.put("regId", this.refreshedToken); pushDeviceData.put("type", "android"); - apiClient.addPushDevice(pushDeviceData) - - .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); + apiClient.addPushDevice(pushDeviceData).subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } public void removePushDeviceUsingStoredToken() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.java b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.java index 5890cb29a..f660fda52 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.Intent; import android.os.Build; import android.support.v4.content.ContextCompat; +import android.support.v4.content.WakefulBroadcastReceiver; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; @@ -24,7 +25,7 @@ import javax.inject.Named; //https://gist.github.com/BrandonSmith/6679223 -public class NotificationPublisher extends BroadcastReceiver { +public class NotificationPublisher extends WakefulBroadcastReceiver { @Inject TaskRepository taskRepository; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 49a23b053..24c219b3f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -389,11 +389,7 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria displayDeathDialogIfNeeded(); YesterdailyDialog.showDialogIfNeeded(this, user.getId(), userRepository, taskRepository); - if (!fromLocalDb) { - displayNewInboxMessagesBadge(); - pushNotificationManager.setUser(user); - pushNotificationManager.addPushDeviceUsingStoredToken(); - } + displayNewInboxMessagesBadge(); } } @@ -793,6 +789,10 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria protected void retrieveUser() { if (this.userRepository != null && hostConfig.hasAuthentication()) { this.userRepository.retrieveUser(true) + .doOnNext(user1 -> { + pushNotificationManager.setUser(user1); + pushNotificationManager.addPushDeviceUsingStoredToken(); + }) .flatMap(user1 -> inventoryRepository.retrieveContent(false)) .subscribe(user1 -> {}, RxErrorHandler.handleEmptyError()); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java index 7b36c3984..5c1863bf9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java @@ -6,6 +6,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; +import com.habitrpg.android.habitica.models.PushDevice; import com.habitrpg.android.habitica.models.Tag; import com.habitrpg.android.habitica.models.inventory.Quest; import com.habitrpg.android.habitica.models.invitations.Invitations; @@ -24,6 +25,7 @@ import com.habitrpg.android.habitica.models.user.Stats; import com.habitrpg.android.habitica.models.user.User; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -107,6 +109,14 @@ public class UserDeserializer implements JsonDeserializer { } } + if (obj.has("pushDevices")) { + user.setPushDevices(new ArrayList<>()); + for (JsonElement entry : obj.getAsJsonArray("pushDevices")) { + PushDevice pushDevice = context.deserialize(entry, PushDevice.class); + user.getPushDevices().add(pushDevice); + } + } + if (obj.has("lastCron")) { user.setLastCron(context.deserialize(obj.get("lastCron"), Date.class)); }