Apply ktlint and add to CI
This commit is contained in:
parent
004a9b4921
commit
c7a91fb1df
|
@ -22,6 +22,7 @@ jobs:
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
chmod +x ./gradlew
|
chmod +x ./gradlew
|
||||||
|
./gradlew :ktlintCheck
|
||||||
./gradlew :app:testBlueDebugUnitTest
|
./gradlew :app:testBlueDebugUnitTest
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -36,5 +36,4 @@ class SearchPagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(acti
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = 4
|
override fun getItemCount() = 4
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -95,5 +95,4 @@ abstract class FragmentBuildersModule {
|
||||||
|
|
||||||
@ContributesAndroidInjector
|
@ContributesAndroidInjector
|
||||||
abstract fun searchNotestockFragment(): SearchNotestockFragment
|
abstract fun searchNotestockFragment(): SearchNotestockFragment
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue