This commit is contained in:
Mariotaku Lee 2017-06-20 13:18:46 +08:00
parent 69411b3dd0
commit 265daecbdc
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
4 changed files with 21 additions and 39 deletions

View File

@ -22,7 +22,7 @@ package org.mariotaku.twidere.model.event;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import org.mariotaku.microblog.library.twitter.model.Relationship;
import org.mariotaku.twidere.model.ParcelableRelationship;
import org.mariotaku.twidere.model.UserKey;
/**
@ -35,9 +35,9 @@ public class FriendshipUpdatedEvent {
@NonNull
UserKey userKey;
@NonNull
Relationship relationship;
ParcelableRelationship relationship;
public FriendshipUpdatedEvent(@NonNull UserKey accountKey, @NonNull UserKey userKey, @NonNull Relationship relationship) {
public FriendshipUpdatedEvent(@NonNull UserKey accountKey, @NonNull UserKey userKey, @NonNull ParcelableRelationship relationship) {
this.accountKey = accountKey;
this.userKey = userKey;
this.relationship = relationship;
@ -54,7 +54,7 @@ public class FriendshipUpdatedEvent {
}
@NonNull
public Relationship getRelationship() {
public ParcelableRelationship getRelationship() {
return relationship;
}

View File

@ -1697,8 +1697,11 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
val userKey = user.key
val isFiltering = DataStoreUtils.isFilteringUser(context, userKey)
if (accountKey == user.key) {
return SingleResponse(ParcelableRelationshipUtils.create(accountKey, userKey,
null, isFiltering))
return SingleResponse(ParcelableRelationship().apply {
account_key = accountKey
user_key = userKey
filtering = isFiltering
})
}
val details = AccountUtils.getAccountDetails(AccountManager.get(context),
accountKey, true) ?: return SingleResponse(MicroBlogException("No Account"))

View File

@ -21,7 +21,6 @@ package org.mariotaku.twidere.model.util
import android.content.ContentResolver
import android.support.v4.util.ArraySet
import org.mariotaku.microblog.library.twitter.model.Relationship
import org.mariotaku.microblog.library.twitter.model.User
import org.mariotaku.sqliteqb.library.Expression
import org.mariotaku.twidere.extension.bulkInsert
@ -33,25 +32,6 @@ import org.mariotaku.twidere.util.updateItems
object ParcelableRelationshipUtils {
fun create(accountKey: UserKey, userKey: UserKey, relationship: Relationship?,
filtering: Boolean = false): ParcelableRelationship {
val obj = ParcelableRelationship()
obj.account_key = accountKey
obj.user_key = userKey
if (relationship != null) {
obj.following = relationship.isSourceFollowingTarget
obj.followed_by = relationship.isSourceFollowedByTarget
obj.blocking = relationship.isSourceBlockingTarget
obj.blocked_by = relationship.isSourceBlockedByTarget
obj.muting = relationship.isSourceMutingTarget
obj.retweet_enabled = relationship.isSourceWantRetweetsFromTarget
obj.notifications_enabled = relationship.isSourceNotificationsEnabledForTarget
obj.can_dm = relationship.canSourceDMTarget()
}
obj.filtering = filtering
return obj
}
fun create(user: ParcelableUser, filtering: Boolean): ParcelableRelationship {
val obj = ParcelableRelationship()
obj.account_key = user.account_key

View File

@ -34,7 +34,10 @@ import org.mariotaku.ktextension.mapToArray
import org.mariotaku.ktextension.toNulls
import org.mariotaku.microblog.library.MicroBlog
import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.twitter.model.*
import org.mariotaku.microblog.library.twitter.model.FriendshipUpdate
import org.mariotaku.microblog.library.twitter.model.SavedSearch
import org.mariotaku.microblog.library.twitter.model.UserList
import org.mariotaku.microblog.library.twitter.model.UserListUpdate
import org.mariotaku.sqliteqb.library.Expression
import org.mariotaku.twidere.R
import org.mariotaku.twidere.TwidereConstants
@ -336,16 +339,13 @@ class AsyncTwitterWrapper(
}
fun updateFriendship(accountKey: UserKey, userKey: UserKey, update: FriendshipUpdate) {
TaskStarter.execute(object : ExceptionHandlingAbstractTask<Any?, Relationship, Exception, Any>(context) {
override val exceptionClass = Exception::class.java
TaskStarter.execute(object : AbsAccountRequestTask<Any?, ParcelableRelationship, Any>(context, accountKey) {
override fun onExecute(params: Any?): Relationship {
val microBlog = MicroBlogAPIFactory.getInstance(context, accountKey)
?: throw MicroBlogException("No account")
val relationship = microBlog.updateFriendship(userKey.id, update)
override fun onExecute(account: AccountDetails, params: Any?): ParcelableRelationship {
val microBlog = account.newMicroBlogInstance(context, MicroBlog::class.java)
val relationship = microBlog.updateFriendship(userKey.id, update).toParcelable(accountKey, userKey)
val cr = context.contentResolver
if (!relationship.isSourceWantRetweetsFromTarget) {
// TODO remove cached retweets
if (update["retweets"] == false) {
val where = Expression.and(
Expression.equalsArgs(Statuses.ACCOUNT_KEY),
Expression.equalsArgs(Statuses.RETWEETED_BY_USER_KEY)
@ -354,16 +354,15 @@ class AsyncTwitterWrapper(
cr.delete(Statuses.CONTENT_URI, where.sql, selectionArgs)
}
ParcelableRelationshipUtils.insert(cr, listOf(ParcelableRelationshipUtils
.create(accountKey, userKey, relationship)))
ParcelableRelationshipUtils.insert(cr, listOf(relationship))
return relationship
}
override fun onSucceed(callback: Any?, result: Relationship) {
override fun onSucceed(callback: Any?, result: ParcelableRelationship) {
bus.post(FriendshipUpdatedEvent(accountKey, userKey, result))
}
override fun onException(callback: Any?, exception: Exception) {
override fun onException(callback: Any?, exception: MicroBlogException) {
if (exception !is MicroBlogException) {
Analyzer.logException(exception)
return