Apply ktlint and add to CI

This commit is contained in:
kyori19 2022-11-10 23:16:52 +09:00
parent 004a9b4921
commit c7a91fb1df
No known key found for this signature in database
GPG Key ID: F7BDE7DD42BF366A
22 changed files with 126 additions and 111 deletions

View File

@ -22,6 +22,7 @@ jobs:
- run: | - run: |
chmod +x ./gradlew chmod +x ./gradlew
./gradlew :ktlintCheck
./gradlew :app:testBlueDebugUnitTest ./gradlew :app:testBlueDebugUnitTest

View File

@ -39,8 +39,8 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.ImageView import android.widget.ImageView
import androidx.activity.viewModels
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.menu.MenuBuilder import androidx.appcompat.view.menu.MenuBuilder
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
@ -621,11 +621,11 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
} }
binding.mainDrawer.addItems( binding.mainDrawer.addItems(
secondaryDrawerItem { secondaryDrawerItem {
nameText = "Yuito (by kyori19)" nameText = "Yuito (by kyori19)"
isEnabled = false isEnabled = false
textColor = ColorStateList.valueOf(ThemeUtils.getColor(this@MainActivity, R.attr.colorInfo)) textColor = ColorStateList.valueOf(ThemeUtils.getColor(this@MainActivity, R.attr.colorInfo))
} }
) )
} }
@ -732,8 +732,8 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
} }
R.id.tabEditList -> { R.id.tabEditList -> {
AccountsInListFragment.newInstance( AccountsInListFragment.newInstance(
tabs[i].arguments.getOrNull(0).orEmpty(), tabs[i].arguments.getOrNull(0).orEmpty(),
tabs[i].arguments.getOrNull(1).orEmpty() tabs[i].arguments.getOrNull(1).orEmpty()
).show(supportFragmentManager, null) ).show(supportFragmentManager, null)
} }
R.id.tabToggleStreaming -> { R.id.tabToggleStreaming -> {
@ -750,18 +750,20 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
it.tabPreferences = tabs it.tabPreferences = tabs
accountManager.saveAccount(it) accountManager.saveAccount(it)
} }
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.autoDispose(this, Lifecycle.Event.ON_DESTROY) .autoDispose(this, Lifecycle.Event.ON_DESTROY)
.subscribe() .subscribe()
} }
} }
} }
R.id.tabToggleNotificationsFilter -> { R.id.tabToggleNotificationsFilter -> {
if (fragment is NotificationsFragment) { if (fragment is NotificationsFragment) {
val prefs = PreferenceManager.getDefaultSharedPreferences(this) val prefs = PreferenceManager.getDefaultSharedPreferences(this)
prefs.edit().putBoolean("showNotificationsFilter", prefs.edit().putBoolean(
!prefs.getBoolean("showNotificationsFilter", true)) "showNotificationsFilter",
.apply() !prefs.getBoolean("showNotificationsFilter", true)
)
.apply()
eventHub.dispatch(PreferenceChangedEvent("showNotificationsFilter")) eventHub.dispatch(PreferenceChangedEvent("showNotificationsFilter"))
} }
} }

View File

