supports add participants
This commit is contained in:
parent
09b033fb06
commit
829ed47e5b
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue