mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-16 19:50:53 +01:00
fixed DM account selection
This commit is contained in:
parent
6adecffe57
commit
4341e53696
@ -80,6 +80,7 @@ public interface IntentConstants {
|
||||
String EXTRA_ACCOUNT_KEY = "account_key";
|
||||
String EXTRA_ACCOUNT_HOST = "account_host";
|
||||
String EXTRA_ACCOUNT_TYPE = "account_type";
|
||||
String EXTRA_ACCOUNT_TYPES = "account_types";
|
||||
String EXTRA_ACCOUNT_KEYS = "account_keys";
|
||||
String EXTRA_PAGE = "page";
|
||||
String EXTRA_DATA = "data";
|
||||
|
@ -60,8 +60,17 @@ class AccountSelectorActivity : BaseActivity(), OnItemClickListener {
|
||||
private val accountHost: String?
|
||||
get() = intent.getStringExtra(EXTRA_ACCOUNT_HOST)
|
||||
|
||||
private val accountType: String?
|
||||
get() = intent.getStringExtra(EXTRA_ACCOUNT_TYPE)
|
||||
private val accountTypes: Array<String>?
|
||||
get() {
|
||||
var types = intent.getStringArrayExtra(EXTRA_ACCOUNT_TYPES)
|
||||
if (types == null) {
|
||||
val type = intent.getStringExtra(EXTRA_ACCOUNT_TYPE)
|
||||
if (type != null) {
|
||||
types = arrayOf(type)
|
||||
}
|
||||
}
|
||||
return types
|
||||
}
|
||||
|
||||
private val isSelectNoneAllowed: Boolean
|
||||
get() = intent.getBooleanExtra(EXTRA_ALLOW_SELECT_NONE, false)
|
||||
@ -94,21 +103,21 @@ class AccountSelectorActivity : BaseActivity(), OnItemClickListener {
|
||||
val extraKeys = onlyIncludeKeys
|
||||
val oauthOnly = isOAuthOnly
|
||||
val accountHost = accountHost
|
||||
val accountType = accountType
|
||||
val matchedAccounts = allAccountDetails.filter {
|
||||
if (extraKeys != null) {
|
||||
return@filter extraKeys.contains(it.key)
|
||||
val accountTypes = accountTypes
|
||||
val matchedAccounts = allAccountDetails.filter { account ->
|
||||
if (extraKeys != null && !extraKeys.contains(account.key)) {
|
||||
return@filter false
|
||||
}
|
||||
if (oauthOnly && !it.isOAuth) {
|
||||
if (oauthOnly && !account.isOAuth) {
|
||||
return@filter false
|
||||
}
|
||||
if (USER_TYPE_TWITTER_COM == accountHost) {
|
||||
if (it.key.host != null && it.type != AccountType.TWITTER) return@filter false
|
||||
} else if (accountHost != null && accountType == AccountType.MASTODON) {
|
||||
if (accountHost != it.key.host) return@filter false
|
||||
if (account.key.host != null && account.type != AccountType.TWITTER) return@filter false
|
||||
} else if (accountHost != null && accountTypes?.singleOrNull() == AccountType.MASTODON) {
|
||||
if (accountHost != account.key.host) return@filter false
|
||||
}
|
||||
if (accountType != null) {
|
||||
if (accountType != it.type) return@filter false
|
||||
if (accountTypes != null && accountTypes.none { it == account.type }) {
|
||||
return@filter false
|
||||
}
|
||||
return@filter true
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
package org.mariotaku.twidere.fragment.message
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
@ -43,6 +44,9 @@ import org.mariotaku.twidere.activity.AccountSelectorActivity
|
||||
import org.mariotaku.twidere.adapter.MessagesEntriesAdapter
|
||||
import org.mariotaku.twidere.adapter.MessagesEntriesAdapter.MessageConversationClickListener
|
||||
import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_TYPES
|
||||
import org.mariotaku.twidere.constant.nameFirstKey
|
||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||
import org.mariotaku.twidere.extension.model.getTitle
|
||||
@ -96,6 +100,19 @@ class MessagesEntriesFragment : AbsContentListRecyclerViewFragment<MessagesEntri
|
||||
super.onStop()
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
when (requestCode) {
|
||||
REQUEST_SELECT_ACCOUNT -> {
|
||||
if (resultCode != Activity.RESULT_OK) return
|
||||
val accountKey = data!!.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
startActivity(IntentUtils.newMessageConversation(accountKey))
|
||||
}
|
||||
else -> {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<ParcelableMessageConversation>?> {
|
||||
val loader = ObjectCursorLoader(context, ParcelableMessageConversation::class.java)
|
||||
val projection = (Conversations.COLUMNS + Conversations.UNREAD_COUNT).map {
|
||||
@ -181,6 +198,8 @@ class MessagesEntriesFragment : AbsContentListRecyclerViewFragment<MessagesEntri
|
||||
val accountKey = accountKeys.singleOrNull() ?: run {
|
||||
val selectIntent = Intent(context, AccountSelectorActivity::class.java)
|
||||
selectIntent.putExtra(EXTRA_ACCOUNT_KEYS, accountKeys)
|
||||
selectIntent.putExtra(EXTRA_ACCOUNT_TYPES, arrayOf(AccountType.TWITTER,
|
||||
AccountType.FANFOU))
|
||||
startActivityForResult(selectIntent, REQUEST_SELECT_ACCOUNT)
|
||||
return true
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user