@ -23,12 +23,12 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.fragment.app.commit import androidx.fragment.app.commit
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import autodispose2.androidx.lifecycle.autoDispose import androidx.lifecycle.lifecycleScope
import com.keylesspalace.tusky.appstore.EventHub
import at.connyduck.calladapter.networkresult.fold import at.connyduck.calladapter.networkresult.fold
import autodispose2.androidx.lifecycle.autoDispose
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.components.timeline.TimelineFragment import com.keylesspalace.tusky.components.timeline.TimelineFragment
import com.keylesspalace.tusky.components.timeline.viewmodel.TimelineViewModel.Kind import com.keylesspalace.tusky.components.timeline.viewmodel.TimelineViewModel.Kind
import com.keylesspalace.tusky.databinding.ActivityStatuslistBinding import com.keylesspalace.tusky.databinding.ActivityStatuslistBinding
@ -36,8 +36,8 @@ import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.util.viewBinding import com.keylesspalace.tusky.util.viewBinding
import dagger.android.DispatchingAndroidInjector import dagger.android.DispatchingAndroidInjector
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import kotlinx.coroutines.launch
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import kotlinx.coroutines.launch
import net.accelf.yuito.QuickTootViewModel import net.accelf.yuito.QuickTootViewModel
import javax.inject.Inject import javax.inject.Inject
@ -50,7 +50,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
@Inject @Inject
lateinit var viewModelFactory: ViewModelFactory lateinit var viewModelFactory: ViewModelFactory
private val quickTootViewModel: QuickTootViewModel by viewModels{ viewModelFactory } private val quickTootViewModel: QuickTootViewModel by viewModels { viewModelFactory }
private val binding: ActivityStatuslistBinding by viewBinding(ActivityStatuslistBinding::inflate) private val binding: ActivityStatuslistBinding by viewBinding(ActivityStatuslistBinding::inflate)
private lateinit var kind: Kind private lateinit var kind: Kind
@ -95,9 +95,9 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
binding.viewQuickToot.attachViewModel(quickTootViewModel, this) binding.viewQuickToot.attachViewModel(quickTootViewModel, this)
eventHub.events eventHub.events
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.autoDispose(this, Lifecycle.Event.ON_DESTROY) .autoDispose(this, Lifecycle.Event.ON_DESTROY)
.subscribe(binding.viewQuickToot::handleEvent) .subscribe(binding.viewQuickToot::handleEvent)
binding.floatingBtn.setOnClickListener(binding.viewQuickToot::onFABClicked) binding.floatingBtn.setOnClickListener(binding.viewQuickToot::onFABClicked)
} }

View File

@ -529,16 +529,16 @@ class ComposeActivity :
binding.checkboxUseDefaultText.isChecked = preferences.getBoolean(PREF_USE_DEFAULT_TAG, false) binding.checkboxUseDefaultText.isChecked = preferences.getBoolean(PREF_USE_DEFAULT_TAG, false)
binding.checkboxUseDefaultText.setOnCheckedChangeListener { _, isChecked -> binding.checkboxUseDefaultText.setOnCheckedChangeListener { _, isChecked ->
preferences.edit() preferences.edit()
.putBoolean(PREF_USE_DEFAULT_TAG, isChecked) .putBoolean(PREF_USE_DEFAULT_TAG, isChecked)
.apply() .apply()
eventHub.dispatch(PreferenceChangedEvent(PREF_USE_DEFAULT_TAG)) eventHub.dispatch(PreferenceChangedEvent(PREF_USE_DEFAULT_TAG))
} }
binding.editTextDefaultText.setText(preferences.getString(PREF_DEFAULT_TAG, "")) binding.editTextDefaultText.setText(preferences.getString(PREF_DEFAULT_TAG, ""))
binding.editTextDefaultText.doAfterTextChanged { binding.editTextDefaultText.doAfterTextChanged {
preferences.edit() preferences.edit()
.putString(PREF_DEFAULT_TAG, it.toString()) .putString(PREF_DEFAULT_TAG, it.toString())
.apply() .apply()
eventHub.dispatch(PreferenceChangedEvent(PREF_DEFAULT_TAG)) eventHub.dispatch(PreferenceChangedEvent(PREF_DEFAULT_TAG))
} }
} }

View File

