Hide option to mute own domain from account profile page (it is a no-op). (#3937)
Muting your own server domain is a no-op. Check for this case, and remove the "mute" menu item if true. Fixes #3798
This commit is contained in:
parent
b6102a755a
commit
c7ffc6ad93
|
@ -772,13 +772,16 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
|
||||||
loadedAccount?.let { loadedAccount ->
|
loadedAccount?.let { loadedAccount ->
|
||||||
val muteDomain = menu.findItem(R.id.action_mute_domain)
|
val muteDomain = menu.findItem(R.id.action_mute_domain)
|
||||||
domain = getDomain(loadedAccount.url)
|
domain = getDomain(loadedAccount.url)
|
||||||
if (domain.isEmpty()) {
|
when {
|
||||||
// If we can't get the domain, there's no way we can mute it anyway...
|
// If we can't get the domain, there's no way we can mute it anyway...
|
||||||
menu.removeItem(R.id.action_mute_domain)
|
// If the account is from our own domain, muting it is no-op
|
||||||
} else {
|
domain.isEmpty() || viewModel.isFromOwnDomain -> {
|
||||||
if (blockingDomain) {
|
menu.removeItem(R.id.action_mute_domain)
|
||||||
|
}
|
||||||
|
blockingDomain -> {
|
||||||
muteDomain.title = getString(R.string.action_unmute_domain, domain)
|
muteDomain.title = getString(R.string.action_unmute_domain, domain)
|
||||||
} else {
|
}
|
||||||
|
else -> {
|
||||||
muteDomain.title = getString(R.string.action_mute_domain, domain)
|
muteDomain.title = getString(R.string.action_mute_domain, domain)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import com.keylesspalace.tusky.util.Error
|
||||||
import com.keylesspalace.tusky.util.Loading
|
import com.keylesspalace.tusky.util.Loading
|
||||||
import com.keylesspalace.tusky.util.Resource
|
import com.keylesspalace.tusky.util.Resource
|
||||||
import com.keylesspalace.tusky.util.Success
|
import com.keylesspalace.tusky.util.Success
|
||||||
|
import com.keylesspalace.tusky.util.getDomain
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -27,7 +28,7 @@ import javax.inject.Inject
|
||||||
class AccountViewModel @Inject constructor(
|
class AccountViewModel @Inject constructor(
|
||||||
private val mastodonApi: MastodonApi,
|
private val mastodonApi: MastodonApi,
|
||||||
private val eventHub: EventHub,
|
private val eventHub: EventHub,
|
||||||
private val accountManager: AccountManager
|
accountManager: AccountManager
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
val accountData = MutableLiveData<Resource<Account>>()
|
val accountData = MutableLiveData<Resource<Account>>()
|
||||||
|
@ -41,8 +42,13 @@ class AccountViewModel @Inject constructor(
|
||||||
lateinit var accountId: String
|
lateinit var accountId: String
|
||||||
var isSelf = false
|
var isSelf = false
|
||||||
|
|
||||||
|
/** True if the viewed account has the same domain as the active account */
|
||||||
|
var isFromOwnDomain = false
|
||||||
|
|
||||||
private var noteUpdateJob: Job? = null
|
private var noteUpdateJob: Job? = null
|
||||||
|
|
||||||
|
private val activeAccount = accountManager.activeAccount!!
|
||||||
|
|
||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
eventHub.events.collect { event ->
|
eventHub.events.collect { event ->
|
||||||
|
@ -65,6 +71,8 @@ class AccountViewModel @Inject constructor(
|
||||||
accountData.postValue(Success(account))
|
accountData.postValue(Success(account))
|
||||||
isDataLoading = false
|
isDataLoading = false
|
||||||
isRefreshing.postValue(false)
|
isRefreshing.postValue(false)
|
||||||
|
|
||||||
|
isFromOwnDomain = getDomain(account.url) == activeAccount.domain
|
||||||
},
|
},
|
||||||
{ t ->
|
{ t ->
|
||||||
Log.w(TAG, "failed obtaining account", t)
|
Log.w(TAG, "failed obtaining account", t)
|
||||||
|
@ -298,7 +306,7 @@ class AccountViewModel @Inject constructor(
|
||||||
|
|
||||||
fun setAccountInfo(accountId: String) {
|
fun setAccountInfo(accountId: String) {
|
||||||
this.accountId = accountId
|
this.accountId = accountId
|
||||||
this.isSelf = accountManager.activeAccount?.accountId == accountId
|
this.isSelf = activeAccount.accountId == accountId
|
||||||
reload(false)
|
reload(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue