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
@ -759,8 +759,10 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
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",
!prefs.getBoolean("showNotificationsFilter", true)
)
.apply() .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

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 {
when (it) {
true -> instanceInfoRepo.getCachedInstanceInfo() true -> instanceInfoRepo.getCachedInstanceInfo()
false -> instanceInfoRepo.getInstanceInfo() false -> instanceInfoRepo.getInstanceInfo()
} }.shareIn(viewModelScope, SharingStarted.Eagerly, 1) }
val emoji = useCache.map { when (it) { }.shareIn(viewModelScope, SharingStarted.Eagerly, 1)
val emoji = useCache.map {
when (it) {
true -> instanceInfoRepo.getCachedEmojis() true -> instanceInfoRepo.getCachedEmojis()
false -> instanceInfoRepo.getEmojis() false -> instanceInfoRepo.getEmojis()
} }.shareIn(viewModelScope, SharingStarted.Eagerly, 1) }
}.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,10 +322,13 @@ 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)

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

@ -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(
0,
status.toViewData(
isShowingContent = activeAccount.alwaysShowSensitiveMedia, isShowingContent = activeAccount.alwaysShowSensitiveMedia,
isExpanded = activeAccount.alwaysOpenSpoiler, isExpanded = activeAccount.alwaysOpenSpoiler,
isCollapsed = true, isCollapsed = true,
)) )
)
} }
currentSource?.invalidate() currentSource?.invalidate()

View File

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

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

@ -12,5 +12,4 @@ interface NotestockApi {
@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

@ -13,7 +13,7 @@ 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,9 +31,11 @@ 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 } .takeUnless { it == Visibility.UNLEAKABLE && unleakableAllowed }
?: Visibility.PRIVATE ?: Visibility.PRIVATE
} }

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(
when (show) {
true -> R.string.post_content_warning_show_less true -> R.string.post_content_warning_show_less
false -> R.string.post_content_warning_show_more false -> R.string.post_content_warning_show_more
}) }
)
} }
private fun hideSpoilerText() { private fun hideSpoilerText() {

View File

@ -25,7 +25,7 @@ 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) {

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