Skip to content
This repository was archived by the owner on May 23, 2025. It is now read-only.

Commit c45a332

Browse files
authored
don't spam endless posts when trying to schedule on GoToSocial (#4705)
closes #4703
1 parent 997fd14 commit c45a332

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

app/src/main/java/com/keylesspalace/tusky/appstore/Events.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.keylesspalace.tusky.TabData
44
import com.keylesspalace.tusky.entity.Account
55
import com.keylesspalace.tusky.entity.Notification
66
import com.keylesspalace.tusky.entity.Poll
7-
import com.keylesspalace.tusky.entity.ScheduledStatus
87
import com.keylesspalace.tusky.entity.Status
98

109
data class StatusChangedEvent(val status: Status) : Event
@@ -13,7 +12,7 @@ data class BlockEvent(val accountId: String) : Event
1312
data class MuteEvent(val accountId: String) : Event
1413
data class StatusDeletedEvent(val statusId: String) : Event
1514
data class StatusComposedEvent(val status: Status) : Event
16-
data class StatusScheduledEvent(val scheduledStatus: ScheduledStatus) : Event
15+
data class StatusScheduledEvent(val scheduledStatusId: String) : Event
1716
data class ProfileEditedEvent(val newProfileData: Account) : Event
1817
data class PreferenceChangedEvent(val preferenceKey: String) : Event
1918
data class MainTabsChangedEvent(val newTabs: List<TabData>) : Event

app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,10 @@ data class ScheduledStatus(
2525
val params: StatusParams,
2626
@Json(name = "media_attachments") val mediaAttachments: List<Attachment>
2727
)
28+
29+
// minimal class to avoid json parsing errors with servers that don't support scheduling
30+
// https://github.com/tuskyapp/Tusky/issues/4703
31+
@JsonClass(generateAdapter = true)
32+
data class ScheduledStatusReply(
33+
val id: String,
34+
)

app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import com.keylesspalace.tusky.entity.NotificationSubscribeResult
3939
import com.keylesspalace.tusky.entity.Poll
4040
import com.keylesspalace.tusky.entity.Relationship
4141
import com.keylesspalace.tusky.entity.ScheduledStatus
42+
import com.keylesspalace.tusky.entity.ScheduledStatusReply
4243
import com.keylesspalace.tusky.entity.SearchResult
4344
import com.keylesspalace.tusky.entity.Status
4445
import com.keylesspalace.tusky.entity.StatusContext
@@ -207,7 +208,7 @@ interface MastodonApi {
207208
@Header(DOMAIN_HEADER) domain: String,
208209
@Header("Idempotency-Key") idempotencyKey: String,
209210
@Body status: NewStatus
210-
): NetworkResult<ScheduledStatus>
211+
): NetworkResult<ScheduledStatusReply>
211212

212213
@GET("api/v1/statuses/{id}")
213214
suspend fun status(@Path("id") statusId: String): NetworkResult<Status>

app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import com.keylesspalace.tusky.entity.Attachment
4747
import com.keylesspalace.tusky.entity.MediaAttribute
4848
import com.keylesspalace.tusky.entity.NewPoll
4949
import com.keylesspalace.tusky.entity.NewStatus
50-
import com.keylesspalace.tusky.entity.ScheduledStatus
50+
import com.keylesspalace.tusky.entity.ScheduledStatusReply
5151
import com.keylesspalace.tusky.entity.Status
5252
import com.keylesspalace.tusky.network.MastodonApi
5353
import com.keylesspalace.tusky.util.getParcelableExtraCompat
@@ -290,7 +290,7 @@ class SendStatusService : Service() {
290290
mediaUploader.cancelUploadScope(*statusToSend.media.map { it.localId }.toIntArray())
291291

292292
if (scheduled) {
293-
eventHub.dispatch(StatusScheduledEvent(sentStatus as ScheduledStatus))
293+
eventHub.dispatch(StatusScheduledEvent((sentStatus as ScheduledStatusReply).id))
294294
} else if (!isNew) {
295295
eventHub.dispatch(StatusChangedEvent(sentStatus as Status))
296296
} else {

0 commit comments

Comments
 (0)