supports add participants

This commit is contained in:
Mariotaku Lee 2017-02-26 16:09:10 +08:00
parent 09b033fb06
commit 829ed47e5b
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
4 changed files with 30 additions and 8 deletions

View File

@ -43,7 +43,7 @@ public class EditTextEnterHandler implements View.OnKeyListener, OnEditorActionL
private ArrayList<TextWatcher> textWatchers;
private boolean appendText;
public EditTextEnterHandler(@Nullable EnterListener listener, boolean enabled) {
EditTextEnterHandler(@Nullable EnterListener listener, boolean enabled) {
this.listener = listener;
this.enabled = enabled;
}

View File

@ -40,6 +40,7 @@ import org.mariotaku.twidere.constant.IntentConstants.*
import org.mariotaku.twidere.loader.CacheUserSearchLoader
import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.util.EditTextEnterHandler
import org.mariotaku.twidere.util.ParseUtils
import org.mariotaku.twidere.util.view.SimpleTextWatcher
@ -60,11 +61,25 @@ class UserSelectorActivity : BaseActivity(), OnItemClickListener, LoaderManager.
}
setContentView(R.layout.activity_user_selector)
editScreenName.addTextChangedListener(object : SimpleTextWatcher {
val enterHandler = EditTextEnterHandler.attach(editScreenName, object : EditTextEnterHandler.EnterListener {
override fun onHitEnter(): Boolean {
val screenName = ParseUtils.parseString(editScreenName.text)
searchUser(accountKey, screenName, false)
return true
}
override fun shouldCallListener(): Boolean {
return true
}
}, true)
enterHandler.addTextChangedListener(object : SimpleTextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
searchUser(accountKey, s.toString(), true)
}
})
screenNameConfirm.setOnClickListener {
val screenName = ParseUtils.parseString(editScreenName.text)
searchUser(accountKey, screenName, false)

View File

@ -245,7 +245,9 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment,
val task = AddParticipantsTask(context, accountKey, conversationId, listOf(user))
task.callback = callback@ { succeed ->
val f = weakThis.get() ?: return@callback
f.dismissAlertDialogThen("add_participant_progress") {}
f.dismissAlertDialogThen("add_participant_progress") {
loaderManager.restartLoader(0, null, this@MessageConversationInfoFragment)
}
}
TaskStarter.execute(task)
}
@ -257,9 +259,7 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment,
task.callback = callback@ { succeed ->
val f = weakThis.get() ?: return@callback
f.dismissAlertDialogThen("set_notifications_disabled_progress") {
if (!succeed) {
adapter.notifyDataSetChanged()
}
loaderManager.restartLoader(0, null, this@MessageConversationInfoFragment)
}
}
TaskStarter.execute(task)

View File

@ -28,6 +28,7 @@ import org.mariotaku.twidere.extension.model.addParticipants
import org.mariotaku.twidere.extension.model.isOfficial
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
import org.mariotaku.twidere.model.AccountDetails
import org.mariotaku.twidere.model.ParcelableMessageConversation
import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.model.util.AccountUtils
@ -52,10 +53,12 @@ class AddParticipantsTask(
val addData = GetMessagesTask.DatabaseUpdateData(listOf(conversation), emptyList())
conversation.addParticipants(participants)
GetMessagesTask.storeMessages(context, addData, account, showNotification = false)
// Don't finish too fast
Thread.sleep(300L)
return true
}
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
val addData = requestAddParticipants(microBlog, account)
val addData = requestAddParticipants(microBlog, account, conversation)
GetMessagesTask.storeMessages(context, addData, account, showNotification = false)
return true
}
@ -64,13 +67,17 @@ class AddParticipantsTask(
callback?.invoke(result ?: false)
}
private fun requestAddParticipants(microBlog: MicroBlog, account: AccountDetails):
private fun requestAddParticipants(microBlog: MicroBlog, account: AccountDetails, conversation: ParcelableMessageConversation?):
GetMessagesTask.DatabaseUpdateData {
when (account.type) {
AccountType.TWITTER -> {
if (account.isOfficial(context)) {
val ids = participants.map { it.key.id }.toTypedArray()
val response = microBlog.addParticipants(conversationId, ids)
if (conversation != null) {
conversation.addParticipants(participants)
return GetMessagesTask.DatabaseUpdateData(listOf(conversation), emptyList())
}
return GetMessagesTask.createDatabaseUpdateData(context, account, response)
}
}