From e1e9448026d161ee08cbb19f61a3761ec8f837bf Mon Sep 17 00:00:00 2001 From: Gibran Chevalley Date: Wed, 5 Jun 2024 11:19:46 +0200 Subject: [PATCH] Fix canceled event detection --- .../com/infomaniak/mail/data/cache/RealmDatabase.kt | 2 +- .../mail/data/models/calendar/CalendarEvent.kt | 13 +++++++++++++ .../data/models/calendar/CalendarEventResponse.kt | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt b/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt index 64af52d4443..c44f727c9a4 100644 --- a/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt +++ b/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt @@ -162,7 +162,7 @@ object RealmDatabase { //region Configurations versions const val USER_INFO_SCHEMA_VERSION = 1L const val MAILBOX_INFO_SCHEMA_VERSION = 5L - const val MAILBOX_CONTENT_SCHEMA_VERSION = 12L + const val MAILBOX_CONTENT_SCHEMA_VERSION = 13L //endregion //region Configurations names diff --git a/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEvent.kt b/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEvent.kt index cdd8f22107c..eb4c8b97888 100644 --- a/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEvent.kt +++ b/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEvent.kt @@ -19,6 +19,7 @@ package com.infomaniak.mail.data.models.calendar +import com.infomaniak.lib.core.utils.Utils import com.infomaniak.mail.data.api.CalendarRealmInstantSerializer import com.infomaniak.mail.utils.extensions.toRealmInstant import io.realm.kotlin.ext.realmListOf @@ -46,8 +47,12 @@ class CalendarEvent() : EmbeddedRealmObject { var start: RealmInstant = Date(0).toRealmInstant() var end: RealmInstant = Date(0).toRealmInstant() var attendees: RealmList = realmListOf() + @SerialName("status") + private var _status: String? = null //endregion + val status: CalendarEventStatus? get() = Utils.enumValueOfOrNull(_status) + constructor( id: Int, type: String, @@ -76,6 +81,7 @@ class CalendarEvent() : EmbeddedRealmObject { if (location != other.location) return false if (isFullDay != other.isFullDay) return false if (start != other.start) return false + if (_status != other._status) return false return end == other.end } @@ -96,8 +102,15 @@ class CalendarEvent() : EmbeddedRealmObject { result = 31 * result + isFullDay.hashCode() result = 31 * result + start.hashCode() result = 31 * result + end.hashCode() + result = 31 * result + _status.hashCode() result = 31 * result + attendees.hashCode() return result } + + enum class CalendarEventStatus(val apiValue: String) { + CONFIRMED("CONFIRMED"), + TENTATIVE("TENTATIVE"), + CANCELLED("CANCELLED"), + } } diff --git a/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEventResponse.kt b/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEventResponse.kt index 80271c3a57f..7a91adddb01 100644 --- a/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEventResponse.kt +++ b/app/src/main/java/com/infomaniak/mail/data/models/calendar/CalendarEventResponse.kt @@ -18,6 +18,7 @@ package com.infomaniak.mail.data.models.calendar import com.infomaniak.lib.core.utils.Utils +import com.infomaniak.mail.data.models.calendar.CalendarEvent.CalendarEventStatus import com.infomaniak.mail.utils.extensions.isUserIn import io.realm.kotlin.types.EmbeddedRealmObject import kotlinx.serialization.SerialName @@ -54,7 +55,7 @@ class CalendarEventResponse() : EmbeddedRealmObject { val calendarEvent get() = userStoredEvent ?: attachmentEvent - val isCanceled get() = isUserStoredEventDeleted || attachmentEventMethod == AttachmentEventMethod.CANCEL + val isCanceled get() = calendarEvent?.status == CalendarEventStatus.CANCELLED fun isReplyAuthorized(): Boolean { return (attachmentEventMethod == null || attachmentEventMethod == AttachmentEventMethod.REQUEST)