diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/notifications/GlobalNotification.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/notifications/GlobalNotification.java new file mode 100644 index 000000000..0dd8067b1 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/notifications/GlobalNotification.java @@ -0,0 +1,21 @@ +package com.habitrpg.android.habitica.models.notifications; + +import io.realm.RealmObject; +import io.realm.annotations.PrimaryKey; + +/** + * Represents Habitica "Global notifications", i.e. the notifications about chat messages + * (in Guilds and Party), Party & Quest invitations, unallocated stat points etc. + * + * These are different from other kind of notifications, such as Push notifications and + * Popup notifications. + */ +public class GlobalNotification extends RealmObject { + + @PrimaryKey + public String id; + + public String type; + public boolean seen; + // TODO data +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt index bf9ab3912..6707784c7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt @@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.models.Avatar import com.habitrpg.android.habitica.models.PushDevice import com.habitrpg.android.habitica.models.Tag import com.habitrpg.android.habitica.models.invitations.Invitations +import com.habitrpg.android.habitica.models.notifications.GlobalNotification import com.habitrpg.android.habitica.models.social.ChallengeMembership import com.habitrpg.android.habitica.models.social.UserParty import com.habitrpg.android.habitica.models.tasks.TaskList @@ -122,6 +123,8 @@ open class User : RealmObject(), Avatar { @Ignore var pushDevices: List? = null + var notifications = RealmList() + var purchased: Purchases? = null set(purchased) { field = purchased diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt index 689724bc6..052766700 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt @@ -11,6 +11,7 @@ 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 +import com.habitrpg.android.habitica.models.notifications.GlobalNotification import com.habitrpg.android.habitica.models.social.ChallengeMembership import com.habitrpg.android.habitica.models.social.UserParty import com.habitrpg.android.habitica.models.tasks.TasksOrder @@ -109,6 +110,11 @@ class UserDeserializer : JsonDeserializer { .forEach { (user.pushDevices as? ArrayList)?.add(it) } } + if (obj.has("notifications")) { + user.notifications = context.deserialize(obj.get("notifications"), object: TypeToken>() { + }.type) + } + if (obj.has("lastCron")) { user.lastCron = context.deserialize(obj.get("lastCron"), Date::class.java) }