@ -38,7 +38,16 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.flow.updateAndGet
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import javax.inject.Inject import javax.inject.Inject
@ -71,14 +80,18 @@ class ComposeViewModel @Inject constructor(
private var hasScheduledTimeChanged: Boolean = false private var hasScheduledTimeChanged: Boolean = false
private val useCache = MutableStateFlow(true) private val useCache = MutableStateFlow(true)
val instanceInfo = useCache.map { when (it) { val instanceInfo = useCache.map {
true -> instanceInfoRepo.getCachedInstanceInfo() when (it) {
false -> instanceInfoRepo.getInstanceInfo() true -> instanceInfoRepo.getCachedInstanceInfo()
} }.shareIn(viewModelScope, SharingStarted.Eagerly, 1) false -> instanceInfoRepo.getInstanceInfo()
val emoji = useCache.map { when (it) { }
true -> instanceInfoRepo.getCachedEmojis() }.shareIn(viewModelScope, SharingStarted.Eagerly, 1)
false -> instanceInfoRepo.getEmojis() val emoji = useCache.map {
} }.shareIn(viewModelScope, SharingStarted.Eagerly, 1) when (it) {
true -> instanceInfoRepo.getCachedEmojis()
false -> instanceInfoRepo.getEmojis()
}
}.shareIn(viewModelScope, SharingStarted.Eagerly, 1)
val markMediaAsSensitive: MutableStateFlow<Boolean> = val markMediaAsSensitive: MutableStateFlow<Boolean> =
MutableStateFlow(accountManager.activeAccount?.defaultMediaSensitivity ?: false) MutableStateFlow(accountManager.activeAccount?.defaultMediaSensitivity ?: false)

View File

@ -322,14 +322,17 @@ class PreferencesFragment : PreferenceFragmentCompat(), Injectable {
setTitle(R.string.pref_title_stacktrace_send) setTitle(R.string.pref_title_stacktrace_send)
setOnPreferenceClickListener { setOnPreferenceClickListener {
activity?.let { activity -> activity?.let { activity ->
val intent = ComposeActivity.startIntent(activity, ComposeOptions( val intent = ComposeActivity.startIntent(
activity,
ComposeOptions(
content = "@ars42525@odakyu.app $stackTrace".substring(0, 400), content = "@ars42525@odakyu.app $stackTrace".substring(0, 400),
contentWarning = "Yuito StackTrace" contentWarning = "Yuito StackTrace"
)) )
)
activity.startActivity(intent) activity.startActivity(intent)
prefs.edit() prefs.edit()
.remove(PrefKeys.STACK_TRACE) .remove(PrefKeys.STACK_TRACE)
.apply() .apply()
} }
true true
} }

View File

@ -5,9 +5,9 @@ import com.keylesspalace.tusky.network.NotestockApi
import com.keylesspalace.tusky.viewdata.StatusViewData import com.keylesspalace.tusky.viewdata.StatusViewData
class SearchNotestockPagingSourceFactory( class SearchNotestockPagingSourceFactory(
private val notestockApi: NotestockApi, private val notestockApi: NotestockApi,
private val initialItems: List<StatusViewData.Concrete>? = null, private val initialItems: List<StatusViewData.Concrete>? = null,
private val parser: (SearchResult) -> List<StatusViewData.Concrete> private val parser: (SearchResult) -> List<StatusViewData.Concrete>
) : () -> SearchNotestockPagingSource { ) : () -> SearchNotestockPagingSource {
private var searchRequest: String = "" private var searchRequest: String = ""

View File

@ -36,5 +36,4 @@ class SearchPagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(acti
} }
override fun getItemCount() = 4 override fun getItemCount() = 4
} }

View File

@ -74,7 +74,6 @@ class SearchNotestockFragment : SearchFragment<StatusViewData.Concrete>(), Statu
return SearchStatusesAdapter(statusDisplayOptions, this) return SearchStatusesAdapter(statusDisplayOptions, this)
} }
override fun onContentHiddenChange(isShowing: Boolean, position: Int) { override fun onContentHiddenChange(isShowing: Boolean, position: Int) {
searchAdapter.peek(position)?.let { searchAdapter.peek(position)?.let {
viewModel.contentHiddenNotestockChange(it, isShowing) viewModel.contentHiddenNotestockChange(it, isShowing)
@ -133,9 +132,7 @@ class SearchNotestockFragment : SearchFragment<StatusViewData.Concrete>(), Statu
Attachment.Type.UNKNOWN -> { Attachment.Type.UNKNOWN -> {
} }
} }
} }
} }
override fun onViewThread(position: Int) { override fun onViewThread(position: Int) {
@ -491,11 +488,9 @@ class SearchNotestockFragment : SearchFragment<StatusViewData.Concrete>(), Statu
Log.w("SearchStatusesFragment", "error deleting status", error) Log.w("SearchStatusesFragment", "error deleting status", error)
Toast.makeText(context, R.string.error_generic, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.error_generic, Toast.LENGTH_SHORT).show()
}) })
} }
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show() .show()
} }
} }
} }

