diff --git a/app/src/main/java/com/keylesspalace/tusky/appstore/Events.kt b/app/src/main/java/com/keylesspalace/tusky/appstore/Events.kt index 490c874bcd..c0a02a3da6 100644 --- a/app/src/main/java/com/keylesspalace/tusky/appstore/Events.kt +++ b/app/src/main/java/com/keylesspalace/tusky/appstore/Events.kt @@ -4,7 +4,6 @@ import com.keylesspalace.tusky.TabData import com.keylesspalace.tusky.entity.Account import com.keylesspalace.tusky.entity.Notification import com.keylesspalace.tusky.entity.Poll -import com.keylesspalace.tusky.entity.ScheduledStatus import com.keylesspalace.tusky.entity.Status data class StatusChangedEvent(val status: Status) : Event @@ -13,7 +12,7 @@ data class BlockEvent(val accountId: String) : Event data class MuteEvent(val accountId: String) : Event data class StatusDeletedEvent(val statusId: String) : Event data class StatusComposedEvent(val status: Status) : Event -data class StatusScheduledEvent(val scheduledStatus: ScheduledStatus) : Event +data class StatusScheduledEvent(val scheduledStatusId: String) : Event data class ProfileEditedEvent(val newProfileData: Account) : Event data class PreferenceChangedEvent(val preferenceKey: String) : Event data class MainTabsChangedEvent(val newTabs: List) : Event diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt b/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt index 6be354d10a..9df0324abf 100644 --- a/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt +++ b/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt @@ -25,3 +25,10 @@ data class ScheduledStatus( val params: StatusParams, @Json(name = "media_attachments") val mediaAttachments: List ) + +// minimal class to avoid json parsing errors with servers that don't support scheduling +// https://github.com/tuskyapp/Tusky/issues/4703 +@JsonClass(generateAdapter = true) +data class ScheduledStatusReply( + val id: String, +) diff --git a/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt b/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt index 9ad49f5df6..4c265d4f83 100644 --- a/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt +++ b/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt @@ -39,6 +39,7 @@ import com.keylesspalace.tusky.entity.NotificationSubscribeResult import com.keylesspalace.tusky.entity.Poll import com.keylesspalace.tusky.entity.Relationship import com.keylesspalace.tusky.entity.ScheduledStatus +import com.keylesspalace.tusky.entity.ScheduledStatusReply import com.keylesspalace.tusky.entity.SearchResult import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.entity.StatusContext @@ -207,7 +208,7 @@ interface MastodonApi { @Header(DOMAIN_HEADER) domain: String, @Header("Idempotency-Key") idempotencyKey: String, @Body status: NewStatus - ): NetworkResult + ): NetworkResult @GET("api/v1/statuses/{id}") suspend fun status(@Path("id") statusId: String): NetworkResult diff --git a/app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt b/app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt index f7a98c5e06..3ebba5971c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt +++ b/app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt @@ -47,7 +47,7 @@ import com.keylesspalace.tusky.entity.Attachment import com.keylesspalace.tusky.entity.MediaAttribute import com.keylesspalace.tusky.entity.NewPoll import com.keylesspalace.tusky.entity.NewStatus -import com.keylesspalace.tusky.entity.ScheduledStatus +import com.keylesspalace.tusky.entity.ScheduledStatusReply import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.network.MastodonApi import com.keylesspalace.tusky.util.getParcelableExtraCompat @@ -290,7 +290,7 @@ class SendStatusService : Service() { mediaUploader.cancelUploadScope(*statusToSend.media.map { it.localId }.toIntArray()) if (scheduled) { - eventHub.dispatch(StatusScheduledEvent(sentStatus as ScheduledStatus)) + eventHub.dispatch(StatusScheduledEvent((sentStatus as ScheduledStatusReply).id)) } else if (!isNew) { eventHub.dispatch(StatusChangedEvent(sentStatus as Status)) } else {