1
0
mirror of https://github.com/TwidereProject/Twidere-Android synced 2025-02-16 19:50:53 +01:00

Fix direct message send failed

This commit is contained in:
Tlaster 2020-04-14 14:59:59 +08:00
parent e07fbca1a7
commit 3d0d574985
3 changed files with 16 additions and 4 deletions

View File

@ -44,4 +44,6 @@ public interface DirectMessagesEventResources {
@GET("/direct_messages/events/list.json")
PageableResponseList<DirectMessageEventObject.Event> getDirectMessageList(@Query int count, @Query Paging paging) throws MicroBlogException;
@GET("/direct_messages/events/show.json")
DirectMessageEventObject showDirectMessageEvent(@Query("id") String id) throws MicroBlogException;
}

View File

@ -60,6 +60,4 @@ public interface DirectMessagesResources {
DirectMessage sendDirectMessageToScreenName(@Param("screen_name") String screenName, @Param("text") String text,
@Param("media_id") String mediaId) throws MicroBlogException;
@GET("/direct_messages/show.json")
DirectMessage showDirectMessage(@Query("id") String id) throws MicroBlogException;
}

View File

@ -33,6 +33,7 @@ import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.extension.model.api.*
import org.mariotaku.twidere.extension.model.isOfficial
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
import org.mariotaku.twidere.extension.set
import org.mariotaku.twidere.model.AccountDetails
import org.mariotaku.twidere.model.ParcelableMedia
import org.mariotaku.twidere.model.ParcelableMessageConversation
@ -42,9 +43,9 @@ import org.mariotaku.twidere.model.util.ParcelableMessageUtils
import org.mariotaku.twidere.provider.TwidereDataStore.Messages.Conversations
import org.mariotaku.twidere.task.ExceptionHandlingAbstractTask
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask.Companion.addConversation
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask.Companion.addLocalConversations
import java.util.*
/**
* Created by mariotaku on 2017/2/8.
@ -169,7 +170,18 @@ class SendMessageTask(
}
return@uploadMediaThen microBlog.newDirectMessageEvent(obj)
}
return createDatabaseUpdateData(account, microBlog.showDirectMessage(response.event.id))
val responseEvent = microBlog.showDirectMessageEvent(response.event.id)
val possibleUserId = arrayOf(responseEvent.event.messageCreate.senderId, responseEvent.event.messageCreate .target.recipientId)
val users = microBlog.lookupUsers(possibleUserId)
val dm = DirectMessage().also { directMessage ->
directMessage[DirectMessage::class.java.getDeclaredField("text")] = responseEvent.event.messageCreate.messageData.text
directMessage[DirectMessage::class.java.getDeclaredField("id")] = responseEvent.event.id
directMessage[DirectMessage::class.java.getDeclaredField("sender")] = users.firstOrNull { user -> responseEvent.event.messageCreate.senderId == user.id }
directMessage[DirectMessage::class.java.getDeclaredField("recipient")] = users.firstOrNull { user -> responseEvent.event.messageCreate.target.recipientId == user.id }
directMessage[DirectMessage::class.java.getDeclaredField("createdAt")] = Date(responseEvent.event.createdTimestamp.toLong())
}
return createDatabaseUpdateData(account, dm)
}
private fun sendFanfouDM(microBlog: MicroBlog, account: AccountDetails, message: ParcelableNewMessage): GetMessagesTask.DatabaseUpdateData {