View File

@ -240,7 +240,7 @@ class SearchStatusesFragment : SearchFragment<StatusViewData.Concrete>(), Status
} }
val intent = ComposeActivity.startIntent( val intent = ComposeActivity.startIntent(
requireContext(), requireContext(),
ComposeOptions( ComposeOptions(
quoteId = status.actionableId, quoteId = status.actionableId,
quoteStatusAuthor = actionableStatus.account.localUsername, quoteStatusAuthor = actionableStatus.account.localUsername,

View File

@ -252,11 +252,14 @@ class NetworkTimelineViewModel @Inject constructor(
statusData.add(0, StatusViewData.Placeholder(status.id, isLoading = false)) statusData.add(0, StatusViewData.Placeholder(status.id, isLoading = false))
isFirstOfStreaming = false isFirstOfStreaming = false
} else { } else {
statusData.add(0, status.toViewData( statusData.add(
isShowingContent = activeAccount.alwaysShowSensitiveMedia, 0,
isExpanded = activeAccount.alwaysOpenSpoiler, status.toViewData(
isCollapsed = true, isShowingContent = activeAccount.alwaysShowSensitiveMedia,
)) isExpanded = activeAccount.alwaysOpenSpoiler,
isCollapsed = true,
)
)
} }
currentSource?.invalidate() currentSource?.invalidate()

View File

@ -240,8 +240,8 @@ abstract class TimelineViewModel(
protected fun shouldFilterStatus(statusViewData: StatusViewData): Boolean { protected fun shouldFilterStatus(statusViewData: StatusViewData): Boolean {
val status = statusViewData.asStatusOrNull()?.status ?: return false val status = statusViewData.asStatusOrNull()?.status ?: return false
return status.inReplyToId != null && filterRemoveReplies || return status.inReplyToId != null && filterRemoveReplies ||
status.reblog != null && filterRemoveReblogs || status.reblog != null && filterRemoveReblogs ||
filterModel.shouldFilterStatus(status.actionableStatus) filterModel.shouldFilterStatus(status.actionableStatus)
} }
private fun onPreferenceChanged(key: String) { private fun onPreferenceChanged(key: String) {

View File

@ -75,7 +75,7 @@ class Converters @Inject constructor (
// List name may include ":" // List name may include ":"
return tabData?.joinToString(";") { return tabData?.joinToString(";") {
(if (it.enableStreaming) { it.id + STREAMING } else { it.id }) + ":" + (if (it.enableStreaming) { it.id + STREAMING } else { it.id }) + ":" +
it.arguments.joinToString(":") { s -> URLEncoder.encode(s, "UTF-8") } it.arguments.joinToString(":") { s -> URLEncoder.encode(s, "UTF-8") }
} }
} }

View File

@ -95,5 +95,4 @@ abstract class FragmentBuildersModule {
@ContributesAndroidInjector @ContributesAndroidInjector
abstract fun searchNotestockFragment(): SearchNotestockFragment abstract fun searchNotestockFragment(): SearchNotestockFragment
} }

View File

@ -140,7 +140,7 @@ class NetworkModule {
@Singleton @Singleton
fun providesNotestockApi( fun providesNotestockApi(
okHttpClient: OkHttpClient, okHttpClient: OkHttpClient,
gson: Gson gson: Gson
): NotestockApi { ): NotestockApi {
val retrofit = Retrofit.Builder().baseUrl("https://notestock.osa-p.net") val retrofit = Retrofit.Builder().baseUrl("https://notestock.osa-p.net")
.client(okHttpClient) .client(okHttpClient)

View File

@ -132,5 +132,5 @@ abstract class ViewModelModule {
@ViewModelKey(QuickTootViewModel::class) @ViewModelKey(QuickTootViewModel::class)
internal abstract fun quickTootViewModel(viewModel: QuickTootViewModel): ViewModel internal abstract fun quickTootViewModel(viewModel: QuickTootViewModel): ViewModel
//Add more ViewModels here // Add more ViewModels here
} }

View File

@ -9,8 +9,7 @@ interface NotestockApi {
@GET("api/v1/search.json") @GET("api/v1/search.json")
fun searchObservable( fun searchObservable(
@Query("q") q: String, @Query("q") q: String,
@Query("max_dt") maxDt: String? = null @Query("max_dt") maxDt: String? = null
): Single<SearchResult> ): Single<SearchResult>
} }

View File

@ -24,9 +24,9 @@ import kotlinx.coroutines.launch
import kotlin.properties.Delegates import kotlin.properties.Delegates
class QuickTootView @JvmOverloads constructor( class QuickTootView @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = 0, defStyleAttr: Int = 0,
) : ConstraintLayout(context, attrs, defStyleAttr) { ) : ConstraintLayout(context, attrs, defStyleAttr) {
private val binding = ViewQuickTootBinding.inflate(LayoutInflater.from(context), this, true) private val binding = ViewQuickTootBinding.inflate(LayoutInflater.from(context), this, true)

View File

@ -12,8 +12,8 @@ import kotlinx.coroutines.flow.update
import javax.inject.Inject import javax.inject.Inject
class QuickTootViewModel @Inject constructor( class QuickTootViewModel @Inject constructor(
accountManager: AccountManager accountManager: AccountManager
): ViewModel() { ) : ViewModel() {
private val account = accountManager.activeAccount!! private val account = accountManager.activeAccount!!
@ -31,11 +31,13 @@ class QuickTootViewModel @Inject constructor(
val defaultTag: MutableStateFlow<String?> = MutableStateFlow(null) val defaultTag: MutableStateFlow<String?> = MutableStateFlow(null)
fun setInitialVisibility(num: Int) { fun setInitialVisibility(num: Int) {
visibilityMutable.value = (Visibility.byNum(num) visibilityMutable.value = (
Visibility.byNum(num)
.takeUnless { it == Visibility.UNKNOWN } .takeUnless { it == Visibility.UNKNOWN }
?: account.defaultPostPrivacy) ?: account.defaultPostPrivacy
.takeUnless { it == Visibility.UNLEAKABLE && unleakableAllowed } )
?: Visibility.PRIVATE .takeUnless { it == Visibility.UNLEAKABLE && unleakableAllowed }
?: Visibility.PRIVATE
} }
fun stepVisibility() { fun stepVisibility() {
@ -63,18 +65,18 @@ class QuickTootViewModel @Inject constructor(
fun composeOptions(tootRightNow: Boolean): ComposeActivity.ComposeOptions { fun composeOptions(tootRightNow: Boolean): ComposeActivity.ComposeOptions {
return ComposeActivity.ComposeOptions( return ComposeActivity.ComposeOptions(
content = content.value, content = content.value,
mentionedUsernames = inReplyTo.value mentionedUsernames = inReplyTo.value
?.let { ?.let {
linkedSetOf(it.account.username, *(it.mentions.map { mention -> mention.username }.toTypedArray())) linkedSetOf(it.account.username, *(it.mentions.map { mention -> mention.username }.toTypedArray()))
.apply { remove(account.username) } .apply { remove(account.username) }
}, },
inReplyToId = inReplyTo.value?.id, inReplyToId = inReplyTo.value?.id,
visibility = visibility.value, visibility = visibility.value,
contentWarning = inReplyTo.value?.spoilerText, contentWarning = inReplyTo.value?.spoilerText,
replyingStatusAuthor = inReplyTo.value?.account?.name, replyingStatusAuthor = inReplyTo.value?.account?.name,
replyingStatusContent = inReplyTo.value?.content, replyingStatusContent = inReplyTo.value?.content,
tootRightNow = tootRightNow tootRightNow = tootRightNow
) )
} }

View File

@ -70,10 +70,12 @@ class QuoteInlineHelper(
true -> View.VISIBLE true -> View.VISIBLE
false -> View.GONE false -> View.GONE
} }
binding.statusQuoteInlineContentWarningButton.setText(when (show) { binding.statusQuoteInlineContentWarningButton.setText(
true -> R.string.post_content_warning_show_less when (show) {
false -> R.string.post_content_warning_show_more true -> R.string.post_content_warning_show_less
}) false -> R.string.post_content_warning_show_more
}
)
} }
private fun hideSpoilerText() { private fun hideSpoilerText() {

View File

@ -11,7 +11,7 @@ import com.keylesspalace.tusky.entity.Status.Visibility
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class VisibilityToggleButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : class VisibilityToggleButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
AppCompatImageView(context, attrs) { AppCompatImageView(context, attrs) {
private val preference by lazy { PreferenceManager.getDefaultSharedPreferences(context) } private val preference by lazy { PreferenceManager.getDefaultSharedPreferences(context) }
@ -25,35 +25,35 @@ class VisibilityToggleButton @JvmOverloads constructor(context: Context, attrs:
viewModel.visibility.collect(::updateVisibility) viewModel.visibility.collect(::updateVisibility)
} }
viewModel.setInitialVisibility(preference.getInt(PREF_CURRENT_VISIBILITY, Visibility.UNKNOWN.num)) viewModel.setInitialVisibility(preference.getInt(PREF_CURRENT_VISIBILITY, Visibility.UNKNOWN.num))
setOnClickListener{ viewModel.stepVisibility() } setOnClickListener { viewModel.stepVisibility() }
} }
private fun updateVisibility(visibility: Visibility) { private fun updateVisibility(visibility: Visibility) {
setImageResource( setImageResource(
when (visibility) { when (visibility) {
Visibility.PUBLIC -> R.drawable.ic_public_24dp Visibility.PUBLIC -> R.drawable.ic_public_24dp
Visibility.UNLISTED -> R.drawable.ic_lock_open_24dp Visibility.UNLISTED -> R.drawable.ic_lock_open_24dp
Visibility.PRIVATE -> R.drawable.ic_lock_outline_24dp Visibility.PRIVATE -> R.drawable.ic_lock_outline_24dp
Visibility.DIRECT -> R.drawable.ic_email_24dp Visibility.DIRECT -> R.drawable.ic_email_24dp
Visibility.UNLEAKABLE -> R.drawable.ic_low_vision_24dp Visibility.UNLEAKABLE -> R.drawable.ic_low_vision_24dp
else -> R.drawable.ic_lock_open_24dp else -> R.drawable.ic_lock_open_24dp
} }
) )
contentDescription = context.getString( contentDescription = context.getString(
when (visibility) { when (visibility) {
Visibility.UNKNOWN -> R.string.visibility_unknown Visibility.UNKNOWN -> R.string.visibility_unknown
Visibility.PUBLIC -> R.string.visibility_public Visibility.PUBLIC -> R.string.visibility_public
Visibility.UNLISTED -> R.string.visibility_unlisted Visibility.UNLISTED -> R.string.visibility_unlisted
Visibility.PRIVATE -> R.string.visibility_private Visibility.PRIVATE -> R.string.visibility_private
Visibility.DIRECT -> R.string.visibility_direct Visibility.DIRECT -> R.string.visibility_direct
Visibility.UNLEAKABLE -> R.string.visibility_unleakable Visibility.UNLEAKABLE -> R.string.visibility_unleakable
} }
) )
preference.edit() preference.edit()
.putInt(PREF_CURRENT_VISIBILITY, visibility.num) .putInt(PREF_CURRENT_VISIBILITY, visibility.num)
.apply() .apply()
} }
companion object { companion object {

View File

@ -4,8 +4,6 @@ import android.app.Activity
import android.app.NotificationManager import android.app.NotificationManager
import android.content.ComponentName import android.content.ComponentName
import android.content.Intent import android.content.Intent
import android.os.Looper
import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
@ -19,7 +17,6 @@ import com.keylesspalace.tusky.entity.Account
import com.keylesspalace.tusky.entity.Instance import com.keylesspalace.tusky.entity.Instance
import com.keylesspalace.tusky.entity.Notification import com.keylesspalace.tusky.entity.Notification
import com.keylesspalace.tusky.entity.TimelineAccount import com.keylesspalace.tusky.entity.TimelineAccount
import net.accelf.yuito.FooterDrawerItem
import net.accelf.yuito.QuickTootViewModel import net.accelf.yuito.QuickTootViewModel
import net.accelf.yuito.streaming.StreamingManager import net.accelf.yuito.streaming.StreamingManager
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals