Skip to content

Commit

Permalink
don't spam endless posts when trying to schedule on GoToSocial (#4705)
Browse files Browse the repository at this point in the history
closes #4703
  • Loading branch information
connyduck authored Oct 11, 2024
1 parent 997fd14 commit c45a332
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 5 deletions.
3 changes: 1 addition & 2 deletions app/src/main/java/com/keylesspalace/tusky/appstore/Events.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<TabData>) : Event
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,10 @@ data class ScheduledStatus(
val params: StatusParams,
@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,
)
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -207,7 +208,7 @@ interface MastodonApi {
@Header(DOMAIN_HEADER) domain: String,
@Header("Idempotency-Key") idempotencyKey: String,
@Body status: NewStatus
): NetworkResult<ScheduledStatus>
): NetworkResult<ScheduledStatusReply>

@GET("api/v1/statuses/{id}")
suspend fun status(@Path("id") statusId: String): NetworkResult<Status>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit c45a332

Please sign in to comment.