fix updating pushdevice id

This commit is contained in:
Phillip Thelen 2017-09-07 14:52:14 +02:00
parent 6a529b31d0
commit 69f5254f9e
4 changed files with 18 additions and 9 deletions

View file

@ -73,9 +73,7 @@ public class PushNotificationManager {
Map<String, String> 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() {

View file

@ -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;

View file

@ -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());
}

View file

@ -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<User> {
}
}
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));
}