added mastodon relationship operations
This commit is contained in:
parent
ca382e499a
commit
2afa4375e9
|
@ -81,7 +81,8 @@ public interface AccountsResources {
|
|||
Relationship unmuteUser(@Path("id") String id) throws MicroBlogException;
|
||||
|
||||
@GET("/v1/accounts/relationships")
|
||||
LinkHeaderList<Relationship> getRelationships(@Path("id") String id) throws MicroBlogException;
|
||||
LinkHeaderList<Relationship> getRelationships(@Query(value = "id", arrayDelimiter = ',')
|
||||
String[] id) throws MicroBlogException;
|
||||
|
||||
@GET("/v1/accounts/search")
|
||||
LinkHeaderList<Account> searchAccounts(@Query("q") String query, @Nullable @Query Paging paging) throws MicroBlogException;
|
||||
|
|
|
@ -18,10 +18,14 @@
|
|||
|
||||
package org.mariotaku.microblog.library.mastodon.api;
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlogException;
|
||||
import org.mariotaku.microblog.library.mastodon.model.Account;
|
||||
import org.mariotaku.microblog.library.mastodon.model.LinkHeaderList;
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging;
|
||||
import org.mariotaku.microblog.library.twitter.model.ResponseCode;
|
||||
import org.mariotaku.restfu.annotation.method.GET;
|
||||
import org.mariotaku.restfu.annotation.method.POST;
|
||||
import org.mariotaku.restfu.annotation.param.Path;
|
||||
import org.mariotaku.restfu.annotation.param.Query;
|
||||
|
||||
/**
|
||||
|
@ -29,5 +33,12 @@ import org.mariotaku.restfu.annotation.param.Query;
|
|||
*/
|
||||
public interface FollowRequestsResources {
|
||||
@GET("/v1/follow_requests")
|
||||
LinkHeaderList<Account> getFollowRequests(@Query Paging paging);
|
||||
LinkHeaderList<Account> getFollowRequests(@Query Paging paging) throws MicroBlogException;
|
||||
|
||||
@POST("/v1/follow_requests/{id}/authorize")
|
||||
ResponseCode authorizeFollowRequest(@Path("id") String id) throws MicroBlogException;
|
||||
|
||||
@POST("/v1/follow_requests/{id}/reject")
|
||||
ResponseCode rejectFollowRequest(@Path("id") String id) throws MicroBlogException;
|
||||
|
||||
}
|
||||
|
|
|
@ -18,9 +18,22 @@
|
|||
|
||||
package org.mariotaku.microblog.library.mastodon.api;
|
||||
|
||||
import org.mariotaku.microblog.library.mastodon.model.Account;
|
||||
import org.mariotaku.restfu.annotation.method.POST;
|
||||
import org.mariotaku.restfu.annotation.param.Param;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 2017/4/17.
|
||||
*/
|
||||
|
||||
public interface FollowsResources {
|
||||
|
||||
/**
|
||||
* Following a remote user
|
||||
*
|
||||
* @param uri {@code username@domain} of the person you want to follow
|
||||
* @return The local representation of the followed account, as an {@link Account}.
|
||||
*/
|
||||
@POST("/v1/follows")
|
||||
Account followRemoteUser(@Param("uri") String uri);
|
||||
}
|
||||
|
|
|
@ -19,14 +19,3 @@
|
|||
|
||||
package org.mariotaku.twidere.extension.model
|
||||
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
import org.mariotaku.twidere.extension.model.api.microblog.toParcelable
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 2017/4/7.
|
||||
*/
|
||||
|
||||
fun Array<UserList>.toParcelables(accountKey: UserKey, profileImageSize: String = "normal") = Array(size) {
|
||||
this[it].toParcelable(accountKey, profileImageSize = profileImageSize)
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.extension.model.api.mastodon
|
||||
|
||||
import org.mariotaku.microblog.library.mastodon.model.Relationship
|
||||
import org.mariotaku.twidere.model.ParcelableRelationship
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
||||
|
||||
fun Relationship.toParcelable(accountKey: UserKey, userKey: UserKey, filtering: Boolean = false):
|
||||
ParcelableRelationship {
|
||||
val obj = ParcelableRelationship()
|
||||
obj.account_key = accountKey
|
||||
obj.user_key = userKey
|
||||
obj.following = isFollowing
|
||||
obj.followed_by = isFollowedBy
|
||||
obj.blocking = isBlocking
|
||||
obj.muting = isMuting
|
||||
obj.filtering = filtering
|
||||
return obj
|
||||
}
|
|
@ -22,7 +22,6 @@ package org.mariotaku.twidere.extension.model.api.microblog
|
|||
import org.mariotaku.ktextension.mapToArray
|
||||
import org.mariotaku.microblog.library.twitter.model.Activity
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.toParcelables
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableActivity
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
@ -54,16 +53,18 @@ fun Activity.toParcelable(accountKey: UserKey, accountType: String, isGap: Boole
|
|||
result.target_users = targetUsers?.mapToArray {
|
||||
it.toParcelable(accountKey, accountType, profileImageSize = profileImageSize)
|
||||
}
|
||||
result.target_user_lists = targetUserLists?.toParcelables(accountKey,
|
||||
profileImageSize)
|
||||
result.target_user_lists = targetUserLists?.mapToArray {
|
||||
it.toParcelable(accountKey, profileImageSize = profileImageSize)
|
||||
}
|
||||
result.target_statuses = targetStatuses?.mapToArray {
|
||||
it.toParcelable(accountKey, accountType, profileImageSize)
|
||||
}
|
||||
result.target_object_statuses = targetObjectStatuses?.mapToArray {
|
||||
it.toParcelable(accountKey, accountType, profileImageSize)
|
||||
}
|
||||
result.target_object_user_lists = targetObjectUserLists?.toParcelables(accountKey,
|
||||
profileImageSize)
|
||||
result.target_object_user_lists = targetObjectUserLists?.mapToArray {
|
||||
it.toParcelable(accountKey, profileImageSize = profileImageSize)
|
||||
}
|
||||
result.target_object_users = targetObjectUsers?.mapToArray {
|
||||
it.toParcelable(accountKey, accountType, profileImageSize = profileImageSize)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.extension.model.api.microblog
|
||||
|
||||
import org.mariotaku.microblog.library.twitter.model.Relationship
|
||||
import org.mariotaku.twidere.model.ParcelableRelationship
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
||||
|
||||
fun Relationship.toParcelable(accountKey: UserKey, userKey: UserKey, filtering: Boolean = false):
|
||||
ParcelableRelationship {
|
||||
val obj = ParcelableRelationship()
|
||||
obj.account_key = accountKey
|
||||
obj.user_key = userKey
|
||||
obj.following = isSourceFollowingTarget
|
||||
obj.followed_by = isSourceFollowedByTarget
|
||||
obj.blocking = isSourceBlockingTarget
|
||||
obj.blocked_by = isSourceBlockedByTarget
|
||||
obj.muting = isSourceMutingTarget
|
||||
obj.retweet_enabled = isSourceWantRetweetsFromTarget
|
||||
obj.notifications_enabled = isSourceNotificationsEnabledForTarget
|
||||
obj.can_dm = canSourceDMTarget()
|
||||
obj.filtering = filtering
|
||||
return obj
|
||||
}
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
package org.mariotaku.twidere.fragment
|
||||
|
||||
import android.accounts.AccountManager
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.LoaderManager.LoaderCallbacks
|
||||
|
@ -38,9 +39,11 @@ import org.mariotaku.twidere.adapter.decorator.ExtendedDividerItemDecoration
|
|||
import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter
|
||||
import org.mariotaku.twidere.adapter.iface.IUsersAdapter
|
||||
import org.mariotaku.twidere.adapter.iface.IUsersAdapter.UserClickListener
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.annotation.Referral
|
||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||
import org.mariotaku.twidere.extension.model.getAccountType
|
||||
import org.mariotaku.twidere.loader.iface.IExtendedLoader
|
||||
import org.mariotaku.twidere.loader.iface.IPaginationLoader
|
||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||
|
@ -49,6 +52,7 @@ import org.mariotaku.twidere.model.ParcelableUser
|
|||
import org.mariotaku.twidere.model.UserKey
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
import org.mariotaku.twidere.model.pagination.Pagination
|
||||
import org.mariotaku.twidere.model.util.AccountUtils
|
||||
import org.mariotaku.twidere.util.IntentUtils
|
||||
import org.mariotaku.twidere.util.KeyboardShortcutsHandler
|
||||
import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback
|
||||
|
@ -172,7 +176,18 @@ abstract class ParcelableUsersFragment : AbsContentListRecyclerViewFragment<Parc
|
|||
val adapter = ParcelableUsersAdapter(context, Glide.with(this))
|
||||
adapter.simpleLayout = simpleLayout
|
||||
adapter.showFollow = showFollow
|
||||
adapter.friendshipClickListener = this
|
||||
val accountType = arguments.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)?.let { key ->
|
||||
val am = AccountManager.get(context)
|
||||
return@let AccountUtils.findByAccountKey(am, key)?.getAccountType(am)
|
||||
}
|
||||
when (accountType) {
|
||||
AccountType.TWITTER, AccountType.FANFOU, AccountType.STATUSNET -> {
|
||||
adapter.friendshipClickListener = this
|
||||
}
|
||||
else -> {
|
||||
adapter.friendshipClickListener = null
|
||||
}
|
||||
}
|
||||
return adapter
|
||||
}
|
||||
|
||||
|
|
|
@ -91,6 +91,7 @@ import org.mariotaku.ktextension.*
|
|||
import org.mariotaku.library.objectcursor.ObjectCursor
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.microblog.library.twitter.model.FriendshipUpdate
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList
|
||||
|
@ -108,13 +109,10 @@ import org.mariotaku.twidere.annotation.Referral
|
|||
import org.mariotaku.twidere.constant.*
|
||||
import org.mariotaku.twidere.constant.KeyboardShortcutConstants.*
|
||||
import org.mariotaku.twidere.extension.*
|
||||
import org.mariotaku.twidere.extension.model.*
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.microblog.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.applyTo
|
||||
import org.mariotaku.twidere.extension.model.getBestProfileBanner
|
||||
import org.mariotaku.twidere.extension.model.originalProfileImage
|
||||
import org.mariotaku.twidere.extension.model.urlPreferred
|
||||
import org.mariotaku.twidere.fragment.AbsStatusesFragment.StatusesFragmentDelegate
|
||||
import org.mariotaku.twidere.fragment.statuses.UserTimelineFragment.UserTimelineFragmentDelegate
|
||||
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowsInsetsCallback
|
||||
import org.mariotaku.twidere.fragment.iface.IToolBarSupportFragment
|
||||
import org.mariotaku.twidere.fragment.iface.RefreshScrollTopInterface
|
||||
|
@ -122,6 +120,7 @@ import org.mariotaku.twidere.fragment.iface.SupportFragmentCallback
|
|||
import org.mariotaku.twidere.fragment.statuses.UserFavoritesFragment
|
||||
import org.mariotaku.twidere.fragment.statuses.UserMediaTimelineFragment
|
||||
import org.mariotaku.twidere.fragment.statuses.UserTimelineFragment
|
||||
import org.mariotaku.twidere.fragment.statuses.UserTimelineFragment.UserTimelineFragmentDelegate
|
||||
import org.mariotaku.twidere.graphic.ActionBarColorDrawable
|
||||
import org.mariotaku.twidere.graphic.ActionIconDrawable
|
||||
import org.mariotaku.twidere.loader.ParcelableUserLoader
|
||||
|
@ -130,7 +129,10 @@ import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
|||
import org.mariotaku.twidere.model.event.FriendshipUpdatedEvent
|
||||
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
||||
import org.mariotaku.twidere.model.event.TaskStateChangedEvent
|
||||
import org.mariotaku.twidere.model.util.*
|
||||
import org.mariotaku.twidere.model.util.AccountUtils
|
||||
import org.mariotaku.twidere.model.util.ParcelableMediaUtils
|
||||
import org.mariotaku.twidere.model.util.ParcelableRelationshipUtils
|
||||
import org.mariotaku.twidere.model.util.UserKeyUtils
|
||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedRelationships
|
||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers
|
||||
import org.mariotaku.twidere.text.TwidereURLSpan
|
||||
|
@ -1671,37 +1673,47 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
|||
|
||||
override fun loadInBackground(): SingleResponse<ParcelableRelationship> {
|
||||
if (accountKey == null || user == null) {
|
||||
return SingleResponse.Companion.getInstance<ParcelableRelationship>(MicroBlogException("Null parameters"))
|
||||
return SingleResponse(MicroBlogException("Null parameters"))
|
||||
}
|
||||
val userKey = user.key
|
||||
val isFiltering = DataStoreUtils.isFilteringUser(context, userKey)
|
||||
if (accountKey == user.key) {
|
||||
return SingleResponse.getInstance(ParcelableRelationshipUtils.create(accountKey, userKey,
|
||||
return SingleResponse(ParcelableRelationshipUtils.create(accountKey, userKey,
|
||||
null, isFiltering))
|
||||
}
|
||||
val details = AccountUtils.getAccountDetails(AccountManager.get(context),
|
||||
accountKey, true) ?: return SingleResponse.getInstance<ParcelableRelationship>(MicroBlogException("No Account"))
|
||||
accountKey, true) ?: return SingleResponse(MicroBlogException("No Account"))
|
||||
if (details.type == AccountType.TWITTER) {
|
||||
if (!UserKeyUtils.isSameHost(accountKey, user.key)) {
|
||||
return SingleResponse.getInstance(ParcelableRelationshipUtils.create(user, isFiltering))
|
||||
}
|
||||
}
|
||||
val twitter = MicroBlogAPIFactory.getInstance(context, accountKey) ?: return SingleResponse.Companion.getInstance<ParcelableRelationship>(MicroBlogException("No Account"))
|
||||
try {
|
||||
val relationship = twitter.showFriendship(user.key.id)
|
||||
if (relationship.isSourceBlockingTarget || relationship.isSourceBlockedByTarget) {
|
||||
val data = when (details.type) {
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
mastodon.getRelationships(arrayOf(userKey.id))?.firstOrNull()
|
||||
?.toParcelable(accountKey, userKey, isFiltering)
|
||||
?: throw MicroBlogException("No relationship")
|
||||
}
|
||||
else -> {
|
||||
val microBlog = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
microBlog.showFriendship(user.key.id).toParcelable(accountKey, userKey,
|
||||
isFiltering)
|
||||
}
|
||||
}
|
||||
|
||||
if (data.blocking || data.blocked_by) {
|
||||
Utils.setLastSeen(context, userKey, -1)
|
||||
} else {
|
||||
Utils.setLastSeen(context, userKey, System.currentTimeMillis())
|
||||
}
|
||||
val data = ParcelableRelationshipUtils.create(accountKey, userKey, relationship,
|
||||
isFiltering)
|
||||
val resolver = context.contentResolver
|
||||
val values = ObjectCursor.valuesCreatorFrom(ParcelableRelationship::class.java).create(data)
|
||||
resolver.insert(CachedRelationships.CONTENT_URI, values)
|
||||
return SingleResponse.getInstance(data)
|
||||
return SingleResponse(data)
|
||||
} catch (e: MicroBlogException) {
|
||||
return SingleResponse.Companion.getInstance<ParcelableRelationship>(e)
|
||||
return SingleResponse(e)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,14 +3,10 @@ package org.mariotaku.twidere.task
|
|||
import android.accounts.AccountManager
|
||||
import android.content.Context
|
||||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.exception.AccountNotFoundException
|
||||
import org.mariotaku.twidere.extension.getErrorMessage
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
@ -26,7 +22,7 @@ abstract class AbsFriendshipOperationTask(
|
|||
) : ExceptionHandlingAbstractTask<AbsFriendshipOperationTask.Arguments, ParcelableUser,
|
||||
MicroBlogException, Any?>(context) {
|
||||
|
||||
private val profileImageSize = context.getString(R.string.profile_image_size)
|
||||
protected val profileImageSize: String = context.getString(R.string.profile_image_size)
|
||||
override val exceptionClass = MicroBlogException::class.java
|
||||
|
||||
override fun beforeExecute() {
|
||||
|
@ -39,8 +35,7 @@ abstract class AbsFriendshipOperationTask(
|
|||
|
||||
override fun afterExecute(callback: Any?, result: ParcelableUser?, exception: MicroBlogException?) {
|
||||
microBlogWrapper.removeUpdatingRelationshipId(params.accountKey, params.userKey)
|
||||
val event = FriendshipTaskEvent(action, params.accountKey,
|
||||
params.userKey)
|
||||
val event = FriendshipTaskEvent(action, params.accountKey, params.userKey)
|
||||
event.isFinished = true
|
||||
if (result != null) {
|
||||
val user = result
|
||||
|
@ -57,31 +52,27 @@ abstract class AbsFriendshipOperationTask(
|
|||
val am = AccountManager.get(context)
|
||||
val details = AccountUtils.getAccountDetails(am, params.accountKey, true)
|
||||
?: throw AccountNotFoundException()
|
||||
val twitter = details.newMicroBlogInstance(context, cls = MicroBlog::class.java)
|
||||
val user = perform(twitter, details, params)
|
||||
val parcelableUser = user.toParcelable(details, profileImageSize = profileImageSize)
|
||||
succeededWorker(twitter, details, params, parcelableUser)
|
||||
return parcelableUser
|
||||
val user = perform(details, params)
|
||||
succeededWorker(details, params, user)
|
||||
return user
|
||||
}
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
protected abstract fun perform(twitter: MicroBlog,
|
||||
details: AccountDetails,
|
||||
args: Arguments): User
|
||||
|
||||
protected abstract fun succeededWorker(twitter: MicroBlog, details: AccountDetails,
|
||||
args: Arguments, user: ParcelableUser)
|
||||
|
||||
protected abstract fun showSucceededMessage(params: Arguments, user: ParcelableUser)
|
||||
fun setup(accountKey: UserKey, userKey: UserKey, screenName: String? = null) {
|
||||
params = Arguments(accountKey, userKey, screenName)
|
||||
}
|
||||
|
||||
protected open fun showErrorMessage(params: Arguments, exception: Exception) {
|
||||
Toast.makeText(context, exception.getErrorMessage(context), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
fun setup(accountKey: UserKey, userKey: UserKey) {
|
||||
params = Arguments(accountKey, userKey)
|
||||
}
|
||||
@Throws(MicroBlogException::class)
|
||||
protected abstract fun perform(details: AccountDetails, args: Arguments): ParcelableUser
|
||||
|
||||
class Arguments(val accountKey: UserKey, val userKey: UserKey)
|
||||
protected abstract fun succeededWorker(details: AccountDetails, args: Arguments,
|
||||
user: ParcelableUser)
|
||||
|
||||
protected abstract fun showSucceededMessage(params: Arguments, user: ParcelableUser)
|
||||
|
||||
class Arguments(val accountKey: UserKey, val userKey: UserKey, val screenName: String?)
|
||||
|
||||
}
|
||||
|
|
|
@ -4,10 +4,13 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -19,16 +22,30 @@ import org.mariotaku.twidere.util.Utils
|
|||
class AcceptFriendshipTask(context: Context) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.ACCEPT) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments): User {
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.FANFOU -> {
|
||||
return twitter.acceptFanfouFriendship(args.userKey.id)
|
||||
val fanfou = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return fanfou.acceptFanfouFriendship(args.userKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Authorize remote follow request is not supported yet")
|
||||
}
|
||||
mastodon.authorizeFollowRequest(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.acceptFriendship(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
return twitter.acceptFriendship(args.userKey.id)
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails, args: Arguments, user: ParcelableUser) {
|
||||
Utils.setLastSeen(context, user.key, System.currentTimeMillis())
|
||||
}
|
||||
|
||||
|
|
|
@ -4,11 +4,15 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.twidere.Constants
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.exception.APINotSupportedException
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -20,16 +24,33 @@ import org.mariotaku.twidere.util.Utils
|
|||
class CreateFriendshipTask(context: Context) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.FOLLOW), Constants {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments): User {
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.FANFOU -> {
|
||||
return twitter.createFanfouFriendship(args.userKey.id)
|
||||
val fanfou = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return fanfou.createFanfouFriendship(args.userKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
if (args.screenName == null)
|
||||
throw MicroBlogException("Screen name required to follow remote user")
|
||||
return mastodon.followRemoteUser("${args.screenName}@${args.userKey.host}")
|
||||
.toParcelable(details)
|
||||
}
|
||||
mastodon.followUser(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.createFriendship(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
return twitter.createFriendship(args.userKey.id)
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails, args: Arguments, user: ParcelableUser) {
|
||||
user.is_following = true
|
||||
Utils.setLastSeen(context, user.key, System.currentTimeMillis())
|
||||
}
|
||||
|
|
|
@ -5,12 +5,15 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.sqliteqb.library.Expression
|
||||
import org.mariotaku.twidere.Constants
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -27,18 +30,30 @@ open class CreateUserBlockTask(
|
|||
) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.BLOCK), Constants {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails,
|
||||
args: Arguments): User {
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Block remote user is not supported yet")
|
||||
}
|
||||
mastodon.blockUser(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
AccountType.FANFOU -> {
|
||||
return twitter.createFanfouBlock(args.userKey.id)
|
||||
val fanfou = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return fanfou.createFanfouBlock(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.createBlock(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
return twitter.createBlock(args.userKey.id)
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog, details: AccountDetails, args: Arguments,
|
||||
user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails, args: Arguments, user: ParcelableUser) {
|
||||
val resolver = context.contentResolver
|
||||
Utils.setLastSeen(context, args.userKey, -1)
|
||||
for (uri in DataStoreUtils.STATUSES_URIS) {
|
||||
|
|
|
@ -5,10 +5,15 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.sqliteqb.library.Expression
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.exception.APINotSupportedException
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -25,14 +30,26 @@ class CreateUserMuteTask(
|
|||
) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.MUTE) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments): User {
|
||||
return twitter.createMute(args.userKey.id)
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.TWITTER -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.createMute(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Mute remote user is not supported yet")
|
||||
}
|
||||
mastodon.muteUser(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
else -> throw APINotSupportedException(details.type)
|
||||
}
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog,
|
||||
details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails, args: Arguments, user: ParcelableUser) {
|
||||
val resolver = context.contentResolver
|
||||
Utils.setLastSeen(context, args.userKey, -1)
|
||||
for (uri in DataStoreUtils.STATUSES_URIS) {
|
||||
|
|
|
@ -4,10 +4,13 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -19,16 +22,30 @@ import org.mariotaku.twidere.util.Utils
|
|||
class DenyFriendshipTask(context: Context) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.DENY) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments): User {
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.FANFOU -> {
|
||||
return twitter.denyFanfouFriendship(args.userKey.id)
|
||||
val fanfou = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return fanfou.denyFanfouFriendship(args.userKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Reject remote follow request is not supported yet")
|
||||
}
|
||||
mastodon.rejectFollowRequest(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.denyFriendship(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
return twitter.denyFriendship(args.userKey.id)
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails, args: Arguments, user: ParcelableUser) {
|
||||
Utils.setLastSeen(context, user.key, -1)
|
||||
}
|
||||
|
||||
|
|
|
@ -4,11 +4,14 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.sqliteqb.library.Expression
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -21,16 +24,30 @@ import org.mariotaku.twidere.util.Utils
|
|||
class DestroyFriendshipTask(context: Context) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.UNFOLLOW) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments): User {
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.FANFOU -> {
|
||||
return twitter.destroyFanfouFriendship(args.userKey.id)
|
||||
val fanfou = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return fanfou.destroyFanfouFriendship(args.userKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Unfollow remote user is not supported yet")
|
||||
}
|
||||
mastodon.unfollowUser(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.destroyFriendship(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
return twitter.destroyFriendship(args.userKey.id)
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog, details: AccountDetails, args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails, args: Arguments, user: ParcelableUser) {
|
||||
user.is_following = false
|
||||
Utils.setLastSeen(context, user.key, -1)
|
||||
val where = Expression.and(Expression.equalsArgs(Statuses.ACCOUNT_KEY),
|
||||
|
|
|
@ -5,10 +5,13 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -20,19 +23,32 @@ import org.mariotaku.twidere.provider.TwidereDataStore.CachedRelationships
|
|||
class DestroyUserBlockTask(context: Context) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.UNBLOCK) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments): User {
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Unblock remote user is not supported yet")
|
||||
}
|
||||
mastodon.unblockUser(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
AccountType.FANFOU -> {
|
||||
return twitter.destroyFanfouBlock(args.userKey.id)
|
||||
val fanfou = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return fanfou.destroyFanfouBlock(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.destroyBlock(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
return twitter.destroyBlock(args.userKey.id)
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog,
|
||||
details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails,
|
||||
args: Arguments,
|
||||
user: ParcelableUser) {
|
||||
val resolver = context.contentResolver
|
||||
// I bet you don't want to see this user in your auto complete list.
|
||||
val values = ContentValues()
|
||||
|
|
|
@ -5,9 +5,14 @@ import android.content.Context
|
|||
import android.widget.Toast
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.exception.APINotSupportedException
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
||||
|
@ -19,14 +24,28 @@ import org.mariotaku.twidere.provider.TwidereDataStore.CachedRelationships
|
|||
class DestroyUserMuteTask(context: Context) : AbsFriendshipOperationTask(context, FriendshipTaskEvent.Action.UNMUTE) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments): User {
|
||||
return twitter.destroyMute(args.userKey.id)
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.TWITTER -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.destroyMute(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
AccountType.MASTODON -> {
|
||||
val mastodon = details.newMicroBlogInstance(context, Mastodon::class.java)
|
||||
if (details.key.host != args.userKey.host) {
|
||||
throw MicroBlogException("Unmute remote user is not supported yet")
|
||||
}
|
||||
mastodon.unmuteUser(args.userKey.id)
|
||||
return mastodon.getAccount(args.userKey.id).toParcelable(details)
|
||||
}
|
||||
else -> throw APINotSupportedException(details.type)
|
||||
}
|
||||
}
|
||||
|
||||
override fun succeededWorker(twitter: MicroBlog,
|
||||
details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments, user: ParcelableUser) {
|
||||
override fun succeededWorker(details: AccountDetails,
|
||||
args: Arguments,
|
||||
user: ParcelableUser) {
|
||||
val resolver = context.contentResolver
|
||||
// I bet you don't want to see this user in your auto complete list.
|
||||
val values = ContentValues()
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package org.mariotaku.twidere.task
|
||||
|
||||
import android.content.Context
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.User
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.exception.APINotSupportedException
|
||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 16/3/11.
|
||||
|
@ -13,8 +16,16 @@ import org.mariotaku.twidere.model.AccountDetails
|
|||
class ReportSpamAndBlockTask(context: Context) : CreateUserBlockTask(context) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun perform(twitter: MicroBlog, details: AccountDetails,
|
||||
args: AbsFriendshipOperationTask.Arguments): User {
|
||||
return twitter.reportSpam(args.userKey.id)
|
||||
override fun perform(details: AccountDetails, args: Arguments): ParcelableUser {
|
||||
when (details.type) {
|
||||
AccountType.MASTODON -> {
|
||||
throw APINotSupportedException(details.type)
|
||||
}
|
||||
else -> {
|
||||
val twitter = details.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||
return twitter.reportSpam(args.accountKey.id).toParcelable(details,
|
||||
profileImageSize = profileImageSize)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ import org.mariotaku.twidere.constant.homeRefreshDirectMessagesKey
|
|||
import org.mariotaku.twidere.constant.homeRefreshMentionsKey
|
||||
import org.mariotaku.twidere.constant.homeRefreshSavedSearchesKey
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.api.microblog.toParcelable
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.*
|
||||
|
|
Loading…
Reference in New Issue