diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 232bf491c..f88f1fc80 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -148,7 +148,7 @@
-
+
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksActivity.kt
similarity index 78%
rename from app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt
rename to app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksActivity.kt
index 667360c53..618174907 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksActivity.kt
@@ -1,15 +1,14 @@
-package com.keylesspalace.tusky.components.instancemute
+package com.keylesspalace.tusky.components.domainblocks
import android.os.Bundle
import com.keylesspalace.tusky.BaseActivity
import com.keylesspalace.tusky.R
-import com.keylesspalace.tusky.components.instancemute.fragment.InstanceListFragment
import com.keylesspalace.tusky.databinding.ActivityAccountListBinding
import dagger.android.DispatchingAndroidInjector
import dagger.android.HasAndroidInjector
import javax.inject.Inject
-class InstanceListActivity : BaseActivity(), HasAndroidInjector {
+class DomainBlocksActivity : BaseActivity(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector
@@ -28,7 +27,7 @@ class InstanceListActivity : BaseActivity(), HasAndroidInjector {
supportFragmentManager
.beginTransaction()
- .replace(R.id.fragment_container, InstanceListFragment())
+ .replace(R.id.fragment_container, DomainBlocksFragment())
.commit()
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksAdapter.kt
similarity index 92%
rename from app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt
rename to app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksAdapter.kt
index e4f15d54b..a4b21fc79 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksAdapter.kt
@@ -1,4 +1,4 @@
-package com.keylesspalace.tusky.components.instancemute.adapter
+package com.keylesspalace.tusky.components.domainblocks
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -7,7 +7,7 @@ import com.keylesspalace.tusky.components.followedtags.FollowedTagsAdapter.Compa
import com.keylesspalace.tusky.databinding.ItemMutedDomainBinding
import com.keylesspalace.tusky.util.BindingHolder
-class DomainMutesAdapter(
+class DomainBlocksAdapter(
private val onUnmute: (String) -> Unit
) : PagingDataAdapter>(STRING_COMPARATOR) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksFragment.kt
similarity index 68%
rename from app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt
rename to app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksFragment.kt
index 71e1a0482..9d2d8686c 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksFragment.kt
@@ -1,4 +1,4 @@
-package com.keylesspalace.tusky.components.instancemute.fragment
+package com.keylesspalace.tusky.components.domainblocks
import android.os.Bundle
import android.util.Log
@@ -11,11 +11,7 @@ import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.keylesspalace.tusky.R
-import com.keylesspalace.tusky.components.followedtags.FollowedTagsActivity
-import com.keylesspalace.tusky.components.instancemute.InstanceMuteEvent
-import com.keylesspalace.tusky.components.instancemute.InstanceMuteViewModel
-import com.keylesspalace.tusky.components.instancemute.adapter.DomainMutesAdapter
-import com.keylesspalace.tusky.databinding.FragmentInstanceListBinding
+import com.keylesspalace.tusky.databinding.FragmentDomainBlocksBinding
import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.util.hide
@@ -26,17 +22,17 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import javax.inject.Inject
-class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectable {
+class DomainBlocksFragment : Fragment(R.layout.fragment_domain_blocks), Injectable {
@Inject
lateinit var viewModelFactory: ViewModelFactory
- private val binding by viewBinding(FragmentInstanceListBinding::bind)
+ private val binding by viewBinding(FragmentDomainBlocksBinding::bind)
- private val viewModel: InstanceMuteViewModel by viewModels { viewModelFactory }
+ private val viewModel: DomainBlocksViewModel by viewModels { viewModelFactory }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- val adapter = DomainMutesAdapter(viewModel::unmute)
+ val adapter = DomainBlocksAdapter(viewModel::unblock)
binding.recyclerView.setHasFixedSize(true)
binding.recyclerView.addItemDecoration(DividerItemDecoration(view.context, DividerItemDecoration.VERTICAL))
@@ -46,9 +42,9 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
viewLifecycleOwner.lifecycleScope.launch {
viewModel.uiEvents.collect { event ->
when (event) {
- is InstanceMuteEvent.UnmuteError -> showUnmuteError(event.domain)
- is InstanceMuteEvent.MuteError -> showMuteError(event.domain)
- is InstanceMuteEvent.UnmuteSuccess -> showUnmuteSuccess(event.domain)
+ is DomainBlockEvent.UnblockError -> showUnmuteError(event.domain)
+ is DomainBlockEvent.BlockError -> showMuteError(event.domain)
+ is DomainBlockEvent.BlockSuccess -> showUnmuteSuccess(event.domain)
}
}
}
@@ -60,14 +56,14 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
}
adapter.addLoadStateListener { loadState ->
- binding.instanceProgressBar.visible(loadState.refresh == LoadState.Loading && adapter.itemCount == 0)
+ binding.progressBar.visible(loadState.refresh == LoadState.Loading && adapter.itemCount == 0)
if (loadState.refresh is LoadState.Error) {
binding.recyclerView.hide()
binding.messageView.show()
val errorState = loadState.refresh as LoadState.Error
binding.messageView.setup(errorState.error) { adapter.retry() }
- Log.w(FollowedTagsActivity.TAG, "error loading followed hashtags", errorState.error)
+ Log.w(TAG, "error loading blocked domains", errorState.error)
} else if (loadState.refresh is LoadState.NotLoading && adapter.itemCount == 0) {
binding.recyclerView.hide()
binding.messageView.show()
@@ -81,23 +77,23 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
private fun showUnmuteError(domain: String) {
showSnackbar(
- getString(R.string.error_unmuting_domain, domain),
+ getString(R.string.error_unblocking_domain, domain),
R.string.action_retry
- ) { viewModel.unmute(domain) }
+ ) { viewModel.unblock(domain) }
}
private fun showMuteError(domain: String) {
showSnackbar(
- getString(R.string.error_muting_domain, domain),
+ getString(R.string.error_blocking_domain, domain),
R.string.action_retry
- ) { viewModel.mute(domain) }
+ ) { viewModel.block(domain) }
}
private fun showUnmuteSuccess(domain: String) {
showSnackbar(
getString(R.string.confirmation_domain_unmuted, domain),
R.string.action_undo
- ) { viewModel.mute(domain) }
+ ) { viewModel.block(domain) }
}
private fun showSnackbar(message: String, actionText: Int, action: (View) -> Unit) {
@@ -105,4 +101,8 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
.setAction(actionText, action)
.show()
}
+
+ companion object {
+ private const val TAG = "DomainBlocksFragment"
+ }
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMutePagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksPagingSource.kt
similarity index 73%
rename from app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMutePagingSource.kt
rename to app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksPagingSource.kt
index e61617e6a..a0c1c5b54 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMutePagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksPagingSource.kt
@@ -1,9 +1,9 @@
-package com.keylesspalace.tusky.components.instancemute
+package com.keylesspalace.tusky.components.domainblocks
import androidx.paging.PagingSource
import androidx.paging.PagingState
-class InstanceMutePagingSource(private val viewModel: InstanceMuteViewModel) : PagingSource() {
+class DomainBlocksPagingSource(private val viewModel: DomainBlocksViewModel) : PagingSource() {
override fun getRefreshKey(state: PagingState): String? = null
override suspend fun load(params: LoadParams): LoadResult {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMuteRemoteMediator.kt b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksRemoteMediator.kt
similarity index 92%
rename from app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMuteRemoteMediator.kt
rename to app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksRemoteMediator.kt
index 62ac91b72..ecbb61104 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMuteRemoteMediator.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksRemoteMediator.kt
@@ -1,4 +1,4 @@
-package com.keylesspalace.tusky.components.instancemute
+package com.keylesspalace.tusky.components.domainblocks
import androidx.paging.ExperimentalPagingApi
import androidx.paging.LoadType
@@ -10,9 +10,9 @@ import retrofit2.HttpException
import retrofit2.Response
@OptIn(ExperimentalPagingApi::class)
-class InstanceMuteRemoteMediator(
+class DomainBlocksRemoteMediator(
private val api: MastodonApi,
- private val viewModel: InstanceMuteViewModel
+ private val viewModel: DomainBlocksViewModel
) : RemoteMediator() {
override suspend fun load(
loadType: LoadType,
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMuteViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksViewModel.kt
similarity index 57%
rename from app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMuteViewModel.kt
rename to app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksViewModel.kt
index 84444d793..c70fa5077 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceMuteViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/domainblocks/DomainBlocksViewModel.kt
@@ -1,4 +1,4 @@
-package com.keylesspalace.tusky.components.instancemute
+package com.keylesspalace.tusky.components.domainblocks
import android.util.Log
import androidx.lifecycle.ViewModel
@@ -13,20 +13,20 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
import javax.inject.Inject
-class InstanceMuteViewModel @Inject constructor(
+class DomainBlocksViewModel @Inject constructor(
private val api: MastodonApi
) : ViewModel() {
val domains: MutableList = mutableListOf()
- val uiEvents = MutableSharedFlow()
+ val uiEvents = MutableSharedFlow()
var nextKey: String? = null
- var currentSource: InstanceMutePagingSource? = null
+ var currentSource: DomainBlocksPagingSource? = null
@OptIn(ExperimentalPagingApi::class)
val pager = Pager(
config = PagingConfig(pageSize = 20),
- remoteMediator = InstanceMuteRemoteMediator(api, this),
+ remoteMediator = DomainBlocksRemoteMediator(api, this),
pagingSourceFactory = {
- InstanceMutePagingSource(
+ DomainBlocksPagingSource(
viewModel = this
).also { source ->
currentSource = source
@@ -34,38 +34,38 @@ class InstanceMuteViewModel @Inject constructor(
}
).flow.cachedIn(viewModelScope)
- fun mute(domain: String) {
+ fun block(domain: String) {
viewModelScope.launch {
api.blockDomain(domain).fold({
domains.add(domain)
currentSource?.invalidate()
}, { e ->
- Log.w(TAG, "Error muting domain $domain", e)
- uiEvents.emit(InstanceMuteEvent.MuteError(domain))
+ Log.w(TAG, "Error blocking domain $domain", e)
+ uiEvents.emit(DomainBlockEvent.BlockError(domain))
})
}
}
- fun unmute(domain: String) {
+ fun unblock(domain: String) {
viewModelScope.launch {
api.unblockDomain(domain).fold({
domains.remove(domain)
currentSource?.invalidate()
- uiEvents.emit(InstanceMuteEvent.UnmuteSuccess(domain))
+ uiEvents.emit(DomainBlockEvent.BlockSuccess(domain))
}, { e ->
- Log.w(TAG, "Error unmuting domain $domain", e)
- uiEvents.emit(InstanceMuteEvent.UnmuteError(domain))
+ Log.w(TAG, "Error unblocking domain $domain", e)
+ uiEvents.emit(DomainBlockEvent.UnblockError(domain))
})
}
}
companion object {
- private const val TAG = "InstanceMuteViewModel"
+ private const val TAG = "DomainBlocksViewModel"
}
}
-sealed class InstanceMuteEvent {
- data class UnmuteSuccess(val domain: String) : InstanceMuteEvent()
- data class UnmuteError(val domain: String) : InstanceMuteEvent()
- data class MuteError(val domain: String) : InstanceMuteEvent()
+sealed class DomainBlockEvent {
+ data class BlockSuccess(val domain: String) : DomainBlockEvent()
+ data class UnblockError(val domain: String) : DomainBlockEvent()
+ data class BlockError(val domain: String) : DomainBlockEvent()
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/AccountPreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/AccountPreferencesFragment.kt
index b0fedb2b1..629c3709d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/AccountPreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/AccountPreferencesFragment.kt
@@ -30,9 +30,9 @@ import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.TabPreferenceActivity
import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.components.accountlist.AccountListActivity
+import com.keylesspalace.tusky.components.domainblocks.DomainBlocksActivity
import com.keylesspalace.tusky.components.filters.FiltersActivity
import com.keylesspalace.tusky.components.followedtags.FollowedTagsActivity
-import com.keylesspalace.tusky.components.instancemute.InstanceListActivity
import com.keylesspalace.tusky.components.login.LoginActivity
import com.keylesspalace.tusky.components.notifications.currentAccountNeedsMigration
import com.keylesspalace.tusky.db.AccountManager
@@ -156,7 +156,7 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
setTitle(R.string.title_domain_mutes)
setIcon(R.drawable.ic_mute_24dp)
setOnPreferenceClickListener {
- val intent = Intent(context, InstanceListActivity::class.java)
+ val intent = Intent(context, DomainBlocksActivity::class.java)
activity?.startActivity(intent)
activity?.overridePendingTransition(
R.anim.slide_from_right,
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt b/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt
index 2ceb97213..02b4f6ea7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt
@@ -29,11 +29,11 @@ import com.keylesspalace.tusky.components.account.AccountActivity
import com.keylesspalace.tusky.components.accountlist.AccountListActivity
import com.keylesspalace.tusky.components.announcements.AnnouncementsActivity
import com.keylesspalace.tusky.components.compose.ComposeActivity
+import com.keylesspalace.tusky.components.domainblocks.DomainBlocksActivity
import com.keylesspalace.tusky.components.drafts.DraftsActivity
import com.keylesspalace.tusky.components.filters.EditFilterActivity
import com.keylesspalace.tusky.components.filters.FiltersActivity
import com.keylesspalace.tusky.components.followedtags.FollowedTagsActivity
-import com.keylesspalace.tusky.components.instancemute.InstanceListActivity
import com.keylesspalace.tusky.components.login.LoginActivity
import com.keylesspalace.tusky.components.login.LoginWebViewActivity
import com.keylesspalace.tusky.components.preference.PreferencesActivity
@@ -113,7 +113,7 @@ abstract class ActivitiesModule {
abstract fun contributesReportActivity(): ReportActivity
@ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
- abstract fun contributesInstanceListActivity(): InstanceListActivity
+ abstract fun contributesInstanceListActivity(): DomainBlocksActivity
@ContributesAndroidInjector
abstract fun contributesScheduledStatusActivity(): ScheduledStatusActivity
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/FragmentBuildersModule.kt b/app/src/main/java/com/keylesspalace/tusky/di/FragmentBuildersModule.kt
index aee1feab4..3292bbfe8 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/FragmentBuildersModule.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/FragmentBuildersModule.kt
@@ -20,7 +20,7 @@ import com.keylesspalace.tusky.components.account.list.ListsForAccountFragment
import com.keylesspalace.tusky.components.account.media.AccountMediaFragment
import com.keylesspalace.tusky.components.accountlist.AccountListFragment
import com.keylesspalace.tusky.components.conversation.ConversationsFragment
-import com.keylesspalace.tusky.components.instancemute.fragment.InstanceListFragment
+import com.keylesspalace.tusky.components.domainblocks.DomainBlocksFragment
import com.keylesspalace.tusky.components.notifications.NotificationsFragment
import com.keylesspalace.tusky.components.preference.AccountPreferencesFragment
import com.keylesspalace.tusky.components.preference.NotificationPreferencesFragment
@@ -84,7 +84,7 @@ abstract class FragmentBuildersModule {
abstract fun reportDoneFragment(): ReportDoneFragment
@ContributesAndroidInjector
- abstract fun instanceListFragment(): InstanceListFragment
+ abstract fun instanceListFragment(): DomainBlocksFragment
@ContributesAndroidInjector
abstract fun searchStatusesFragment(): SearchStatusesFragment
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/ViewModelFactory.kt b/app/src/main/java/com/keylesspalace/tusky/di/ViewModelFactory.kt
index b14604c6a..f2ae58893 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/ViewModelFactory.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/ViewModelFactory.kt
@@ -27,11 +27,11 @@ import com.keylesspalace.tusky.components.account.media.AccountMediaViewModel
import com.keylesspalace.tusky.components.announcements.AnnouncementsViewModel
import com.keylesspalace.tusky.components.compose.ComposeViewModel
import com.keylesspalace.tusky.components.conversation.ConversationsViewModel
+import com.keylesspalace.tusky.components.domainblocks.DomainBlocksViewModel
import com.keylesspalace.tusky.components.drafts.DraftsViewModel
import com.keylesspalace.tusky.components.filters.EditFilterViewModel
import com.keylesspalace.tusky.components.filters.FiltersViewModel
import com.keylesspalace.tusky.components.followedtags.FollowedTagsViewModel
-import com.keylesspalace.tusky.components.instancemute.InstanceMuteViewModel
import com.keylesspalace.tusky.components.login.LoginWebViewViewModel
import com.keylesspalace.tusky.components.notifications.NotificationsViewModel
import com.keylesspalace.tusky.components.report.ReportViewModel
@@ -188,8 +188,8 @@ abstract class ViewModelModule {
@Binds
@IntoMap
- @ViewModelKey(InstanceMuteViewModel::class)
- internal abstract fun instanceMuteViewModel(viewModel: InstanceMuteViewModel): ViewModel
+ @ViewModelKey(DomainBlocksViewModel::class)
+ internal abstract fun instanceMuteViewModel(viewModel: DomainBlocksViewModel): ViewModel
// Add more ViewModels here
}
diff --git a/app/src/main/res/layout/fragment_instance_list.xml b/app/src/main/res/layout/fragment_domain_blocks.xml
similarity index 93%
rename from app/src/main/res/layout/fragment_instance_list.xml
rename to app/src/main/res/layout/fragment_domain_blocks.xml
index 8270cee33..f82573e24 100644
--- a/app/src/main/res/layout/fragment_instance_list.xml
+++ b/app/src/main/res/layout/fragment_domain_blocks.xml
@@ -5,7 +5,7 @@
android:layout_height="match_parent">
@@ -22,4 +22,4 @@
android:layout_gravity="center"
android:visibility="gone"
tools:visibility="visible" />
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1ed16f2ea..6c1df77d4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,8 +44,8 @@
This instance does not support following hashtags.
Error muting #%s
Error unmuting #%s
- Failed to mute %s
- Failed to mute %s
+ Failed to mute %s
+ Failed to unmute %s
Failed to load the status source from the server.
Login