Add ability to pin/unpin statuses (#872)
This commit is contained in:
parent
f6934cadd8
commit
a0988dc6c6
9 changed files with 61 additions and 13 deletions
|
@ -33,6 +33,7 @@ import com.keylesspalace.tusky.entity.StatusContext;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.Single;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.ResponseBody;
|
||||
|
@ -156,6 +157,12 @@ public interface MastodonApi {
|
|||
@POST("api/v1/statuses/{id}/unfavourite")
|
||||
Call<Status> unfavouriteStatus(@Path("id") String statusId);
|
||||
|
||||
@POST("api/v1/statuses/{id}/pin")
|
||||
Single<Status> pinStatus(@Path("id") String statusId);
|
||||
|
||||
@POST("api/v1/statuses/{id}/unpin")
|
||||
Single<Status> unpinStatus(@Path("id") String statusId);
|
||||
|
||||
@GET("api/v1/accounts/verify_credentials")
|
||||
Call<Account> accountVerifyCredentials();
|
||||
|
||||
|
|
|
@ -15,12 +15,14 @@
|
|||
|
||||
package com.keylesspalace.tusky.network
|
||||
|
||||
import com.keylesspalace.tusky.appstore.EventHub
|
||||
import com.keylesspalace.tusky.appstore.BlockEvent
|
||||
import com.keylesspalace.tusky.appstore.EventHub
|
||||
import com.keylesspalace.tusky.appstore.MuteEvent
|
||||
import com.keylesspalace.tusky.appstore.StatusDeletedEvent
|
||||
import com.keylesspalace.tusky.entity.Relationship
|
||||
import com.keylesspalace.tusky.entity.Status
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.rxkotlin.addTo
|
||||
import okhttp3.ResponseBody
|
||||
import retrofit2.Call
|
||||
import retrofit2.Callback
|
||||
|
@ -36,12 +38,20 @@ interface TimelineCases {
|
|||
fun mute(id: String)
|
||||
fun block(id: String)
|
||||
fun delete(id: String)
|
||||
fun pin(status: Status, pin: Boolean)
|
||||
}
|
||||
|
||||
class TimelineCasesImpl(
|
||||
private val mastodonApi: MastodonApi,
|
||||
private val eventHub: EventHub
|
||||
) : TimelineCases {
|
||||
|
||||
/**
|
||||
* Unused yet but can be use for cancellation later. It's always a good idea to save
|
||||
* Disposables.
|
||||
*/
|
||||
private val cancelDisposable = CompositeDisposable()
|
||||
|
||||
override fun reblogWithCallback(status: Status, reblog: Boolean, callback: Callback<Status>) {
|
||||
val id = status.actionableId
|
||||
|
||||
|
@ -95,4 +105,13 @@ class TimelineCasesImpl(
|
|||
eventHub.dispatch(StatusDeletedEvent(id))
|
||||
}
|
||||
|
||||
override fun pin(status: Status, pin: Boolean) {
|
||||
// Replace with extension method if we use RxKotlin
|
||||
(if (pin) mastodonApi.pinStatus(status.id) else mastodonApi.unpinStatus(status.id))
|
||||
.subscribe({ updatedStatus ->
|
||||
status.pinned = updatedStatus.pinned
|
||||
}, {})
|
||||
.addTo(this.cancelDisposable)
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue