don't spam endless posts when trying to schedule on GoToSocial (#4705)
closes #4703
This commit is contained in:
parent
997fd14c81
commit
c45a3320d2
|
@ -4,7 +4,6 @@ import com.keylesspalace.tusky.TabData
|
||||||
import com.keylesspalace.tusky.entity.Account
|
import com.keylesspalace.tusky.entity.Account
|
||||||
import com.keylesspalace.tusky.entity.Notification
|
import com.keylesspalace.tusky.entity.Notification
|
||||||
import com.keylesspalace.tusky.entity.Poll
|
import com.keylesspalace.tusky.entity.Poll
|
||||||
import com.keylesspalace.tusky.entity.ScheduledStatus
|
|
||||||
import com.keylesspalace.tusky.entity.Status
|
import com.keylesspalace.tusky.entity.Status
|
||||||
|
|
||||||
data class StatusChangedEvent(val status: Status) : Event
|
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 MuteEvent(val accountId: String) : Event
|
||||||
data class StatusDeletedEvent(val statusId: String) : Event
|
data class StatusDeletedEvent(val statusId: String) : Event
|
||||||
data class StatusComposedEvent(val status: Status) : 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 ProfileEditedEvent(val newProfileData: Account) : Event
|
||||||
data class PreferenceChangedEvent(val preferenceKey: String) : Event
|
data class PreferenceChangedEvent(val preferenceKey: String) : Event
|
||||||
data class MainTabsChangedEvent(val newTabs: List<TabData>) : Event
|
data class MainTabsChangedEvent(val newTabs: List<TabData>) : Event
|
||||||
|
|
|
@ -25,3 +25,10 @@ data class ScheduledStatus(
|
||||||
val params: StatusParams,
|
val params: StatusParams,
|
||||||
@Json(name = "media_attachments") val mediaAttachments: List<Attachment>
|
@Json(name = "media_attachments") val mediaAttachments: List<Attachment>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 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,
|
||||||
|
)
|
||||||
|
|
|
@ -39,6 +39,7 @@ import com.keylesspalace.tusky.entity.NotificationSubscribeResult
|
||||||
import com.keylesspalace.tusky.entity.Poll
|
import com.keylesspalace.tusky.entity.Poll
|
||||||
import com.keylesspalace.tusky.entity.Relationship
|
import com.keylesspalace.tusky.entity.Relationship
|
||||||
import com.keylesspalace.tusky.entity.ScheduledStatus
|
import com.keylesspalace.tusky.entity.ScheduledStatus
|
||||||
|
import com.keylesspalace.tusky.entity.ScheduledStatusReply
|
||||||
import com.keylesspalace.tusky.entity.SearchResult
|
import com.keylesspalace.tusky.entity.SearchResult
|
||||||
import com.keylesspalace.tusky.entity.Status
|
import com.keylesspalace.tusky.entity.Status
|
||||||
import com.keylesspalace.tusky.entity.StatusContext
|
import com.keylesspalace.tusky.entity.StatusContext
|
||||||
|
@ -207,7 +208,7 @@ interface MastodonApi {
|
||||||
@Header(DOMAIN_HEADER) domain: String,
|
@Header(DOMAIN_HEADER) domain: String,
|
||||||
@Header("Idempotency-Key") idempotencyKey: String,
|
@Header("Idempotency-Key") idempotencyKey: String,
|
||||||
@Body status: NewStatus
|
@Body status: NewStatus
|
||||||
): NetworkResult<ScheduledStatus>
|
): NetworkResult<ScheduledStatusReply>
|
||||||
|
|
||||||
@GET("api/v1/statuses/{id}")
|
@GET("api/v1/statuses/{id}")
|
||||||
suspend fun status(@Path("id") statusId: String): NetworkResult<Status>
|
suspend fun status(@Path("id") statusId: String): NetworkResult<Status>
|
||||||
|
|
|
@ -47,7 +47,7 @@ import com.keylesspalace.tusky.entity.Attachment
|
||||||
import com.keylesspalace.tusky.entity.MediaAttribute
|
import com.keylesspalace.tusky.entity.MediaAttribute
|
||||||
import com.keylesspalace.tusky.entity.NewPoll
|
import com.keylesspalace.tusky.entity.NewPoll
|
||||||
import com.keylesspalace.tusky.entity.NewStatus
|
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.entity.Status
|
||||||
import com.keylesspalace.tusky.network.MastodonApi
|
import com.keylesspalace.tusky.network.MastodonApi
|
||||||
import com.keylesspalace.tusky.util.getParcelableExtraCompat
|
import com.keylesspalace.tusky.util.getParcelableExtraCompat
|
||||||
|
@ -290,7 +290,7 @@ class SendStatusService : Service() {
|
||||||
mediaUploader.cancelUploadScope(*statusToSend.media.map { it.localId }.toIntArray())
|
mediaUploader.cancelUploadScope(*statusToSend.media.map { it.localId }.toIntArray())
|
||||||
|
|
||||||
if (scheduled) {
|
if (scheduled) {
|
||||||
eventHub.dispatch(StatusScheduledEvent(sentStatus as ScheduledStatus))
|
eventHub.dispatch(StatusScheduledEvent((sentStatus as ScheduledStatusReply).id))
|
||||||
} else if (!isNew) {
|
} else if (!isNew) {
|
||||||
eventHub.dispatch(StatusChangedEvent(sentStatus as Status))
|
eventHub.dispatch(StatusChangedEvent(sentStatus as Status))
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue