diff --git a/.editorconfig b/.editorconfig
index 47d830da01..2fe7f0b70d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -8,10 +8,13 @@ insert_final_newline = true
trim_trailing_whitespace = true
# Disable wildcard imports
-[*.{java, kt}]
+[*.{java,kt}]
ij_kotlin_name_count_to_use_star_import = 999
ij_kotlin_name_count_to_use_star_import_for_members = 999
ij_java_class_count_to_use_import_on_demand = 999
+# Require trailing comma
+ij_kotlin_allow_trailing_comma = true
+ij_kotlin_allow_trailing_comma_on_call_site = true
[*.{yml,yaml}]
indent_size = 2
diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml
index 5fb8a21bff..79667af0d0 100644
--- a/app/lint-baseline.xml
+++ b/app/lint-baseline.xml
@@ -19,7 +19,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -30,7 +30,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -153,12 +153,12 @@
+ errorLine1=" return ctx.getDrawable(R.drawable.avatar_default)!!"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ line="535"
+ column="32"/>
@@ -1521,7 +1521,7 @@
errorLine2="^">
@@ -1576,7 +1576,7 @@
errorLine2="^">
@@ -2221,67 +2221,67 @@
+ errorLine1=" binding.accountFloatingActionButton.show()"
+ errorLine2=" ~~~~~~~">
+ line="367"
+ column="29"/>
+ errorLine1=" binding.accountFloatingActionButton.hide()"
+ errorLine2=" ~~~~~~~">
+ line="370"
+ column="29"/>
+ errorLine1=" binding.accountAvatarImageView.scaleX = scaledAvatarSize"
+ errorLine2=" ~~~~~~~">
+ line="376"
+ column="21"/>
+ errorLine1=" binding.accountAvatarImageView.scaleY = scaledAvatarSize"
+ errorLine2=" ~~~~~~~">
+ line="377"
+ column="21"/>
+ errorLine1=" binding.accountAvatarImageView.visible(scaledAvatarSize > 0)"
+ errorLine2=" ~~~~~~~">
+ line="379"
+ column="21"/>
+ errorLine1=" binding.swipeToRefreshLayout.isEnabled = verticalOffset == 0"
+ errorLine2=" ~~~~~~~">
+ line="389"
+ column="21"/>
+ errorLine1=" showErrorSnackbar(visibility, sensitive)"
+ errorLine2=" ~~~~~~~~~~~~~~~~~">
+ line="311"
+ column="29"/>
+ errorLine1=" showErrorSnackbar(visibility, sensitive)"
+ errorLine2=" ~~~~~~~~~~~~~~~~~">
+ line="317"
+ column="25"/>
+ errorLine1=" viewModel.search(query.orEmpty())"
+ errorLine2=" ~~~~~~~~~">
+ line="117"
+ column="21"/>
+ errorLine1=" viewModel.search("")"
+ errorLine2=" ~~~~~~~~~">
+ line="124"
+ column="25"/>
@@ -2357,7 +2357,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -2368,7 +2368,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -2379,7 +2379,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -2390,7 +2390,7 @@
errorLine2=" ~~~~~~">
@@ -2401,7 +2401,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~">
@@ -2412,7 +2412,7 @@
errorLine2=" ~~~~~~~~~~~">
@@ -2423,7 +2423,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -2434,7 +2434,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -2445,7 +2445,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -2456,19 +2456,19 @@
errorLine2=" ~~~~~~">
+ errorLine1=" handleActivity(activity)"
+ errorLine2=" ~~~~~~~~~~~~~~">
+ line="42"
+ column="21"/>
+ errorLine1=" binding.recyclerView.post {"
+ errorLine2=" ~~~~~~~">
+ line="154"
+ column="25"/>
+ errorLine1=" binding.recyclerView.scrollBy(0, Utils.dpToPx(requireContext(), -30))"
+ errorLine2=" ~~~~~~~">
+ line="156"
+ column="33"/>
+ errorLine1=" if (dy > 0 && binding.fab.isShown) {"
+ errorLine2=" ~~~~~~~">
+ line="92"
+ column="39"/>
+ errorLine1=" binding.fab.hide()"
+ errorLine2=" ~~~~~~~">
+ line="93"
+ column="29"/>
+ errorLine1=" } else if (dy < 0 && !binding.fab.isShown) {"
+ errorLine2=" ~~~~~~~">
+ line="94"
+ column="47"/>
+ errorLine1=" binding.fab.show()"
+ errorLine2=" ~~~~~~~">
+ line="95"
+ column="29"/>
@@ -2716,7 +2716,7 @@
@@ -3149,7 +3149,7 @@
errorLine2=" ~~~~~~~">
@@ -3160,7 +3160,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3171,7 +3171,7 @@
errorLine2=" ~~~~~~~">
@@ -3182,7 +3182,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3193,7 +3193,7 @@
errorLine2=" ~~~~~~~">
@@ -3204,7 +3204,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3215,7 +3215,7 @@
errorLine2=" ~~~~~~~">
@@ -3226,7 +3226,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3237,7 +3237,7 @@
errorLine2=" ~~~~~~~">
@@ -3248,7 +3248,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3259,7 +3259,7 @@
errorLine2=" ~~~~~~~">
@@ -3270,7 +3270,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3281,7 +3281,7 @@
errorLine2=" ~~~~~~~">
@@ -3292,7 +3292,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3303,7 +3303,7 @@
errorLine2=" ~~~~~~~">
@@ -3314,7 +3314,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
@@ -3325,7 +3325,7 @@
errorLine2=" ~~~~~~~">
@@ -3336,7 +3336,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
@@ -3347,7 +3347,7 @@
errorLine2=" ~~~~~~~">
@@ -3358,7 +3358,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
@@ -3369,7 +3369,7 @@
errorLine2=" ~~~~~~~">
@@ -3380,7 +3380,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
@@ -3391,7 +3391,7 @@
errorLine2=" ~~~~~~~">
@@ -3402,7 +3402,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3413,7 +3413,7 @@
errorLine2=" ~~~~~~~">
@@ -3424,7 +3424,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -3435,7 +3435,7 @@
errorLine2=" ~~~~~~~">
@@ -3446,7 +3446,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
@@ -3457,7 +3457,7 @@
errorLine2=" ~~~~~~~">
@@ -3468,7 +3468,7 @@
errorLine2=" ~~~~~~~">
@@ -3479,7 +3479,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -3490,7 +3490,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -3717,12 +3717,12 @@
+ errorLine1=" if (!viewModel.uiState.value.showFabWhileScrolling) {"
+ errorLine2=" ~~~~~~~~~">
+ line="176"
+ column="30"/>
+ errorLine1=" saveTabs()"
+ errorLine2=" ~~~~~~~~">
+ line="138"
+ column="21"/>
+ errorLine1=" viewHolder?.itemView?.elevation = selectedItemElevation"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
+ line="148"
+ column="59"/>
+ errorLine1=" viewHolder?.itemView?.elevation = selectedItemElevation"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
+ line="148"
+ column="59"/>
+ errorLine1=" if (!viewModel.uiState.value.showFabWhileScrolling) {"
+ errorLine2=" ~~~~~~~~~">
+ line="174"
+ column="34"/>
+ errorLine1=" binding.captionSheet.visible(isDescriptionVisible)"
+ errorLine2=" ~~~~~~~">
+ line="236"
+ column="25"/>
@@ -3842,7 +3842,7 @@
errorLine2=" ~~~~~~~">
@@ -3853,63 +3853,63 @@
errorLine2=" ~~~~~~~">
+ errorLine1=" binding.toolbar.title = getPageTitle(position)"
+ errorLine2=" ~~~~~~~">
+ line="127"
+ column="21"/>
+ errorLine1=" binding.toolbar.title = getPageTitle(position)"
+ errorLine2=" ~~~~~~~~~~~~">
+ line="127"
+ column="45"/>
+ errorLine1=" binding.toolbar.title = getPageTitle(position)"
+ errorLine2=" ~~~~~~~~~~~~">
+ line="127"
+ column="45"/>
+ errorLine1=" adapter.onTransitionEnd(binding.viewPager.currentItem)"
+ errorLine2=" ~~~~~~~">
+ line="157"
+ column="45"/>
+ errorLine1=" binding.toolbar.visibility = visibility"
+ errorLine2=" ~~~~~~~">
+ line="202"
+ column="25"/>
@@ -5983,7 +5983,7 @@
errorLine2=" ~~~~~~">
@@ -5994,7 +5994,7 @@
errorLine2=" ~~~~~~~~~~~">
@@ -6005,7 +6005,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6016,7 +6016,7 @@
errorLine2=" ~~~~~~">
@@ -6027,7 +6027,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6038,7 +6038,7 @@
errorLine2=" ~~~~~~~~~~~~~~">
@@ -6049,7 +6049,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6060,7 +6060,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6071,7 +6071,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~">
@@ -6082,7 +6082,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6093,7 +6093,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~">
@@ -6104,7 +6104,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6115,7 +6115,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6126,7 +6126,7 @@
errorLine2=" ~~~~~~">
@@ -6137,7 +6137,7 @@
errorLine2=" ~~~~~~">
@@ -6148,7 +6148,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6159,7 +6159,7 @@
errorLine2=" ~~~~~~~~~~~~~~">
@@ -6170,7 +6170,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6181,7 +6181,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6192,7 +6192,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~">
@@ -6203,7 +6203,7 @@
errorLine2=" ~~~~~~~~~~~~">
@@ -6214,7 +6214,7 @@
errorLine2=" ~~~~~~~">
@@ -6225,7 +6225,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~">
@@ -6236,7 +6236,7 @@
errorLine2=" ~~~~~~~~~~~~">
@@ -6247,7 +6247,7 @@
errorLine2=" ~~~~~~~">
@@ -6258,7 +6258,7 @@
errorLine2=" ~~~~~~~~~~~~">
@@ -6269,7 +6269,7 @@
errorLine2=" ~~~~~~~">
@@ -6280,7 +6280,7 @@
errorLine2=" ~~~~~~~~~~~~~~">
@@ -6291,7 +6291,7 @@
errorLine2=" ~~~~~~~~~~~~">
@@ -6302,7 +6302,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
@@ -6313,7 +6313,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
diff --git a/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt b/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt
index 69641cc41f..a6246251e4 100644
--- a/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt
+++ b/app/src/androidTest/java/com/keylesspalace/tusky/MigrationsTest.kt
@@ -20,7 +20,7 @@ class MigrationsTest {
var helper: MigrationTestHelper = MigrationTestHelper(
InstrumentationRegistry.getInstrumentation(),
AppDatabase::class.java.canonicalName,
- FrameworkSQLiteOpenHelperFactory()
+ FrameworkSQLiteOpenHelperFactory(),
)
@Test
@@ -37,7 +37,7 @@ class MigrationsTest {
id, domain, token, active, accountId, username, "Display Name",
"https://picture.url", true, true, true, true, true, true, true,
true, "1000", "[]", "[{\"shortcode\": \"emoji\", \"url\": \"yes\"}]", 0, false,
- false, true
+ false, true,
)
db.execSQL(
@@ -49,7 +49,7 @@ class MigrationsTest {
"`defaultPostPrivacy`,`defaultMediaSensitivity`,`alwaysShowSensitiveMedia`," +
"`mediaPreviewEnabled`) " +
"VALUES (nullif(?, 0),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
- values
+ values,
)
db.close()
diff --git a/app/src/main/java/com/keylesspalace/tusky/AboutActivity.kt b/app/src/main/java/com/keylesspalace/tusky/AboutActivity.kt
index b8b64692ec..8b614484cc 100644
--- a/app/src/main/java/com/keylesspalace/tusky/AboutActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/AboutActivity.kt
@@ -49,7 +49,7 @@ class AboutActivity : BottomSheetActivity(), Injectable {
Build.MANUFACTURER,
Build.MODEL,
Build.VERSION.RELEASE,
- Build.VERSION.SDK_INT
+ Build.VERSION.SDK_INT,
)
lifecycleScope.launch {
@@ -59,7 +59,7 @@ class AboutActivity : BottomSheetActivity(), Injectable {
R.string.about_account_info,
account.username,
account.domain,
- instanceInfo.version
+ instanceInfo.version,
)
binding.accountInfoTitle.show()
binding.accountInfo.show()
diff --git a/app/src/main/java/com/keylesspalace/tusky/AccountsInListFragment.kt b/app/src/main/java/com/keylesspalace/tusky/AccountsInListFragment.kt
index a20526e959..adacb06bfc 100644
--- a/app/src/main/java/com/keylesspalace/tusky/AccountsInListFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/AccountsInListFragment.kt
@@ -111,20 +111,22 @@ class AccountsInListFragment : DialogFragment(), Injectable {
}
binding.searchView.isSubmitButtonEnabled = true
- binding.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
- override fun onQueryTextSubmit(query: String?): Boolean {
- viewModel.search(query.orEmpty())
- return true
- }
+ binding.searchView.setOnQueryTextListener(
+ object : SearchView.OnQueryTextListener {
+ override fun onQueryTextSubmit(query: String?): Boolean {
+ viewModel.search(query.orEmpty())
+ return true
+ }
- override fun onQueryTextChange(newText: String?): Boolean {
- // Close event is not sent so we use this instead
- if (newText.isNullOrBlank()) {
- viewModel.search("")
+ override fun onQueryTextChange(newText: String?): Boolean {
+ // Close event is not sent so we use this instead
+ if (newText.isNullOrBlank()) {
+ viewModel.search("")
+ }
+ return true
}
- return true
- }
- })
+ },
+ )
}
private fun setupSearchView(state: State) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/BottomSheetActivity.kt b/app/src/main/java/com/keylesspalace/tusky/BottomSheetActivity.kt
index e09bd4df8b..28363add2a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/BottomSheetActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/BottomSheetActivity.kt
@@ -53,15 +53,17 @@ abstract class BottomSheetActivity : BaseActivity() {
val bottomSheetLayout: LinearLayout = findViewById(R.id.item_status_bottom_sheet)
bottomSheet = BottomSheetBehavior.from(bottomSheetLayout)
bottomSheet.state = BottomSheetBehavior.STATE_HIDDEN
- bottomSheet.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
- override fun onStateChanged(bottomSheet: View, newState: Int) {
- if (newState == BottomSheetBehavior.STATE_HIDDEN) {
- cancelActiveSearch()
+ bottomSheet.addBottomSheetCallback(
+ object : BottomSheetBehavior.BottomSheetCallback() {
+ override fun onStateChanged(bottomSheet: View, newState: Int) {
+ if (newState == BottomSheetBehavior.STATE_HIDDEN) {
+ cancelActiveSearch()
+ }
}
- }
- override fun onSlide(bottomSheet: View, slideOffset: Float) {}
- })
+ override fun onSlide(bottomSheet: View, slideOffset: Float) {}
+ },
+ )
}
open fun viewUrl(url: String, lookupFallbackBehavior: PostLookupFallbackBehavior = PostLookupFallbackBehavior.OPEN_IN_BROWSER) {
@@ -72,7 +74,7 @@ abstract class BottomSheetActivity : BaseActivity() {
mastodonApi.searchObservable(
query = url,
- resolve = true
+ resolve = true,
).observeOn(AndroidSchedulers.mainThread())
.autoDispose(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY))
.subscribe(
@@ -101,7 +103,7 @@ abstract class BottomSheetActivity : BaseActivity() {
onEndSearch(url)
performUrlFallbackAction(url, lookupFallbackBehavior)
}
- }
+ },
)
onBeginSearch(url)
@@ -177,5 +179,5 @@ abstract class BottomSheetActivity : BaseActivity() {
enum class PostLookupFallbackBehavior {
OPEN_IN_BROWSER,
- DISPLAY_ERROR
+ DISPLAY_ERROR,
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt
index 94c160f740..d5b85d0ceb 100644
--- a/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/EditProfileActivity.kt
@@ -81,7 +81,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
private enum class PickType {
AVATAR,
- HEADER
+ HEADER,
}
private val cropImage = registerForActivityResult(CropImageContract()) { result ->
@@ -105,7 +105,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
displayName = binding.displayNameEditText.text.toString(),
note = binding.noteEditText.text.toString(),
locked = binding.lockedCheckBox.isChecked,
- fields = accountFieldEditAdapter.getFieldData()
+ fields = accountFieldEditAdapter.getFieldData(),
)
override fun onCreate(savedInstanceState: Bundle?) {
@@ -162,7 +162,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
.placeholder(R.drawable.avatar_default)
.transform(
FitCenter(),
- RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_80dp))
+ RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_80dp)),
)
.into(binding.avatarPreview)
}
@@ -198,7 +198,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
observeImage(viewModel.headerData, binding.headerPreview, false)
viewModel.saveData.observe(
- this
+ this,
) {
when (it) {
is Success -> {
@@ -238,10 +238,10 @@ class EditProfileActivity : BaseActivity(), Injectable {
private fun observeImage(
liveData: LiveData,
imageView: ImageView,
- roundedCorners: Boolean
+ roundedCorners: Boolean,
) {
liveData.observe(
- this
+ this,
) { imageUri ->
// skipping all caches so we can always reuse the same uri
@@ -253,7 +253,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
if (roundedCorners) {
glide.transform(
FitCenter(),
- RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_80dp))
+ RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_80dp)),
).into(imageView)
} else {
glide.into(imageView)
@@ -276,7 +276,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
setImageSource(includeGallery = true, includeCamera = false)
setOutputUri(viewModel.getAvatarUri())
setOutputCompressFormat(Bitmap.CompressFormat.PNG)
- }
+ },
)
}
PickType.HEADER -> {
@@ -287,7 +287,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
setImageSource(includeGallery = true, includeCamera = false)
setOutputUri(viewModel.getHeaderUri())
setOutputCompressFormat(Bitmap.CompressFormat.PNG)
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt
index 89b442a3a5..e7c68444c8 100644
--- a/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt
@@ -96,7 +96,7 @@ class ListsActivity : BaseActivity(), Injectable, HasAndroidInjector {
binding.listsRecycler.adapter = adapter
binding.listsRecycler.layoutManager = LinearLayoutManager(this)
binding.listsRecycler.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL),
)
binding.swipeRefreshLayout.setOnRefreshListener { viewModel.retryLoading() }
@@ -132,7 +132,7 @@ class ListsActivity : BaseActivity(), Injectable, HasAndroidInjector {
R.string.action_create_list
} else {
R.string.action_rename_list
- }
+ },
) { _, _ ->
onPickedDialogName(binding.nameText.text.toString(), list?.id, binding.exclusiveCheckbox.isChecked)
}
@@ -190,7 +190,7 @@ class ListsActivity : BaseActivity(), Injectable, HasAndroidInjector {
binding.messageView.setup(
R.drawable.elephant_friend_empty,
R.string.message_empty,
- null
+ null,
)
} else {
binding.messageView.hide()
@@ -202,13 +202,13 @@ class ListsActivity : BaseActivity(), Injectable, HasAndroidInjector {
Snackbar.make(
binding.listsRecycler,
messageId,
- Snackbar.LENGTH_SHORT
+ Snackbar.LENGTH_SHORT,
).show()
}
private fun onListSelected(listId: String, listTitle: String) {
startActivityWithSlideInAnimation(
- StatusListActivity.newListIntent(this, listId, listTitle)
+ StatusListActivity.newListIntent(this, listId, listTitle),
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
index 049c22dd36..7a952c73c7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
@@ -242,7 +242,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
changeAccount(requestedId, intent)
}
}
- }
+ },
)
}
} else if (openDrafts) {
@@ -293,7 +293,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
setupDrawer(
savedInstanceState,
- addSearchButton = hideTopToolbar
+ addSearchButton = hideTopToolbar,
)
/* Fetch user info while we're doing other things. This has to be done after setting up the
@@ -317,7 +317,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
is ProfileEditedEvent -> onFetchUserInfoSuccess(event.newProfileData)
is MainTabsChangedEvent -> {
refreshMainDrawerItems(
- addSearchButton = hideTopToolbar
+ addSearchButton = hideTopToolbar,
)
setupTabs(false)
@@ -354,14 +354,14 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
}
}
}
- }
+ },
)
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
- 1
+ 1,
)
}
@@ -404,7 +404,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
Log.d(
TAG,
"onResume: EmojiPack has been changed from %s to %s"
- .format(selectedEmojiPack, currentEmojiPack)
+ .format(selectedEmojiPack, currentEmojiPack),
)
selectedEmojiPack = currentEmojiPack
recreate()
@@ -478,7 +478,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
private fun setupDrawer(
savedInstanceState: Bundle?,
- addSearchButton: Boolean
+ addSearchButton: Boolean,
) {
val drawerOpenClickListener = View.OnClickListener { binding.mainDrawerLayout.open() }
@@ -497,7 +497,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
descriptionRes = R.string.add_account_description
iconicsIcon = GoogleMaterial.Icon.gmd_add
},
- 0
+ 0,
)
attachToSliderView(binding.mainDrawer)
dividerBelowHeader = false
@@ -511,32 +511,34 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
header.accountHeaderBackground.setBackgroundColor(MaterialColors.getColor(header, R.attr.colorBackgroundAccent))
val animateAvatars = preferences.getBoolean("animateGifAvatars", false)
- DrawerImageLoader.init(object : AbstractDrawerImageLoader() {
- override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable, tag: String?) {
- if (animateAvatars) {
- glide.load(uri)
- .placeholder(placeholder)
- .into(imageView)
- } else {
- glide.asBitmap()
- .load(uri)
- .placeholder(placeholder)
- .into(imageView)
+ DrawerImageLoader.init(
+ object : AbstractDrawerImageLoader() {
+ override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable, tag: String?) {
+ if (animateAvatars) {
+ glide.load(uri)
+ .placeholder(placeholder)
+ .into(imageView)
+ } else {
+ glide.asBitmap()
+ .load(uri)
+ .placeholder(placeholder)
+ .into(imageView)
+ }
}
- }
- override fun cancel(imageView: ImageView) {
- glide.clear(imageView)
- }
-
- override fun placeholder(ctx: Context, tag: String?): Drawable {
- if (tag == DrawerImageLoader.Tags.PROFILE.name || tag == DrawerImageLoader.Tags.PROFILE_DRAWER_ITEM.name) {
- return ctx.getDrawable(R.drawable.avatar_default)!!
+ override fun cancel(imageView: ImageView) {
+ glide.clear(imageView)
}
- return super.placeholder(ctx, tag)
- }
- })
+ override fun placeholder(ctx: Context, tag: String?): Drawable {
+ if (tag == DrawerImageLoader.Tags.PROFILE.name || tag == DrawerImageLoader.Tags.PROFILE_DRAWER_ITEM.name) {
+ return ctx.getDrawable(R.drawable.avatar_default)!!
+ }
+
+ return super.placeholder(ctx, tag)
+ }
+ },
+ )
binding.mainDrawer.apply {
refreshMainDrawerItems(addSearchButton)
@@ -645,7 +647,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
nameRes = R.string.action_logout
iconRes = R.drawable.ic_logout
onClick = ::logout
- }
+ },
)
if (addSearchButton) {
@@ -657,7 +659,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
onClick = {
startActivityWithSlideInAnimation(SearchActivity.getIntent(context))
}
- }
+ },
)
}
@@ -669,7 +671,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
onClick = {
startActivityWithSlideInAnimation(TrendingActivity.getIntent(context))
}
- }
+ },
)
}
@@ -686,7 +688,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
onClick = {
buildDeveloperToolsDialog().show()
}
- }
+ },
)
}
@@ -699,8 +701,8 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
.setItems(
arrayOf(
"Clear home timeline cache",
- "Remove first 40 statuses"
- )
+ "Remove first 40 statuses",
+ ),
) { _, which ->
Log.d(TAG, "Developer tools: $which")
when (which) {
@@ -912,7 +914,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
},
{ throwable ->
Log.e(TAG, "Failed to fetch user info. " + throwable.message)
- }
+ },
)
}
@@ -962,57 +964,61 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
.apply {
if (showPlaceholder) placeholder(R.drawable.avatar_default)
}
- .into(object : CustomTarget(navIconSize, navIconSize) {
+ .into(
+ object : CustomTarget(navIconSize, navIconSize) {
- override fun onLoadStarted(placeholder: Drawable?) {
- placeholder?.let {
- activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ override fun onLoadStarted(placeholder: Drawable?) {
+ placeholder?.let {
+ activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ }
}
- }
- override fun onResourceReady(
- resource: Drawable,
- transition: Transition?
- ) {
- if (resource is Animatable) resource.start()
- activeToolbar.navigationIcon = FixedSizeDrawable(resource, navIconSize, navIconSize)
- }
+ override fun onResourceReady(
+ resource: Drawable,
+ transition: Transition?,
+ ) {
+ if (resource is Animatable) resource.start()
+ activeToolbar.navigationIcon = FixedSizeDrawable(resource, navIconSize, navIconSize)
+ }
- override fun onLoadCleared(placeholder: Drawable?) {
- placeholder?.let {
- activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ override fun onLoadCleared(placeholder: Drawable?) {
+ placeholder?.let {
+ activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ }
}
- }
- })
+ },
+ )
} else {
glide.asBitmap().load(avatarUrl).transform(RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp)))
.apply {
if (showPlaceholder) placeholder(R.drawable.avatar_default)
}
- .into(object : CustomTarget(navIconSize, navIconSize) {
- override fun onLoadStarted(placeholder: Drawable?) {
- placeholder?.let {
- activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ .into(
+ object : CustomTarget(navIconSize, navIconSize) {
+ override fun onLoadStarted(placeholder: Drawable?) {
+ placeholder?.let {
+ activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ }
}
- }
- override fun onResourceReady(
- resource: Bitmap,
- transition: Transition?
- ) {
- activeToolbar.navigationIcon = FixedSizeDrawable(
- BitmapDrawable(resources, resource),
- navIconSize,
- navIconSize
- )
- }
+ override fun onResourceReady(
+ resource: Bitmap,
+ transition: Transition?,
+ ) {
+ activeToolbar.navigationIcon = FixedSizeDrawable(
+ BitmapDrawable(resources, resource),
+ navIconSize,
+ navIconSize,
+ )
+ }
- override fun onLoadCleared(placeholder: Drawable?) {
- placeholder?.let {
- activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ override fun onLoadCleared(placeholder: Drawable?) {
+ placeholder?.let {
+ activeToolbar.navigationIcon = FixedSizeDrawable(it, navIconSize, navIconSize)
+ }
}
- }
- })
+ },
+ )
}
}
@@ -1026,7 +1032,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
},
{ throwable ->
Log.w(TAG, "Failed to fetch announcements.", throwable)
- }
+ },
)
}
}
@@ -1114,7 +1120,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
options: ComposeActivity.ComposeOptions,
tuskyAccountId: Long = -1,
notificationTag: String? = null,
- notificationId: Int = -1
+ notificationId: Int = -1,
): Intent {
return accountSwitchIntent(context, tuskyAccountId).apply {
action = Intent.ACTION_SEND // so it can be opened via shortcuts
diff --git a/app/src/main/java/com/keylesspalace/tusky/StatusListActivity.kt b/app/src/main/java/com/keylesspalace/tusky/StatusListActivity.kt
index f8f3b930c1..c6507413f4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/StatusListActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/StatusListActivity.kt
@@ -114,7 +114,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
},
{
Log.w(TAG, "Failed to query tag #$tag", it)
- }
+ },
)
}
}
@@ -134,7 +134,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
{
Snackbar.make(binding.root, getString(R.string.error_following_hashtag_format, tag), Snackbar.LENGTH_SHORT).show()
Log.e(TAG, "Failed to follow #$tag", it)
- }
+ },
)
}
}
@@ -154,7 +154,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
{
Snackbar.make(binding.root, getString(R.string.error_unfollowing_hashtag_format, tag), Snackbar.LENGTH_SHORT).show()
Log.e(TAG, "Failed to unfollow #$tag", it)
- }
+ },
)
}
}
@@ -193,12 +193,12 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
},
{ throwable ->
Log.e(TAG, "Error getting filters: $throwable")
- }
+ },
)
} else {
Log.e(TAG, "Error getting filters: $throwable")
}
- }
+ },
)
}
}
@@ -223,7 +223,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
title = "#$tag",
context = listOf(FilterV1.HOME),
filterAction = Filter.Action.WARN.action,
- expiresInSeconds = null
+ expiresInSeconds = null,
).fold(
{ filter ->
if (mastodonApi.addFilterKeyword(filterId = filter.id, keyword = tag, wholeWord = true).isSuccess) {
@@ -242,7 +242,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
listOf(FilterV1.HOME),
irreversible = false,
wholeWord = true,
- expiresInSeconds = null
+ expiresInSeconds = null,
).fold(
{ filter ->
mutedFilterV1 = filter
@@ -252,13 +252,13 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
{ throwable ->
Snackbar.make(binding.root, getString(R.string.error_muting_hashtag_format, tag), Snackbar.LENGTH_SHORT).show()
Log.e(TAG, "Failed to mute #$tag", throwable)
- }
+ },
)
} else {
Snackbar.make(binding.root, getString(R.string.error_muting_hashtag_format, tag), Snackbar.LENGTH_SHORT).show()
Log.e(TAG, "Failed to mute #$tag", throwable)
}
- }
+ },
)
}
@@ -274,7 +274,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
// This filter exists in multiple contexts, just remove the home context
mastodonApi.updateFilter(
id = filter.id,
- context = filter.context.filter { it != Filter.Kind.HOME.kind }
+ context = filter.context.filter { it != Filter.Kind.HOME.kind },
)
} else {
mastodonApi.deleteFilter(filter.id)
@@ -289,7 +289,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
context = filter.context.filter { it != FilterV1.HOME },
irreversible = null,
wholeWord = null,
- expiresInSeconds = null
+ expiresInSeconds = null,
)
} else {
mastodonApi.deleteFilterV1(filter.id)
@@ -309,7 +309,7 @@ class StatusListActivity : BottomSheetActivity(), HasAndroidInjector {
{ throwable ->
Snackbar.make(binding.root, getString(R.string.error_unmuting_hashtag_format, tag), Snackbar.LENGTH_SHORT).show()
Log.e(TAG, "Failed to unmute #$tag", throwable)
- }
+ },
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/TabData.kt b/app/src/main/java/com/keylesspalace/tusky/TabData.kt
index 4fa801392d..424b6d8374 100644
--- a/app/src/main/java/com/keylesspalace/tusky/TabData.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/TabData.kt
@@ -47,7 +47,7 @@ data class TabData(
@DrawableRes val icon: Int,
val fragment: (List) -> Fragment,
val arguments: List = emptyList(),
- val title: (Context) -> String = { context -> context.getString(text) }
+ val title: (Context) -> String = { context -> context.getString(text) },
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
@@ -70,49 +70,49 @@ fun createTabDataFromId(id: String, arguments: List = emptyList()): TabD
id = HOME,
text = R.string.title_home,
icon = R.drawable.ic_home_24dp,
- fragment = { TimelineFragment.newInstance(TimelineKind.Home) }
+ fragment = { TimelineFragment.newInstance(TimelineKind.Home) },
)
NOTIFICATIONS -> TabData(
id = NOTIFICATIONS,
text = R.string.title_notifications,
icon = R.drawable.ic_notifications_24dp,
- fragment = { NotificationsFragment.newInstance() }
+ fragment = { NotificationsFragment.newInstance() },
)
LOCAL -> TabData(
id = LOCAL,
text = R.string.title_public_local,
icon = R.drawable.ic_local_24dp,
- fragment = { TimelineFragment.newInstance(TimelineKind.PublicLocal) }
+ fragment = { TimelineFragment.newInstance(TimelineKind.PublicLocal) },
)
FEDERATED -> TabData(
id = FEDERATED,
text = R.string.title_public_federated,
icon = R.drawable.ic_public_24dp,
- fragment = { TimelineFragment.newInstance(TimelineKind.PublicFederated) }
+ fragment = { TimelineFragment.newInstance(TimelineKind.PublicFederated) },
)
DIRECT -> TabData(
id = DIRECT,
text = R.string.title_direct_messages,
icon = R.drawable.ic_reblog_direct_24dp,
- fragment = { ConversationsFragment.newInstance() }
+ fragment = { ConversationsFragment.newInstance() },
)
TRENDING_TAGS -> TabData(
id = TRENDING_TAGS,
text = R.string.title_public_trending_hashtags,
icon = R.drawable.ic_trending_up_24px,
- fragment = { TrendingTagsFragment.newInstance() }
+ fragment = { TrendingTagsFragment.newInstance() },
)
TRENDING_LINKS -> TabData(
id = TRENDING_LINKS,
text = R.string.title_public_trending_links,
icon = R.drawable.ic_trending_up_24px,
- fragment = { TrendingLinksFragment.newInstance() }
+ fragment = { TrendingLinksFragment.newInstance() },
)
TRENDING_STATUSES -> TabData(
id = TRENDING_STATUSES,
text = R.string.title_public_trending_statuses,
icon = R.drawable.ic_trending_up_24px,
- fragment = { TimelineFragment.newInstance(TimelineKind.TrendingStatuses) }
+ fragment = { TimelineFragment.newInstance(TimelineKind.TrendingStatuses) },
)
HASHTAG -> TabData(
id = HASHTAG,
@@ -120,7 +120,7 @@ fun createTabDataFromId(id: String, arguments: List = emptyList()): TabD
icon = R.drawable.ic_hashtag,
fragment = { args -> TimelineFragment.newInstance(TimelineKind.Tag(args)) },
arguments = arguments,
- title = { context -> arguments.joinToString(separator = " ") { context.getString(R.string.title_tag, it) } }
+ title = { context -> arguments.joinToString(separator = " ") { context.getString(R.string.title_tag, it) } },
)
LIST -> TabData(
id = LIST,
@@ -128,13 +128,13 @@ fun createTabDataFromId(id: String, arguments: List = emptyList()): TabD
icon = R.drawable.ic_list,
fragment = { args -> TimelineFragment.newInstance(TimelineKind.UserList(args.first(), args.last())) },
arguments = arguments,
- title = { arguments.getOrNull(1).orEmpty() }
+ title = { arguments.getOrNull(1).orEmpty() },
)
BOOKMARKS -> TabData(
id = BOOKMARKS,
text = R.string.title_bookmarks,
icon = R.drawable.ic_bookmark_active_24dp,
- fragment = { TimelineFragment.newInstance(TimelineKind.Bookmarks) }
+ fragment = { TimelineFragment.newInstance(TimelineKind.Bookmarks) },
)
else -> throw IllegalArgumentException("unknown tab type")
}
@@ -145,6 +145,6 @@ fun defaultTabs(): List {
createTabDataFromId(HOME),
createTabDataFromId(NOTIFICATIONS),
createTabDataFromId(LOCAL),
- createTabDataFromId(DIRECT)
+ createTabDataFromId(DIRECT),
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/TabPreferenceActivity.kt b/app/src/main/java/com/keylesspalace/tusky/TabPreferenceActivity.kt
index 20304b89c1..03d4448e52 100644
--- a/app/src/main/java/com/keylesspalace/tusky/TabPreferenceActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/TabPreferenceActivity.kt
@@ -115,44 +115,46 @@ class TabPreferenceActivity : BaseActivity(), Injectable, ItemInteractionListene
binding.addTabRecyclerView.adapter = addTabAdapter
binding.addTabRecyclerView.layoutManager = LinearLayoutManager(this)
- touchHelper = ItemTouchHelper(object : ItemTouchHelper.Callback() {
- override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
- return makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, ItemTouchHelper.END)
- }
+ touchHelper = ItemTouchHelper(
+ object : ItemTouchHelper.Callback() {
+ override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
+ return makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, ItemTouchHelper.END)
+ }
- override fun isLongPressDragEnabled(): Boolean {
- return true
- }
+ override fun isLongPressDragEnabled(): Boolean {
+ return true
+ }
- override fun isItemViewSwipeEnabled(): Boolean {
- return MIN_TAB_COUNT < currentTabs.size
- }
+ override fun isItemViewSwipeEnabled(): Boolean {
+ return MIN_TAB_COUNT < currentTabs.size
+ }
- override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
- val temp = currentTabs[viewHolder.bindingAdapterPosition]
- currentTabs[viewHolder.bindingAdapterPosition] = currentTabs[target.bindingAdapterPosition]
- currentTabs[target.bindingAdapterPosition] = temp
+ override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
+ val temp = currentTabs[viewHolder.bindingAdapterPosition]
+ currentTabs[viewHolder.bindingAdapterPosition] = currentTabs[target.bindingAdapterPosition]
+ currentTabs[target.bindingAdapterPosition] = temp
- currentTabsAdapter.notifyItemMoved(viewHolder.bindingAdapterPosition, target.bindingAdapterPosition)
- saveTabs()
- return true
- }
+ currentTabsAdapter.notifyItemMoved(viewHolder.bindingAdapterPosition, target.bindingAdapterPosition)
+ saveTabs()
+ return true
+ }
- override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
- onTabRemoved(viewHolder.bindingAdapterPosition)
- }
+ override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
+ onTabRemoved(viewHolder.bindingAdapterPosition)
+ }
- override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
- if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
- viewHolder?.itemView?.elevation = selectedItemElevation
+ override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
+ if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
+ viewHolder?.itemView?.elevation = selectedItemElevation
+ }
}
- }
- override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {
- super.clearView(recyclerView, viewHolder)
- viewHolder.itemView.elevation = 0f
- }
- })
+ override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {
+ super.clearView(recyclerView, viewHolder)
+ viewHolder.itemView.elevation = 0f
+ }
+ },
+ )
touchHelper.attachToRecyclerView(binding.currentTabsRecyclerView)
@@ -327,13 +329,13 @@ class TabPreferenceActivity : BaseActivity(), Injectable, ItemInteractionListene
dialog.hide()
Log.e("TabPreferenceActivity", "failed to load lists", throwable)
Snackbar.make(binding.root, R.string.error_list_load, Snackbar.LENGTH_LONG).show()
- }
+ },
)
}
}
private fun getProgressBarJob(progressView: View, delayMs: Long) = this.lifecycleScope.launch(
- start = CoroutineStart.LAZY
+ start = CoroutineStart.LAZY,
) {
try {
delay(delayMs)
diff --git a/app/src/main/java/com/keylesspalace/tusky/TuskyApplication.kt b/app/src/main/java/com/keylesspalace/tusky/TuskyApplication.kt
index c2dfc2f156..fb3dc8e336 100644
--- a/app/src/main/java/com/keylesspalace/tusky/TuskyApplication.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/TuskyApplication.kt
@@ -105,7 +105,7 @@ class TuskyApplication : Application(), HasAndroidInjector {
this,
androidx.work.Configuration.Builder()
.setWorkerFactory(workerFactory)
- .build()
+ .build(),
)
// Prune the database every ~ 12 hours when the device is idle.
@@ -115,7 +115,7 @@ class TuskyApplication : Application(), HasAndroidInjector {
WorkManager.getInstance(this).enqueueUniquePeriodicWork(
PruneCacheWorker.PERIODIC_WORK_TAG,
ExistingPeriodicWorkPolicy.KEEP,
- pruneCacheWorker
+ pruneCacheWorker,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
index 88b330c84c..8fa07d91ca 100644
--- a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
@@ -121,11 +121,13 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.
binding.viewPager.adapter = adapter
binding.viewPager.setCurrentItem(initialPosition, false)
- binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
- override fun onPageSelected(position: Int) {
- binding.toolbar.title = getPageTitle(position)
- }
- })
+ binding.viewPager.registerOnPageChangeCallback(
+ object : ViewPager2.OnPageChangeCallback() {
+ override fun onPageSelected(position: Int) {
+ binding.toolbar.title = getPageTitle(position)
+ }
+ },
+ )
// Setup the toolbar.
setSupportActionBar(binding.toolbar)
@@ -149,12 +151,14 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE
window.statusBarColor = Color.BLACK
- window.sharedElementEnterTransition.addListener(object : NoopTransitionListener {
- override fun onTransitionEnd(transition: Transition) {
- adapter.onTransitionEnd(binding.viewPager.currentItem)
- window.sharedElementEnterTransition.removeListener(this)
- }
- })
+ window.sharedElementEnterTransition.addListener(
+ object : NoopTransitionListener {
+ override fun onTransitionEnd(transition: Transition) {
+ adapter.onTransitionEnd(binding.viewPager.currentItem)
+ window.sharedElementEnterTransition.removeListener(this)
+ }
+ },
+ )
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -192,12 +196,14 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.
}
binding.toolbar.animate().alpha(alpha)
- .setListener(object : AnimatorListenerAdapter() {
- override fun onAnimationEnd(animation: Animator) {
- binding.toolbar.visibility = visibility
- animation.removeListener(this)
- }
- })
+ .setListener(
+ object : AnimatorListenerAdapter() {
+ override fun onAnimationEnd(animation: Animator) {
+ binding.toolbar.visibility = visibility
+ animation.removeListener(this)
+ }
+ },
+ )
.start()
}
@@ -228,7 +234,7 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.
showErrorDialog(
binding.toolbar,
R.string.error_media_download_permission,
- R.string.action_retry
+ R.string.action_retry,
) { requestDownloadMedia() }
}
}
@@ -263,7 +269,8 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.
Attachment.Type.IMAGE -> shareImage(directory, attachment.url)
Attachment.Type.AUDIO,
Attachment.Type.VIDEO,
- Attachment.Type.GIFV -> shareMediaFile(directory, attachment.url)
+ Attachment.Type.GIFV,
+ -> shareMediaFile(directory, attachment.url)
else -> Log.e(TAG, "Unknown media format for sharing.")
}
}
@@ -321,7 +328,7 @@ class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.
invalidateOptionsMenu()
binding.progressBarShare.visibility = View.GONE
Log.e(TAG, "Failed to download image", error)
- }
+ },
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/AccountViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/AccountViewHolder.kt
index a793cc64dc..aff31bf1f3 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/AccountViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/AccountViewHolder.kt
@@ -28,7 +28,7 @@ import com.keylesspalace.tusky.util.loadAvatar
import com.keylesspalace.tusky.util.visible
class AccountViewHolder(
- private val binding: ItemAccountBinding
+ private val binding: ItemAccountBinding,
) : RecyclerView.ViewHolder(binding.root) {
private lateinit var accountId: String
@@ -36,19 +36,19 @@ class AccountViewHolder(
account: TimelineAccount,
animateAvatar: Boolean,
animateEmojis: Boolean,
- showBotOverlay: Boolean
+ showBotOverlay: Boolean,
) {
accountId = account.id
binding.accountUsername.text = binding.accountUsername.context.getString(
R.string.post_username_format,
- account.username
+ account.username,
)
val emojifiedName = account.name.emojify(
account.emojis,
binding.accountDisplayName,
- animateEmojis
+ animateEmojis,
)
binding.accountDisplayName.text = emojifiedName
@@ -66,7 +66,7 @@ class AccountViewHolder(
fun setupLinkListener(listener: LinkListener) {
itemView.setOnClickListener {
listener.onViewAccount(
- accountId
+ accountId,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/EmojiAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/EmojiAdapter.kt
index 51aa43f731..2d07ffecda 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/EmojiAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/EmojiAdapter.kt
@@ -28,7 +28,7 @@ import java.util.Locale
class EmojiAdapter(
emojiList: List,
private val onEmojiSelectedListener: OnEmojiSelectedListener,
- private val animate: Boolean
+ private val animate: Boolean,
) : RecyclerView.Adapter>() {
private val emojiList: List = emojiList.filter { emoji -> emoji.visibleInPicker == null || emoji.visibleInPicker }
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/FollowRequestViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/FollowRequestViewHolder.kt
index 9efb1b96b7..5b2bf8fa66 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/FollowRequestViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/FollowRequestViewHolder.kt
@@ -43,13 +43,13 @@ class FollowRequestViewHolder(
private val binding: ItemFollowRequestBinding,
private val accountActionListener: AccountActionListener,
private val linkListener: LinkListener,
- private val showHeader: Boolean
+ private val showHeader: Boolean,
) : NotificationsPagingAdapter.ViewHolder, RecyclerView.ViewHolder(binding.root) {
override fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
) {
// Skip updates with payloads. That indicates a timestamp update, and
// this view does not have timestamps.
@@ -59,7 +59,7 @@ class FollowRequestViewHolder(
viewData.account,
statusDisplayOptions.animateAvatars,
statusDisplayOptions.animateEmojis,
- statusDisplayOptions.showBotOverlay
+ statusDisplayOptions.showBotOverlay,
)
setupActionListener(accountActionListener, viewData.account.id)
@@ -69,26 +69,26 @@ class FollowRequestViewHolder(
account: TimelineAccount,
animateAvatar: Boolean,
animateEmojis: Boolean,
- showBotOverlay: Boolean
+ showBotOverlay: Boolean,
) {
val wrappedName = account.name.unicodeWrap()
val emojifiedName: CharSequence = wrappedName.emojify(
account.emojis,
itemView,
- animateEmojis
+ animateEmojis,
)
binding.displayNameTextView.text = emojifiedName
if (showHeader) {
val wholeMessage: String = itemView.context.getString(
R.string.notification_follow_request_format,
- wrappedName
+ wrappedName,
)
binding.notificationTextView.text = SpannableStringBuilder(wholeMessage).apply {
setSpan(
StyleSpan(Typeface.BOLD),
0,
wrappedName.length,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,
)
}.emojify(account.emojis, itemView, animateEmojis)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt
index 3e4e1dad9c..3986ea54ee 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt
@@ -49,7 +49,7 @@ class PollAdapter : RecyclerView.Adapter>() {
mode: Int,
resultClickListener: View.OnClickListener?,
animateEmojis: Boolean,
- enabled: Boolean = true
+ enabled: Boolean = true,
) {
this.pollOptions = options
this.voteCount = voteCount
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/ReportNotificationViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/ReportNotificationViewHolder.kt
index 22b0939138..cf3a7dc0fb 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/ReportNotificationViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/ReportNotificationViewHolder.kt
@@ -37,13 +37,13 @@ import java.util.Date
class ReportNotificationViewHolder(
private val binding: ItemReportNotificationBinding,
- private val notificationActionListener: NotificationActionListener
+ private val notificationActionListener: NotificationActionListener,
) : NotificationsPagingAdapter.ViewHolder, RecyclerView.ViewHolder(binding.root) {
override fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
) {
// Skip updates with payloads. That indicates a timestamp update, and
// this view does not have timestamps.
@@ -53,13 +53,13 @@ class ReportNotificationViewHolder(
viewData.account,
viewData.report!!,
statusDisplayOptions.animateAvatars,
- statusDisplayOptions.animateEmojis
+ statusDisplayOptions.animateEmojis,
)
setupActionListener(
notificationActionListener,
viewData.report.targetAccount.id,
viewData.account.id,
- viewData.report.id
+ viewData.report.id,
)
}
@@ -67,17 +67,17 @@ class ReportNotificationViewHolder(
reporter: TimelineAccount,
report: Report,
animateAvatar: Boolean,
- animateEmojis: Boolean
+ animateEmojis: Boolean,
) {
val reporterName = reporter.name.unicodeWrap().emojify(
reporter.emojis,
binding.root,
- animateEmojis
+ animateEmojis,
)
val reporteeName = report.targetAccount.name.unicodeWrap().emojify(
report.targetAccount.emojis,
itemView,
- animateEmojis
+ animateEmojis,
)
val icon = ContextCompat.getDrawable(binding.root.context, R.drawable.ic_flag_24dp)
@@ -85,12 +85,12 @@ class ReportNotificationViewHolder(
binding.notificationTopText.text = itemView.context.getString(
R.string.notification_header_report_format,
reporterName,
- reporteeName
+ reporteeName,
)
binding.notificationSummary.text = itemView.context.getString(
R.string.notification_summary_report_format,
getRelativeTimeSpanString(itemView.context, report.createdAt.time, Date().time),
- report.status_ids?.size ?: 0
+ report.status_ids?.size ?: 0,
)
binding.notificationCategory.text = getTranslatedCategory(itemView.context, report.category)
@@ -102,13 +102,13 @@ class ReportNotificationViewHolder(
report.targetAccount.avatar,
binding.notificationReporteeAvatar,
itemView.context.resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp),
- animateAvatar
+ animateAvatar,
)
loadAvatar(
reporter.avatar,
binding.notificationReporterAvatar,
itemView.context.resources.getDimensionPixelSize(R.dimen.avatar_radius_24dp),
- animateAvatar
+ animateAvatar,
)
}
@@ -116,7 +116,7 @@ class ReportNotificationViewHolder(
listener: NotificationActionListener,
reporteeId: String,
reporterId: String,
- reportId: String
+ reportId: String,
) {
binding.notificationReporteeAvatar.setOnClickListener {
val position = bindingAdapterPosition
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/TabAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/TabAdapter.kt
index e3e4f27e8f..d92cc90e4f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/TabAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/TabAdapter.kt
@@ -46,7 +46,7 @@ class TabAdapter(
private var data: List,
private val small: Boolean,
private val listener: ItemInteractionListener,
- private var removeButtonEnabled: Boolean = false
+ private var removeButtonEnabled: Boolean = false,
) : RecyclerView.Adapter>() {
fun updateData(newData: List) {
@@ -103,7 +103,7 @@ class TabAdapter(
setDrawableTint(
holder.itemView.context,
binding.removeButton.drawable,
- (if (removeButtonEnabled) android.R.attr.textColorTertiary else R.attr.textColorDisabled)
+ (if (removeButtonEnabled) android.R.attr.textColorTertiary else R.attr.textColorDisabled),
)
if (tab.id == HASHTAG) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/appstore/CacheUpdater.kt b/app/src/main/java/com/keylesspalace/tusky/appstore/CacheUpdater.kt
index 9515457b3c..959295c237 100644
--- a/app/src/main/java/com/keylesspalace/tusky/appstore/CacheUpdater.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/appstore/CacheUpdater.kt
@@ -14,7 +14,7 @@ class CacheUpdater @Inject constructor(
eventHub: EventHub,
accountManager: AccountManager,
appDatabase: AppDatabase,
- gson: Gson
+ gson: Gson,
) {
private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt
index f5e962d8e2..0d52d0e1a0 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt
@@ -155,7 +155,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
private enum class FollowState {
NOT_FOLLOWING,
FOLLOWING,
- REQUESTED
+ REQUESTED,
}
private lateinit var adapter: AccountPagerAdapter
@@ -273,17 +273,19 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
val enableSwipeForTabs = preferences.getBoolean(PrefKeys.ENABLE_SWIPE_FOR_TABS, true)
binding.accountFragmentViewPager.isUserInputEnabled = enableSwipeForTabs
- binding.accountTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
- override fun onTabReselected(tab: TabLayout.Tab?) {
- tab?.position?.let { position ->
- (adapter.getFragment(position) as? ReselectableFragment)?.onReselect()
+ binding.accountTabLayout.addOnTabSelectedListener(
+ object : TabLayout.OnTabSelectedListener {
+ override fun onTabReselected(tab: TabLayout.Tab?) {
+ tab?.position?.let { position ->
+ (adapter.getFragment(position) as? ReselectableFragment)?.onReselect()
+ }
}
- }
- override fun onTabUnselected(tab: TabLayout.Tab?) {}
+ override fun onTabUnselected(tab: TabLayout.Tab?) {}
- override fun onTabSelected(tab: TabLayout.Tab?) {}
- })
+ override fun onTabSelected(tab: TabLayout.Tab?) {}
+ },
+ )
}
private fun handleWindowInsets() {
@@ -323,14 +325,14 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
binding.accountToolbar.navigationIcon = LayerDrawable(
arrayOf(
backgroundCircle,
- binding.accountToolbar.navigationIcon
- )
+ binding.accountToolbar.navigationIcon,
+ ),
)
binding.accountToolbar.overflowIcon = LayerDrawable(
arrayOf(
backgroundCircle,
- binding.accountToolbar.overflowIcon
- )
+ binding.accountToolbar.overflowIcon,
+ ),
)
binding.accountHeaderInfoContainer.background = MaterialShapeDrawable.createWithElevationOverlay(this, appBarElevation)
@@ -345,47 +347,49 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
binding.accountAvatarImageView.background = avatarBackground
// Add a listener to change the toolbar icon color when it enters/exits its collapsed state.
- binding.accountAppBarLayout.addOnOffsetChangedListener(object : AppBarLayout.OnOffsetChangedListener {
+ binding.accountAppBarLayout.addOnOffsetChangedListener(
+ object : AppBarLayout.OnOffsetChangedListener {
- override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
- if (verticalOffset == oldOffset) {
- return
- }
- oldOffset = verticalOffset
-
- if (titleVisibleHeight + verticalOffset < 0) {
- supportActionBar?.setDisplayShowTitleEnabled(true)
- } else {
- supportActionBar?.setDisplayShowTitleEnabled(false)
- }
+ override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
+ if (verticalOffset == oldOffset) {
+ return
+ }
+ oldOffset = verticalOffset
- if (hideFab && !blocking) {
- if (verticalOffset > oldOffset) {
- binding.accountFloatingActionButton.show()
+ if (titleVisibleHeight + verticalOffset < 0) {
+ supportActionBar?.setDisplayShowTitleEnabled(true)
+ } else {
+ supportActionBar?.setDisplayShowTitleEnabled(false)
}
- if (verticalOffset < oldOffset) {
- binding.accountFloatingActionButton.hide()
+
+ if (hideFab && !blocking) {
+ if (verticalOffset > oldOffset) {
+ binding.accountFloatingActionButton.show()
+ }
+ if (verticalOffset < oldOffset) {
+ binding.accountFloatingActionButton.hide()
+ }
}
- }
- val scaledAvatarSize = (avatarSize + verticalOffset) / avatarSize
+ val scaledAvatarSize = (avatarSize + verticalOffset) / avatarSize
- binding.accountAvatarImageView.scaleX = scaledAvatarSize
- binding.accountAvatarImageView.scaleY = scaledAvatarSize
+ binding.accountAvatarImageView.scaleX = scaledAvatarSize
+ binding.accountAvatarImageView.scaleY = scaledAvatarSize
- binding.accountAvatarImageView.visible(scaledAvatarSize > 0)
+ binding.accountAvatarImageView.visible(scaledAvatarSize > 0)
- val transparencyPercent = (abs(verticalOffset) / titleVisibleHeight.toFloat()).coerceAtMost(1f)
+ val transparencyPercent = (abs(verticalOffset) / titleVisibleHeight.toFloat()).coerceAtMost(1f)
- window.statusBarColor = argbEvaluator.evaluate(transparencyPercent, statusBarColorTransparent, statusBarColorOpaque) as Int
+ window.statusBarColor = argbEvaluator.evaluate(transparencyPercent, statusBarColorTransparent, statusBarColorOpaque) as Int
- val evaluatedToolbarColor = argbEvaluator.evaluate(transparencyPercent, Color.TRANSPARENT, toolbarColor) as Int
+ val evaluatedToolbarColor = argbEvaluator.evaluate(transparencyPercent, Color.TRANSPARENT, toolbarColor) as Int
- toolbarBackground.fillColor = ColorStateList.valueOf(evaluatedToolbarColor)
+ toolbarBackground.fillColor = ColorStateList.valueOf(evaluatedToolbarColor)
- binding.swipeToRefreshLayout.isEnabled = verticalOffset == 0
- }
- })
+ binding.swipeToRefreshLayout.isEnabled = verticalOffset == 0
+ }
+ },
+ )
}
private fun makeNotificationBarTransparent() {
@@ -439,7 +443,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
private fun setupRefreshLayout() {
binding.swipeToRefreshLayout.setOnRefreshListener { onRefresh() }
viewModel.isRefreshing.observe(
- this
+ this,
) { isRefreshing ->
binding.swipeToRefreshLayout.isRefreshing = isRefreshing == true
}
@@ -496,7 +500,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
try {
binding.accountDateJoined.text = resources.getString(
R.string.account_date_joined,
- SimpleDateFormat("MMMM, yyyy", Locale.getDefault()).format(account.createdAt)
+ SimpleDateFormat("MMMM, yyyy", Locale.getDefault()).format(account.createdAt),
)
binding.accountDateJoined.visibility = View.VISIBLE
} catch (e: ParseException) {
@@ -515,7 +519,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
account.avatar,
binding.accountAvatarImageView,
resources.getDimensionPixelSize(R.dimen.avatar_radius_94dp),
- animateAvatar
+ animateAvatar,
)
Glide.with(this)
@@ -537,7 +541,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
view.transitionName = uri
startActivity(
ViewMediaActivity.newSingleImageIntent(view.context, uri),
- ActivityOptionsCompat.makeSceneTransitionAnimation(this, view, uri).toBundle()
+ ActivityOptionsCompat.makeSceneTransitionAnimation(this, view, uri).toBundle(),
)
}
@@ -863,7 +867,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
loadedAccount?.let {
showMuteAccountDialog(
this,
- it.username
+ it.username,
) { notifications, duration ->
viewModel.muteAccount(notifications, duration)
}
@@ -880,7 +884,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
} else {
ComposeActivity.ComposeOptions(
mentionedUsernames = setOf(it.username),
- kind = ComposeActivity.ComposeKind.NEW
+ kind = ComposeActivity.ComposeKind.NEW,
)
}
val intent = ComposeActivity.startIntent(this, options)
@@ -921,7 +925,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvide
override fun onAccountSelected(account: AccountEntity) {
openAsAccount(loadedAccount.url, account)
}
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountFieldAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountFieldAdapter.kt
index 86acb81323..9358e6ce98 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountFieldAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountFieldAdapter.kt
@@ -30,7 +30,7 @@ import com.keylesspalace.tusky.util.setClickableText
class AccountFieldAdapter(
private val linkListener: LinkListener,
- private val animateEmojis: Boolean
+ private val animateEmojis: Boolean,
) : RecyclerView.Adapter>() {
var emojis: List = emptyList()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountPagerAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountPagerAdapter.kt
index 5649c28b4f..395e5f302f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountPagerAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountPagerAdapter.kt
@@ -25,7 +25,7 @@ import com.keylesspalace.tusky.util.CustomFragmentStateAdapter
class AccountPagerAdapter(
activity: FragmentActivity,
- private val accountId: String
+ private val accountId: String,
) : CustomFragmentStateAdapter(activity) {
override fun getItemCount() = TAB_COUNT
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountViewModel.kt
index b12e3923de..ff282e8970 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountViewModel.kt
@@ -28,7 +28,7 @@ import javax.inject.Inject
class AccountViewModel @Inject constructor(
private val mastodonApi: MastodonApi,
private val eventHub: EventHub,
- accountManager: AccountManager
+ accountManager: AccountManager,
) : ViewModel() {
val accountData = MutableLiveData>()
@@ -79,7 +79,7 @@ class AccountViewModel @Inject constructor(
accountData.postValue(Error(cause = t))
isDataLoading = false
isRefreshing.postValue(false)
- }
+ },
)
}
}
@@ -98,7 +98,7 @@ class AccountViewModel @Inject constructor(
{ t ->
Log.w(TAG, "failed obtaining relationships", t)
relationshipData.postValue(Error(cause = t))
- }
+ },
)
}
}
@@ -150,7 +150,7 @@ class AccountViewModel @Inject constructor(
}
}, { e ->
Log.e(TAG, "Error muting $instance", e)
- })
+ },)
}
}
@@ -163,7 +163,7 @@ class AccountViewModel @Inject constructor(
}
}, { e ->
Log.e(TAG, "Error unmuting $instance", e)
- })
+ },)
}
}
@@ -181,7 +181,7 @@ class AccountViewModel @Inject constructor(
private fun changeRelationship(
relationshipAction: RelationShipAction,
parameter: Boolean? = null,
- duration: Int? = null
+ duration: Int? = null,
) = viewModelScope.launch {
val relation = relationshipData.value?.data
val account = accountData.value?.data
@@ -224,7 +224,7 @@ class AccountViewModel @Inject constructor(
val relationshipCall = when (relationshipAction) {
RelationShipAction.FOLLOW -> mastodonApi.followAccount(
accountId,
- showReblogs = parameter ?: true
+ showReblogs = parameter ?: true,
)
RelationShipAction.UNFOLLOW -> mastodonApi.unfollowAccount(accountId)
RelationShipAction.BLOCK -> mastodonApi.blockAccount(accountId)
@@ -232,7 +232,7 @@ class AccountViewModel @Inject constructor(
RelationShipAction.MUTE -> mastodonApi.muteAccount(
accountId,
parameter ?: true,
- duration
+ duration,
)
RelationShipAction.UNMUTE -> mastodonApi.unmuteAccount(accountId)
RelationShipAction.SUBSCRIBE -> {
@@ -265,7 +265,7 @@ class AccountViewModel @Inject constructor(
{ t ->
Log.w(TAG, "failed loading relationship", t)
relationshipData.postValue(Error(relation, cause = t))
- }
+ },
)
}
@@ -283,7 +283,7 @@ class AccountViewModel @Inject constructor(
},
{ t ->
Log.w(TAG, "Error updating note", t)
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountFragment.kt
index 08c93756b9..a0836705b3 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountFragment.kt
@@ -64,7 +64,7 @@ class ListsForAccountFragment : DialogFragment(), Injectable {
dialog?.apply {
window?.setLayout(
LinearLayout.LayoutParams.MATCH_PARENT,
- LinearLayout.LayoutParams.MATCH_PARENT
+ LinearLayout.LayoutParams.MATCH_PARENT,
)
}
}
@@ -72,7 +72,7 @@ class ListsForAccountFragment : DialogFragment(), Injectable {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
+ savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.fragment_lists_for_account, container, false)
}
@@ -145,14 +145,14 @@ class ListsForAccountFragment : DialogFragment(), Injectable {
private object Differ : DiffUtil.ItemCallback() {
override fun areItemsTheSame(
oldItem: AccountListState,
- newItem: AccountListState
+ newItem: AccountListState,
): Boolean {
return oldItem.list.id == newItem.list.id
}
override fun areContentsTheSame(
oldItem: AccountListState,
- newItem: AccountListState
+ newItem: AccountListState,
): Boolean {
return oldItem == newItem
}
@@ -162,7 +162,7 @@ class ListsForAccountFragment : DialogFragment(), Injectable {
ListAdapter>(Differ) {
override fun onCreateViewHolder(
parent: ViewGroup,
- viewType: Int
+ viewType: Int,
): BindingHolder {
val binding =
ItemAddOrRemoveFromListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountViewModel.kt
index 110096966f..9de51c8d71 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/list/ListsForAccountViewModel.kt
@@ -35,23 +35,23 @@ import javax.inject.Inject
data class AccountListState(
val list: MastoList,
- val includesAccount: Boolean
+ val includesAccount: Boolean,
)
data class ActionError(
val error: Throwable,
val type: Type,
- val listId: String
+ val listId: String,
) : Throwable(error) {
enum class Type {
ADD,
- REMOVE
+ REMOVE,
}
}
@OptIn(ExperimentalCoroutinesApi::class)
class ListsForAccountViewModel @Inject constructor(
- private val mastodonApi: MastodonApi
+ private val mastodonApi: MastodonApi,
) : ViewModel() {
private lateinit var accountId: String
@@ -75,16 +75,16 @@ class ListsForAccountViewModel @Inject constructor(
runCatching {
val (all, includes) = listOf(
async { mastodonApi.getLists() },
- async { mastodonApi.getListsIncludesAccount(accountId) }
+ async { mastodonApi.getListsIncludesAccount(accountId) },
).awaitAll()
_states.emit(
all.getOrThrow().map { list ->
AccountListState(
list = list,
- includesAccount = includes.getOrThrow().any { it.id == list.id }
+ includesAccount = includes.getOrThrow().any { it.id == list.id },
)
- }
+ },
)
}
.onFailure {
@@ -105,7 +105,7 @@ class ListsForAccountViewModel @Inject constructor(
} else {
state
}
- }
+ },
)
}
.onFailure {
@@ -126,7 +126,7 @@ class ListsForAccountViewModel @Inject constructor(
} else {
state
}
- }
+ },
)
}
.onFailure {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaFragment.kt
index 5a81c418e2..7382e8ac5c 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaFragment.kt
@@ -88,7 +88,7 @@ class AccountMediaFragment :
adapter = AccountMediaGridAdapter(
useBlurhash = useBlurhash,
context = view.context,
- onAttachmentClickListener = ::onAttachmentClick
+ onAttachmentClickListener = ::onAttachmentClick,
)
val columnCount = view.context.resources.getInteger(R.integer.profile_media_column_count)
@@ -174,7 +174,8 @@ class AccountMediaFragment :
Attachment.Type.IMAGE,
Attachment.Type.GIFV,
Attachment.Type.VIDEO,
- Attachment.Type.AUDIO -> {
+ Attachment.Type.AUDIO,
+ -> {
val intent = ViewMediaActivity.newIntent(context, attachmentsFromSameStatus, currentIndex)
if (activity != null) {
val url = selected.attachment.url
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaGridAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaGridAdapter.kt
index aecbeb0bb6..bf7570d37f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaGridAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaGridAdapter.kt
@@ -26,7 +26,7 @@ import java.util.Random
class AccountMediaGridAdapter(
private val useBlurhash: Boolean,
context: Context,
- private val onAttachmentClickListener: (AttachmentViewData, View) -> Unit
+ private val onAttachmentClickListener: (AttachmentViewData, View) -> Unit,
) : PagingDataAdapter>(
object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(oldItem: AttachmentViewData, newItem: AttachmentViewData): Boolean {
@@ -36,7 +36,7 @@ class AccountMediaGridAdapter(
override fun areContentsTheSame(oldItem: AttachmentViewData, newItem: AttachmentViewData): Boolean {
return oldItem == newItem
}
- }
+ },
) {
private val baseItemBackgroundColor = MaterialColors.getColor(context, com.google.android.material.R.attr.colorSurface, Color.BLACK)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaPagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaPagingSource.kt
index 0ed67cf455..6c6fbe923b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaPagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaPagingSource.kt
@@ -20,7 +20,7 @@ import androidx.paging.PagingState
import com.keylesspalace.tusky.viewdata.AttachmentViewData
class AccountMediaPagingSource(
- private val viewModel: AccountMediaViewModel
+ private val viewModel: AccountMediaViewModel,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): String? = null
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaRemoteMediator.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaRemoteMediator.kt
index 52535a6a5c..8ea2860315 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaRemoteMediator.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaRemoteMediator.kt
@@ -29,11 +29,11 @@ import retrofit2.HttpException
class AccountMediaRemoteMediator(
private val api: MastodonApi,
private val activeAccount: AccountEntity,
- private val viewModel: AccountMediaViewModel
+ private val viewModel: AccountMediaViewModel,
) : RemoteMediator() {
override suspend fun load(
loadType: LoadType,
- state: PagingState
+ state: PagingState,
): MediatorResult {
try {
val statusResponse = when (loadType) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaViewModel.kt
index ee5ffd011b..649028a632 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/media/AccountMediaViewModel.kt
@@ -28,7 +28,7 @@ import javax.inject.Inject
class AccountMediaViewModel @Inject constructor(
private val accountManager: AccountManager,
- api: MastodonApi
+ api: MastodonApi,
) : ViewModel() {
lateinit var accountId: String
@@ -43,16 +43,16 @@ class AccountMediaViewModel @Inject constructor(
val media = Pager(
config = PagingConfig(
pageSize = LOAD_AT_ONCE,
- prefetchDistance = LOAD_AT_ONCE * 2
+ prefetchDistance = LOAD_AT_ONCE * 2,
),
pagingSourceFactory = {
AccountMediaPagingSource(
- viewModel = this
+ viewModel = this,
).also { source ->
currentSource = source
}
},
- remoteMediator = AccountMediaRemoteMediator(api, activeAccount, this)
+ remoteMediator = AccountMediaRemoteMediator(api, activeAccount, this),
).flow
.cachedIn(viewModelScope)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/media/GridSpacingItemDecoration.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/media/GridSpacingItemDecoration.kt
index 34ad159e83..92503a7062 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/account/media/GridSpacingItemDecoration.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/account/media/GridSpacingItemDecoration.kt
@@ -23,14 +23,14 @@ import androidx.recyclerview.widget.RecyclerView.ItemDecoration
class GridSpacingItemDecoration(
private val spanCount: Int,
private val spacing: Int,
- private val topOffset: Int
+ private val topOffset: Int,
) : ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
- state: RecyclerView.State
+ state: RecyclerView.State,
) {
val position = parent.getChildAdapterPosition(view) // item position
if (position < topOffset) return
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListActivity.kt
index 2419dc915c..4d0c8f416b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListActivity.kt
@@ -38,7 +38,7 @@ class AccountListActivity : BottomSheetActivity(), HasAndroidInjector {
MUTES,
FOLLOW_REQUESTS,
REBLOGGED,
- FAVOURITED
+ FAVOURITED,
}
override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt
index 30d75402dc..55e6f58718 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt
@@ -115,7 +115,7 @@ class AccountListFragment :
Type.FOLLOW_REQUESTS -> {
val headerAdapter = FollowRequestsHeaderAdapter(
instanceName = activeAccount.domain,
- accountLocked = activeAccount.locked
+ accountLocked = activeAccount.locked,
)
val followRequestsAdapter = FollowRequestsAdapter(this, this, animateAvatar, animateEmojis, showBotOverlay)
binding.recyclerView.adapter = ConcatAdapter(headerAdapter, followRequestsAdapter)
@@ -247,7 +247,7 @@ class AccountListFragment :
override fun onRespondToFollowRequest(
accept: Boolean,
accountId: String,
- position: Int
+ position: Int,
) {
if (accept) {
api.authorizeFollowRequest(accountId)
@@ -266,7 +266,7 @@ class AccountListFragment :
"reject"
}
Log.e(TAG, "Failed to $verb account id $accountId.", throwable)
- }
+ },
)
}
@@ -365,7 +365,7 @@ class AccountListFragment :
binding.messageView.setup(
R.drawable.elephant_friend_empty,
R.string.message_empty,
- null
+ null,
)
} else {
binding.messageView.hide()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/AccountAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/AccountAdapter.kt
index 7d050e7e4f..1fa1db1b1f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/AccountAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/AccountAdapter.kt
@@ -28,7 +28,7 @@ abstract class AccountAdapter internal constructo
protected val accountActionListener: AccountActionListener,
protected val animateAvatar: Boolean,
protected val animateEmojis: Boolean,
- protected val showBotOverlay: Boolean
+ protected val showBotOverlay: Boolean,
) : RecyclerView.Adapter() {
protected var accountList: MutableList = mutableListOf()
@@ -51,7 +51,7 @@ abstract class AccountAdapter internal constructo
final override fun onCreateViewHolder(
parent: ViewGroup,
- viewType: Int
+ viewType: Int,
): RecyclerView.ViewHolder {
return when (viewType) {
VIEW_TYPE_ACCOUNT -> this.createAccountViewHolder(parent)
@@ -61,7 +61,7 @@ abstract class AccountAdapter internal constructo
}
private fun createFooterViewHolder(
- parent: ViewGroup
+ parent: ViewGroup,
): RecyclerView.ViewHolder {
val binding = ItemFooterBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return BindingHolder(binding)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/BlocksAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/BlocksAdapter.kt
index 2ef520d5ed..2b95112f0e 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/BlocksAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/BlocksAdapter.kt
@@ -30,12 +30,12 @@ class BlocksAdapter(
accountActionListener: AccountActionListener,
animateAvatar: Boolean,
animateEmojis: Boolean,
- showBotOverlay: Boolean
+ showBotOverlay: Boolean,
) : AccountAdapter>(
accountActionListener = accountActionListener,
animateAvatar = animateAvatar,
animateEmojis = animateEmojis,
- showBotOverlay = showBotOverlay
+ showBotOverlay = showBotOverlay,
) {
override fun createAccountViewHolder(parent: ViewGroup): BindingHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowAdapter.kt
index 87b62486de..2b867ca13b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowAdapter.kt
@@ -26,12 +26,12 @@ class FollowAdapter(
accountActionListener: AccountActionListener,
animateAvatar: Boolean,
animateEmojis: Boolean,
- showBotOverlay: Boolean
+ showBotOverlay: Boolean,
) : AccountAdapter(
accountActionListener = accountActionListener,
animateAvatar = animateAvatar,
animateEmojis = animateEmojis,
- showBotOverlay = showBotOverlay
+ showBotOverlay = showBotOverlay,
) {
override fun createAccountViewHolder(parent: ViewGroup): AccountViewHolder {
@@ -44,7 +44,7 @@ class FollowAdapter(
accountList[position],
animateAvatar,
animateEmojis,
- showBotOverlay
+ showBotOverlay,
)
viewHolder.setupActionListener(accountActionListener)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsAdapter.kt
index fc860e59e3..8707aaa497 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsAdapter.kt
@@ -28,25 +28,25 @@ class FollowRequestsAdapter(
private val linkListener: LinkListener,
animateAvatar: Boolean,
animateEmojis: Boolean,
- showBotOverlay: Boolean
+ showBotOverlay: Boolean,
) : AccountAdapter(
accountActionListener = accountActionListener,
animateAvatar = animateAvatar,
animateEmojis = animateEmojis,
- showBotOverlay = showBotOverlay
+ showBotOverlay = showBotOverlay,
) {
override fun createAccountViewHolder(parent: ViewGroup): FollowRequestViewHolder {
val binding = ItemFollowRequestBinding.inflate(
LayoutInflater.from(parent.context),
parent,
- false
+ false,
)
return FollowRequestViewHolder(
binding,
accountActionListener,
linkListener,
- showHeader = false
+ showHeader = false,
)
}
@@ -55,7 +55,7 @@ class FollowRequestsAdapter(
account = accountList[position],
animateAvatar = animateAvatar,
animateEmojis = animateEmojis,
- showBotOverlay = showBotOverlay
+ showBotOverlay = showBotOverlay,
)
viewHolder.setupActionListener(accountActionListener, accountList[position].id)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsHeaderAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsHeaderAdapter.kt
index 85cf4e20a5..1b22aa71da 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsHeaderAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/FollowRequestsHeaderAdapter.kt
@@ -24,7 +24,7 @@ import com.keylesspalace.tusky.util.BindingHolder
class FollowRequestsHeaderAdapter(
private val instanceName: String,
- private val accountLocked: Boolean
+ private val accountLocked: Boolean,
) : RecyclerView.Adapter>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/MutesAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/MutesAdapter.kt
index 288d133945..24677205e7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/MutesAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/accountlist/adapter/MutesAdapter.kt
@@ -31,12 +31,12 @@ class MutesAdapter(
accountActionListener: AccountActionListener,
animateAvatar: Boolean,
animateEmojis: Boolean,
- showBotOverlay: Boolean
+ showBotOverlay: Boolean,
) : AccountAdapter>(
accountActionListener = accountActionListener,
animateAvatar = animateAvatar,
animateEmojis = animateEmojis,
- showBotOverlay = showBotOverlay
+ showBotOverlay = showBotOverlay,
) {
private val mutingNotificationsMap = HashMap()
@@ -83,7 +83,7 @@ class MutesAdapter(
false,
account.id,
viewHolder.bindingAdapterPosition,
- false
+ false,
)
}
binding.mutedUserMuteNotifications.setOnCheckedChangeListener { _, isChecked ->
@@ -91,7 +91,7 @@ class MutesAdapter(
true,
account.id,
viewHolder.bindingAdapterPosition,
- isChecked
+ isChecked,
)
}
binding.root.setOnClickListener { accountActionListener.onViewAccount(account.id) }
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementAdapter.kt
index 8f30c5e49f..5686413f63 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementAdapter.kt
@@ -47,7 +47,7 @@ class AnnouncementAdapter(
private var items: List = emptyList(),
private val listener: AnnouncementActionListener,
private val wellbeingEnabled: Boolean = false,
- private val animateEmojis: Boolean = false
+ private val animateEmojis: Boolean = false,
) : RecyclerView.Adapter>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementsViewModel.kt
index 8abad91ac7..3154a25e68 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/announcements/AnnouncementsViewModel.kt
@@ -37,7 +37,7 @@ import javax.inject.Inject
class AnnouncementsViewModel @Inject constructor(
private val instanceInfoRepo: InstanceInfoRepository,
private val mastodonApi: MastodonApi,
- private val eventHub: EventHub
+ private val eventHub: EventHub,
) : ViewModel() {
private val announcementsMutable = MutableLiveData>>()
@@ -70,15 +70,15 @@ class AnnouncementsViewModel @Inject constructor(
Log.d(
TAG,
"Failed to mark announcement as read.",
- throwable
+ throwable,
)
- }
+ },
)
}
},
{
announcementsMutable.postValue(Error(cause = it))
- }
+ },
)
}
}
@@ -98,7 +98,7 @@ class AnnouncementsViewModel @Inject constructor(
if (reaction.name == name) {
reaction.copy(
count = reaction.count + 1,
- me = true
+ me = true,
)
} else {
reaction
@@ -113,22 +113,22 @@ class AnnouncementsViewModel @Inject constructor(
1,
true,
url,
- staticUrl
+ staticUrl,
)
- }
+ },
)
- }
+ },
)
} else {
announcement
}
- }
- )
+ },
+ ),
)
},
{
Log.w(TAG, "Failed to add reaction to the announcement.", it)
- }
+ },
)
}
}
@@ -148,7 +148,7 @@ class AnnouncementsViewModel @Inject constructor(
if (reaction.count > 1) {
reaction.copy(
count = reaction.count - 1,
- me = false
+ me = false,
)
} else {
null
@@ -156,18 +156,18 @@ class AnnouncementsViewModel @Inject constructor(
} else {
reaction
}
- }
+ },
)
} else {
announcement
}
- }
- )
+ },
+ ),
)
},
{
Log.w(TAG, "Failed to remove reaction from the announcement.", it)
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
index 14f9b947e6..4b06ae2994 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
@@ -191,7 +191,7 @@ class ComposeActivity :
size,
itemOld.description,
null, // Intentionally reset focus when cropping
- itemOld
+ itemOld,
)
}
}
@@ -230,7 +230,7 @@ class ComposeActivity :
// TODO this is inconsistent to CaptionDialog (device rotation)?
},
onEditImage = this::editImageInQueue,
- onRemove = this::removeMediaFromQueue
+ onRemove = this::removeMediaFromQueue,
)
binding.composeMediaPreviewBar.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
@@ -248,7 +248,7 @@ class ComposeActivity :
if (accountManager.shouldDisplaySelfUsername(this)) {
binding.composeUsernameView.text = getString(
R.string.compose_active_account_description,
- activeAccount.fullName
+ activeAccount.fullName,
)
binding.composeUsernameView.show()
} else {
@@ -380,8 +380,8 @@ class ComposeActivity :
this,
preferences.getBoolean(PrefKeys.ANIMATE_GIF_AVATARS, false),
preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
- preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true)
- )
+ preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true),
+ ),
)
binding.composeEditField.setTokenizer(ComposeTokenizer())
@@ -473,8 +473,8 @@ class ComposeActivity :
displayTransientMessage(
getString(
R.string.error_media_upload_sending_fmt,
- throwable.message
- )
+ throwable.message,
+ ),
)
}
}
@@ -542,7 +542,7 @@ class ComposeActivity :
handleCloseButton()
}
- }
+ },
)
}
@@ -583,11 +583,11 @@ class ComposeActivity :
activeAccount.profilePictureUrl,
binding.composeAvatar,
avatarSize / 8,
- animateAvatars
+ animateAvatars,
)
binding.composeAvatar.contentDescription = getString(
R.string.compose_active_account_description,
- activeAccount.fullName
+ activeAccount.fullName,
)
}
@@ -821,7 +821,7 @@ class ComposeActivity :
ActivityCompat.requestPermissions(
this@ComposeActivity,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
- PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE
+ PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE,
)
} else {
pickMediaFile.launch(true)
@@ -830,7 +830,7 @@ class ComposeActivity :
}
override fun onSlide(bottomSheet: View, slideOffset: Float) {}
- }
+ },
)
addMediaBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
@@ -845,7 +845,7 @@ class ComposeActivity :
maxOptionLength = instanceParams.pollMaxLength,
minDuration = instanceParams.pollMinDuration,
maxDuration = instanceParams.pollMaxDuration,
- onUpdatePoll = viewModel::updatePoll
+ onUpdatePoll = viewModel::updatePoll,
)
}
@@ -889,7 +889,7 @@ class ComposeActivity :
return statusLength(
binding.composeEditField.text,
binding.composeContentWarningField.text,
- charactersReservedPerUrl
+ charactersReservedPerUrl,
)
}
@@ -935,7 +935,7 @@ class ComposeActivity :
for (i in 0 until content.clip.itemCount) {
pickMedia(
content.clip.getItemAt(i).uri,
- contentInfo.clip.description.label as String?
+ contentInfo.clip.description.label as String?,
)
}
}
@@ -976,7 +976,7 @@ class ComposeActivity :
Snackbar.make(
binding.activityCompose,
R.string.error_media_upload_permission,
- Snackbar.LENGTH_SHORT
+ Snackbar.LENGTH_SHORT,
).apply {
setAction(R.string.action_retry) { onMediaPick() }
// necessary so snackbar is shown over everything
@@ -1001,7 +1001,7 @@ class ComposeActivity :
photoUploadUri = FileProvider.getUriForFile(
this,
BuildConfig.APPLICATION_ID + ".fileprovider",
- photoFile
+ photoFile,
)
takePicture.launch(photoUploadUri)
}
@@ -1015,7 +1015,7 @@ class ComposeActivity :
android.R.attr.textColorTertiary
} else {
R.attr.textColorDisabled
- }
+ },
)
}
@@ -1027,7 +1027,7 @@ class ComposeActivity :
android.R.attr.textColorTertiary
} else {
R.attr.textColorDisabled
- }
+ },
)
binding.addPollTextActionTextView.setTextColor(textColor)
binding.addPollTextActionTextView.compoundDrawablesRelative[0].colorFilter = PorterDuffColorFilter(textColor, PorterDuff.Mode.SRC_IN)
@@ -1049,7 +1049,7 @@ class ComposeActivity :
options(uri = item.uri) {
setOutputUri(uriNew)
setOutputCompressFormat(if (isPng) Bitmap.CompressFormat.PNG else Bitmap.CompressFormat.JPEG)
- }
+ },
)
}
@@ -1227,7 +1227,7 @@ class ComposeActivity :
null,
getString(R.string.saving_draft),
true,
- false
+ false,
)
} else {
null
@@ -1263,7 +1263,7 @@ class ComposeActivity :
val id: String? = null,
val description: String? = null,
val focus: Attachment.Focus? = null,
- val state: State
+ val state: State,
) {
enum class Type {
IMAGE, VIDEO, AUDIO;
@@ -1306,7 +1306,7 @@ class ComposeActivity :
EDIT_DRAFT,
/** Editing an an existing scheduled status */
- EDIT_SCHEDULED
+ EDIT_SCHEDULED,
}
@Parcelize
@@ -1332,7 +1332,7 @@ class ComposeActivity :
var modifiedInitialState: Boolean? = null,
var language: String? = null,
var statusId: String? = null,
- var kind: ComposeKind? = null
+ var kind: ComposeKind? = null,
) : Parcelable
companion object {
@@ -1352,7 +1352,7 @@ class ComposeActivity :
@JvmStatic
fun startIntent(
context: Context,
- options: ComposeOptions
+ options: ComposeOptions,
): Intent {
return Intent(context, ComposeActivity::class.java).apply {
putExtra(COMPOSE_OPTIONS_EXTRA, options)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeAutoCompleteAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeAutoCompleteAdapter.kt
index e825798cf4..1fea71745f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeAutoCompleteAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeAutoCompleteAdapter.kt
@@ -37,7 +37,7 @@ class ComposeAutoCompleteAdapter(
private val autocompletionProvider: AutocompletionProvider,
private val animateAvatar: Boolean,
private val animateEmojis: Boolean,
- private val showBotBadge: Boolean
+ private val showBotBadge: Boolean,
) : BaseAdapter(), Filterable {
private var resultList: List = emptyList()
@@ -113,7 +113,7 @@ class ComposeAutoCompleteAdapter(
account.avatar,
binding.avatar,
avatarRadius,
- animateAvatar
+ animateAvatar,
)
binding.avatarBadge.visible(showBotBadge && account.bot)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt
index 0919d29d04..01d038d167 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeViewModel.kt
@@ -58,7 +58,7 @@ class ComposeViewModel @Inject constructor(
private val mediaUploader: MediaUploader,
private val serviceClient: ServiceClient,
private val draftHelper: DraftHelper,
- instanceInfoRepo: InstanceInfoRepository
+ instanceInfoRepo: InstanceInfoRepository,
) : ViewModel() {
private var replyingStatusAuthor: String? = null
@@ -124,7 +124,7 @@ class ComposeViewModel @Inject constructor(
mediaSize: Long,
description: String? = null,
focus: Attachment.Focus? = null,
- replaceItem: QueuedMedia? = null
+ replaceItem: QueuedMedia? = null,
): QueuedMedia {
var stashMediaItem: QueuedMedia? = null
@@ -136,7 +136,7 @@ class ComposeViewModel @Inject constructor(
mediaSize = mediaSize,
description = description,
focus = focus,
- state = QueuedMedia.State.UPLOADING
+ state = QueuedMedia.State.UPLOADING,
)
stashMediaItem = mediaItem
@@ -164,7 +164,7 @@ class ComposeViewModel @Inject constructor(
item.copy(
id = event.mediaId,
uploadPercent = -1,
- state = if (event.processed) { QueuedMedia.State.PROCESSED } else { QueuedMedia.State.UNPROCESSED }
+ state = if (event.processed) { QueuedMedia.State.PROCESSED } else { QueuedMedia.State.UNPROCESSED },
)
is UploadEvent.ErrorEvent -> {
media.update { mediaList -> mediaList.filter { it.localId != mediaItem.localId } }
@@ -197,7 +197,7 @@ class ComposeViewModel @Inject constructor(
id = id,
description = description,
focus = focus,
- state = QueuedMedia.State.PUBLISHED
+ state = QueuedMedia.State.PUBLISHED,
)
mediaList + mediaItem
}
@@ -297,7 +297,7 @@ class ComposeViewModel @Inject constructor(
failedToSendAlert = false,
scheduledAt = scheduledAt.value,
language = postLanguage,
- statusId = originalStatusId
+ statusId = originalStatusId,
)
}
@@ -308,7 +308,7 @@ class ComposeViewModel @Inject constructor(
suspend fun sendStatus(
content: String,
spoilerText: String,
- accountId: Long
+ accountId: Long,
) {
if (!scheduledTootId.isNullOrEmpty()) {
api.deleteScheduledStatus(scheduledTootId!!)
@@ -321,7 +321,7 @@ class ComposeViewModel @Inject constructor(
uri = item.uri.toString(),
description = item.description,
focus = item.focus,
- processed = item.state == QueuedMedia.State.PROCESSED || item.state == QueuedMedia.State.PUBLISHED
+ processed = item.state == QueuedMedia.State.PROCESSED || item.state == QueuedMedia.State.PUBLISHED,
)
}
val tootToSend = StatusToSend(
@@ -340,7 +340,7 @@ class ComposeViewModel @Inject constructor(
idempotencyKey = randomAlphanumericString(16),
retries = 0,
language = postLanguage,
- statusId = originalStatusId
+ statusId = originalStatusId,
)
serviceClient.sendToot(tootToSend)
@@ -379,7 +379,7 @@ class ComposeViewModel @Inject constructor(
}, { e ->
Log.e(TAG, "Autocomplete search for $token failed.", e)
emptyList()
- })
+ },)
}
'#' -> {
return api.searchSync(query = token, type = SearchType.Hashtag.apiParameter, limit = 10)
@@ -388,7 +388,7 @@ class ComposeViewModel @Inject constructor(
}, { e ->
Log.e(TAG, "Autocomplete search for $token failed.", e)
emptyList()
- })
+ },)
}
':' -> {
val emojiList = emoji.replayCache.firstOrNull() ?: return emptyList()
@@ -420,7 +420,7 @@ class ComposeViewModel @Inject constructor(
val replyVisibility = composeOptions?.replyVisibility ?: Status.Visibility.UNKNOWN
startingVisibility = Status.Visibility.byNum(
- preferredVisibility.num.coerceAtLeast(replyVisibility.num)
+ preferredVisibility.num.coerceAtLeast(replyVisibility.num),
)
inReplyToId = composeOptions?.inReplyToId
@@ -516,7 +516,7 @@ class ComposeViewModel @Inject constructor(
SAVE_OR_DISCARD,
UPDATE_OR_DISCARD,
CONTINUE_EDITING_OR_DISCARD_CHANGES, // editing post
- CONTINUE_EDITING_OR_DISCARD_DRAFT // edit draft
+ CONTINUE_EDITING_OR_DISCARD_DRAFT, // edit draft
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ImageDownsizer.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ImageDownsizer.kt
index 39b444688f..7290685fa0 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ImageDownsizer.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ImageDownsizer.kt
@@ -39,7 +39,7 @@ fun downsizeImage(
uri: Uri,
sizeLimit: Int,
contentResolver: ContentResolver,
- tempFile: File
+ tempFile: File,
): Boolean {
val decodeBoundsInputStream = try {
contentResolver.openInputStream(uri)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaPreviewAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaPreviewAdapter.kt
index 6cd590d7e0..2437ca18f4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaPreviewAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaPreviewAdapter.kt
@@ -34,7 +34,7 @@ class MediaPreviewAdapter(
private val onAddCaption: (ComposeActivity.QueuedMedia) -> Unit,
private val onAddFocus: (ComposeActivity.QueuedMedia) -> Unit,
private val onEditImage: (ComposeActivity.QueuedMedia) -> Unit,
- private val onRemove: (ComposeActivity.QueuedMedia) -> Unit
+ private val onRemove: (ComposeActivity.QueuedMedia) -> Unit,
) : RecyclerView.Adapter() {
fun submitList(list: List) {
@@ -120,7 +120,7 @@ class MediaPreviewAdapter(
override fun areContentsTheSame(oldItem: ComposeActivity.QueuedMedia, newItem: ComposeActivity.QueuedMedia): Boolean {
return oldItem == newItem
}
- }
+ },
)
inner class PreviewViewHolder(val progressImageView: ProgressImageView) :
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaUploader.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaUploader.kt
index 58c3cf2a05..021dcb1af1 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaUploader.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/MediaUploader.kt
@@ -71,7 +71,7 @@ sealed class UploadEvent {
data class UploadData(
val flow: Flow,
- val scope: CoroutineScope
+ val scope: CoroutineScope,
)
fun createNewImageFile(context: Context, suffix: String = ".jpg"): File {
@@ -82,7 +82,7 @@ fun createNewImageFile(context: Context, suffix: String = ".jpg"): File {
return File.createTempFile(
imageFileName, /* prefix */
suffix, /* suffix */
- storageDir /* directory */
+ storageDir, /* directory */
)
}
@@ -96,7 +96,7 @@ class UploadServerError(val errorMessage: String) : Exception()
@Singleton
class MediaUploader @Inject constructor(
private val context: Context,
- private val mediaUploadApi: MediaUploadApi
+ private val mediaUploadApi: MediaUploadApi,
) {
private val uploads = mutableMapOf()
@@ -175,7 +175,7 @@ class MediaUploader @Inject constructor(
uri = FileProvider.getUriForFile(
context,
BuildConfig.APPLICATION_ID + ".fileprovider",
- file
+ file,
)
mediaSize = getMediaSize(contentResolver, uri)
}
@@ -198,7 +198,7 @@ class MediaUploader @Inject constructor(
uri = FileProvider.getUriForFile(
context,
BuildConfig.APPLICATION_ID + ".fileprovider",
- file
+ file,
)
mediaSize = getMediaSize(contentResolver, uri)
}
@@ -268,7 +268,7 @@ class MediaUploader @Inject constructor(
context.getString(R.string.app_name),
Date().time.toString(),
randomAlphanumericString(10),
- fileExtension
+ fileExtension,
)
val stream = contentResolver.openInputStream(media.uri)
@@ -279,7 +279,7 @@ class MediaUploader @Inject constructor(
val fileBody = ProgressRequestBody(
stream!!,
media.mediaSize,
- mimeType.toMediaTypeOrNull()!!
+ mimeType.toMediaTypeOrNull()!!,
) { percentage ->
if (percentage != lastProgress) {
trySend(UploadEvent.ProgressEvent(percentage))
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt
index 2d76e2d038..b1b0a2dbca 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt
@@ -33,7 +33,7 @@ fun showAddPollDialog(
maxOptionLength: Int,
minDuration: Int,
maxDuration: Int,
- onUpdatePoll: (NewPoll) -> Unit
+ onUpdatePoll: (NewPoll) -> Unit,
) {
val binding = DialogAddPollBinding.inflate(LayoutInflater.from(context))
@@ -54,7 +54,7 @@ fun showAddPollDialog(
},
onOptionChanged = { valid ->
dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = valid
- }
+ },
)
binding.pollChoices.adapter = adapter
@@ -94,8 +94,8 @@ fun showAddPollDialog(
NewPoll(
options = adapter.pollOptions,
expiresIn = durations[selectedPollDurationId],
- multiple = binding.multipleChoicesCheckBox.isChecked
- )
+ multiple = binding.multipleChoicesCheckBox.isChecked,
+ ),
)
dialog.dismiss()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollOptionsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollOptionsAdapter.kt
index 4d7ecdca85..b9d93a7b1d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollOptionsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollOptionsAdapter.kt
@@ -30,7 +30,7 @@ class AddPollOptionsAdapter(
private var options: MutableList,
private val maxOptionLength: Int,
private val onOptionRemoved: (Boolean) -> Unit,
- private val onOptionChanged: (Boolean) -> Unit
+ private val onOptionChanged: (Boolean) -> Unit,
) : RecyclerView.Adapter>() {
val pollOptions: List
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt
index c066b3d9fe..9ae8ebe538 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt
@@ -56,7 +56,7 @@ class CaptionDialog : DialogFragment() {
input.hint = resources.getQuantityString(
R.plurals.hint_describe_for_visually_impaired,
MEDIA_DESCRIPTION_CHARACTER_LIMIT,
- MEDIA_DESCRIPTION_CHARACTER_LIMIT
+ MEDIA_DESCRIPTION_CHARACTER_LIMIT,
)
input.filters = arrayOf(InputFilter.LengthFilter(MEDIA_DESCRIPTION_CHARACTER_LIMIT))
input.setText(arguments?.getString(EXISTING_DESCRIPTION_ARG))
@@ -79,18 +79,20 @@ class CaptionDialog : DialogFragment() {
Glide.with(this)
.load(previewUri)
.downsample(DownsampleStrategy.CENTER_INSIDE)
- .into(object : CustomTarget(4096, 4096) {
- override fun onLoadCleared(placeholder: Drawable?) {
- imageView.setImageDrawable(placeholder)
- }
-
- override fun onResourceReady(
- resource: Drawable,
- transition: Transition?
- ) {
- imageView.setImageDrawable(resource)
- }
- })
+ .into(
+ object : CustomTarget(4096, 4096) {
+ override fun onLoadCleared(placeholder: Drawable?) {
+ imageView.setImageDrawable(placeholder)
+ }
+
+ override fun onResourceReady(
+ resource: Drawable,
+ transition: Transition?,
+ ) {
+ imageView.setImageDrawable(resource)
+ }
+ },
+ )
return dialog
}
@@ -103,7 +105,7 @@ class CaptionDialog : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
+ savedInstanceState: Bundle?,
): View? {
savedInstanceState?.getString(DESCRIPTION_KEY)?.let {
input.setText(it)
@@ -124,12 +126,12 @@ class CaptionDialog : DialogFragment() {
fun newInstance(
localId: Int,
existingDescription: String?,
- previewUri: Uri
+ previewUri: Uri,
) = CaptionDialog().apply {
arguments = bundleOf(
LOCAL_ID_ARG to localId,
EXISTING_DESCRIPTION_ARG to existingDescription,
- PREVIEW_URI_ARG to previewUri
+ PREVIEW_URI_ARG to previewUri,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt
index 93c99ee6f5..08e04b2431 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt
@@ -37,7 +37,7 @@ import kotlinx.coroutines.launch
fun T.makeFocusDialog(
existingFocus: Focus?,
previewUri: Uri,
- onUpdateFocus: suspend (Focus) -> Unit
+ onUpdateFocus: suspend (Focus) -> Unit,
) where T : AppCompatActivity, T : LifecycleOwner {
val focus = existingFocus ?: Focus(0.0f, 0.0f) // Default to center
@@ -48,31 +48,33 @@ fun T.makeFocusDialog(
Glide.with(this)
.load(previewUri)
.downsample(DownsampleStrategy.CENTER_INSIDE)
- .listener(object : RequestListener {
- override fun onLoadFailed(p0: GlideException?, p1: Any?, p2: Target?, p3: Boolean): Boolean {
- return false
- }
+ .listener(
+ object : RequestListener {
+ override fun onLoadFailed(p0: GlideException?, p1: Any?, p2: Target?, p3: Boolean): Boolean {
+ return false
+ }
- override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
- val width = resource!!.intrinsicWidth
- val height = resource.intrinsicHeight
+ override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
+ val width = resource!!.intrinsicWidth
+ val height = resource.intrinsicHeight
- dialogBinding.focusIndicator.setImageSize(width, height)
+ dialogBinding.focusIndicator.setImageSize(width, height)
- // We want the dialog to be a little taller than the image, so you can slide your thumb past the image border,
- // but if it's *too* much taller that looks weird. See if a threshold has been crossed:
- if (width > height) {
- val maxHeight = dialogBinding.focusIndicator.maxAttractiveHeight()
+ // We want the dialog to be a little taller than the image, so you can slide your thumb past the image border,
+ // but if it's *too* much taller that looks weird. See if a threshold has been crossed:
+ if (width > height) {
+ val maxHeight = dialogBinding.focusIndicator.maxAttractiveHeight()
- if (dialogBinding.imageView.height > maxHeight) {
- val verticalShrinkLayout = FrameLayout.LayoutParams(width, maxHeight)
- dialogBinding.imageView.layoutParams = verticalShrinkLayout
- dialogBinding.focusIndicator.layoutParams = verticalShrinkLayout
+ if (dialogBinding.imageView.height > maxHeight) {
+ val verticalShrinkLayout = FrameLayout.LayoutParams(width, maxHeight)
+ dialogBinding.imageView.layoutParams = verticalShrinkLayout
+ dialogBinding.focusIndicator.layoutParams = verticalShrinkLayout
+ }
}
+ return false // Pass through
}
- return false // Pass through
- }
- })
+ },
+ )
.into(dialogBinding.imageView)
val okListener = { dialog: DialogInterface, _: Int ->
@@ -90,7 +92,7 @@ fun T.makeFocusDialog(
val window = dialog.window
window?.setSoftInputMode(
- WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE,
)
dialog.show()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ComposeScheduleView.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ComposeScheduleView.kt
index c7a5b0e03d..f756bde4de 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ComposeScheduleView.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ComposeScheduleView.kt
@@ -40,7 +40,7 @@ class ComposeScheduleView
@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ defStyleAttr: Int = 0,
) : ConstraintLayout(context, attrs, defStyleAttr) {
interface OnTimeSetListener {
fun onTimeSet(time: String?)
@@ -48,14 +48,14 @@ class ComposeScheduleView
private var binding = ViewComposeScheduleBinding.inflate(
(context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater),
- this
+ this,
)
private var listener: OnTimeSetListener? = null
private var dateFormat = SimpleDateFormat.getDateInstance()
private var timeFormat = SimpleDateFormat.getTimeInstance()
private var iso8601 = SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
- Locale.getDefault()
+ Locale.getDefault(),
).apply {
timeZone = TimeZone.getTimeZone("UTC")
}
@@ -85,7 +85,7 @@ class ComposeScheduleView
binding.scheduledDateTime.text = String.format(
"%s %s",
dateFormat.format(scheduled),
- timeFormat.format(scheduled)
+ timeFormat.format(scheduled),
)
verifyScheduledTime(scheduled)
}
@@ -184,7 +184,7 @@ class ComposeScheduleView
val minimumScheduledTime = calendar()
minimumScheduledTime.add(
Calendar.SECOND,
- MINIMUM_SCHEDULED_SECONDS
+ MINIMUM_SCHEDULED_SECONDS,
)
scheduledTime.after(minimumScheduledTime.time)
} else {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/EditTextTyped.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/EditTextTyped.kt
index 087a70359a..306a7138c2 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/EditTextTyped.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/EditTextTyped.kt
@@ -30,7 +30,7 @@ import androidx.emoji2.viewsintegration.EmojiEditTextHelper
class EditTextTyped @JvmOverloads constructor(
context: Context,
- attributeSet: AttributeSet? = null
+ attributeSet: AttributeSet? = null,
) :
AppCompatMultiAutoCompleteTextView(context, attributeSet) {
@@ -60,7 +60,7 @@ class EditTextTyped @JvmOverloads constructor(
EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/*"))
return emojiEditTextHelper.onCreateInputConnection(
InputConnectionCompat.createWrapper(this, connection, editorInfo),
- editorInfo
+ editorInfo,
)!!
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/FocusIndicatorView.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/FocusIndicatorView.kt
index 6e0b83dc59..c4a860e881 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/FocusIndicatorView.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/FocusIndicatorView.kt
@@ -19,7 +19,7 @@ class FocusIndicatorView
@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ defStyleAttr: Int = 0,
) : View(context, attrs, defStyleAttr) {
private var focus: Attachment.Focus? = null
private var imageSize: Point? = null
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/PollPreviewView.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/PollPreviewView.kt
index c55e8fce72..f6287b625f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/PollPreviewView.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/PollPreviewView.kt
@@ -27,7 +27,7 @@ import com.keylesspalace.tusky.entity.NewPoll
class PollPreviewView @JvmOverloads constructor(
context: Context?,
attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ defStyleAttr: Int = 0,
) :
LinearLayout(context, attrs, defStyleAttr) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ProgressImageView.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ProgressImageView.kt
index 686fcc4589..be8e3cff1b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ProgressImageView.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/ProgressImageView.kt
@@ -33,7 +33,7 @@ class ProgressImageView
@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ defStyleAttr: Int = 0,
) : MediaPreviewImageView(context, attrs, defStyleAttr) {
private var progress = -1
private val progressRect = RectF()
@@ -52,7 +52,7 @@ class ProgressImageView
}
private val captionDrawable = AppCompatResources.getDrawable(
context,
- R.drawable.spellcheck
+ R.drawable.spellcheck,
)!!.apply {
setTint(Color.WHITE)
}
@@ -98,7 +98,7 @@ class ProgressImageView
width - circleMargin - circleRadius,
height - circleMargin - circleRadius,
width - circleMargin,
- height - circleMargin
+ height - circleMargin,
)
captionDrawable.draw(canvas)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt
index 43e8f6ef99..bc2d56a6e6 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/view/TootButton.kt
@@ -30,7 +30,7 @@ class TootButton
@JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ defStyleAttr: Int = 0,
) : MaterialButton(context, attrs, defStyleAttr) {
private val smallStyle: Boolean = context.resources.getBoolean(R.bool.show_small_toot_button)
@@ -58,7 +58,8 @@ class TootButton
null
}
Status.Visibility.PRIVATE,
- Status.Visibility.DIRECT -> {
+ Status.Visibility.DIRECT,
+ -> {
setText(R.string.action_send)
IconicsDrawable(context, GoogleMaterial.Icon.gmd_lock).apply { sizeDp = 18; colorInt = Color.WHITE }
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationAdapter.kt
index a5a8ed27d2..0b966afb73 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationAdapter.kt
@@ -26,14 +26,14 @@ import com.keylesspalace.tusky.util.StatusDisplayOptions
class ConversationAdapter(
private var statusDisplayOptions: StatusDisplayOptions,
- private val listener: StatusActionListener
+ private val listener: StatusActionListener,
) : PagingDataAdapter(CONVERSATION_COMPARATOR) {
var mediaPreviewEnabled: Boolean
get() = statusDisplayOptions.mediaPreviewEnabled
set(mediaPreviewEnabled) {
statusDisplayOptions = statusDisplayOptions.copy(
- mediaPreviewEnabled = mediaPreviewEnabled
+ mediaPreviewEnabled = mediaPreviewEnabled,
)
}
@@ -49,7 +49,7 @@ class ConversationAdapter(
override fun onBindViewHolder(
holder: ConversationViewHolder,
position: Int,
- payloads: List
+ payloads: List,
) {
getItem(position)?.let { conversationViewData ->
holder.setupWithConversation(conversationViewData, payloads.firstOrNull())
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt
index 009dcbcc13..29aa9355f9 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationEntity.kt
@@ -37,7 +37,7 @@ data class ConversationEntity(
val order: Int,
val accounts: List,
val unread: Boolean,
- @Embedded(prefix = "s_") val lastStatus: ConversationStatusEntity
+ @Embedded(prefix = "s_") val lastStatus: ConversationStatusEntity,
) {
fun toViewData(): ConversationViewData {
return ConversationViewData(
@@ -45,7 +45,7 @@ data class ConversationEntity(
order = order,
accounts = accounts,
unread = unread,
- lastStatus = lastStatus.toViewData()
+ lastStatus = lastStatus.toViewData(),
)
}
}
@@ -56,7 +56,7 @@ data class ConversationAccountEntity(
val username: String,
val displayName: String,
val avatar: String,
- val emojis: List
+ val emojis: List,
) {
fun toAccount(): TimelineAccount {
return TimelineAccount(
@@ -67,7 +67,7 @@ data class ConversationAccountEntity(
note = "",
url = "",
avatar = avatar,
- emojis = emojis
+ emojis = emojis,
)
}
}
@@ -97,7 +97,7 @@ data class ConversationStatusEntity(
val collapsed: Boolean,
val muted: Boolean,
val poll: Poll?,
- val language: String?
+ val language: String?,
) {
fun toViewData(): StatusViewData {
@@ -131,11 +131,11 @@ data class ConversationStatusEntity(
poll = poll,
card = null,
language = language,
- filtered = null
+ filtered = null,
),
isExpanded = expanded,
isShowingContent = showingHiddenContent,
- isCollapsed = collapsed
+ isCollapsed = collapsed,
)
}
}
@@ -147,13 +147,13 @@ fun TimelineAccount.toEntity() =
username = username,
displayName = name,
avatar = avatar,
- emojis = emojis.orEmpty()
+ emojis = emojis.orEmpty(),
)
fun Status.toEntity(
expanded: Boolean,
contentShowing: Boolean,
- contentCollapsed: Boolean
+ contentCollapsed: Boolean,
) =
ConversationStatusEntity(
id = id,
@@ -179,7 +179,7 @@ fun Status.toEntity(
collapsed = contentCollapsed,
muted = muted ?: false,
poll = poll,
- language = language
+ language = language,
)
fun Conversation.toEntity(
@@ -187,7 +187,7 @@ fun Conversation.toEntity(
order: Int,
expanded: Boolean,
contentShowing: Boolean,
- contentCollapsed: Boolean
+ contentCollapsed: Boolean,
) =
ConversationEntity(
accountId = accountId,
@@ -198,6 +198,6 @@ fun Conversation.toEntity(
lastStatus = lastStatus!!.toEntity(
expanded = expanded,
contentShowing = contentShowing,
- contentCollapsed = contentCollapsed
- )
+ contentCollapsed = contentCollapsed,
+ ),
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationLoadStateAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationLoadStateAdapter.kt
index 7ff4daa741..d073bb3594 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationLoadStateAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationLoadStateAdapter.kt
@@ -24,7 +24,7 @@ import com.keylesspalace.tusky.util.BindingHolder
import com.keylesspalace.tusky.util.visible
class ConversationLoadStateAdapter(
- private val retryCallback: () -> Unit
+ private val retryCallback: () -> Unit,
) : LoadStateAdapter>() {
override fun onBindViewHolder(holder: BindingHolder, loadState: LoadState) {
@@ -45,7 +45,7 @@ class ConversationLoadStateAdapter(
override fun onCreateViewHolder(
parent: ViewGroup,
- loadState: LoadState
+ loadState: LoadState,
): BindingHolder {
val binding = ItemNetworkStateBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return BindingHolder(binding)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewData.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewData.kt
index ceae7c6f7b..8e1e5e5ff9 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewData.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationViewData.kt
@@ -23,7 +23,7 @@ data class ConversationViewData(
val order: Int,
val accounts: List,
val unread: Boolean,
- val lastStatus: StatusViewData
+ val lastStatus: StatusViewData,
) {
fun toEntity(
accountId: Long,
@@ -33,7 +33,7 @@ data class ConversationViewData(
poll: Poll? = lastStatus.status.poll,
expanded: Boolean = lastStatus.isExpanded,
collapsed: Boolean = lastStatus.isCollapsed,
- showingHiddenContent: Boolean = lastStatus.isShowingContent
+ showingHiddenContent: Boolean = lastStatus.isShowingContent,
): ConversationEntity {
return ConversationEntity(
accountId = accountId,
@@ -48,8 +48,8 @@ data class ConversationViewData(
poll = poll,
expanded = expanded,
collapsed = collapsed,
- showingHiddenContent = showingHiddenContent
- )
+ showingHiddenContent = showingHiddenContent,
+ ),
)
}
}
@@ -61,7 +61,7 @@ fun StatusViewData.toConversationStatusEntity(
poll: Poll? = status.poll,
expanded: Boolean = isExpanded,
collapsed: Boolean = isCollapsed,
- showingHiddenContent: Boolean = isShowingContent
+ showingHiddenContent: Boolean = isShowingContent,
): ConversationStatusEntity {
return ConversationStatusEntity(
id = id,
@@ -87,6 +87,6 @@ fun StatusViewData.toConversationStatusEntity(
collapsed = collapsed,
muted = muted,
poll = poll,
- language = status.language
+ language = status.language,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt
index 462e3808ab..997ba3a2ef 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt
@@ -111,7 +111,7 @@ class ConversationsFragment :
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
- openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler
+ openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
)
adapter = ConversationAdapter(statusDisplayOptions, this)
@@ -147,35 +147,39 @@ class ConversationsFragment :
}
}
- adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
- override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
- if (positionStart == 0 && adapter.itemCount != itemCount) {
- binding.recyclerView.post {
- if (getView() != null) {
- binding.recyclerView.scrollBy(0, Utils.dpToPx(requireContext(), -30))
+ adapter.registerAdapterDataObserver(
+ object : RecyclerView.AdapterDataObserver() {
+ override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
+ if (positionStart == 0 && adapter.itemCount != itemCount) {
+ binding.recyclerView.post {
+ if (getView() != null) {
+ binding.recyclerView.scrollBy(0, Utils.dpToPx(requireContext(), -30))
+ }
}
}
}
- }
- })
+ },
+ )
hideFab = preferences.getBoolean(PrefKeys.FAB_HIDE, false)
- binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
- override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
- val composeButton = (activity as ActionButtonActivity).actionButton
- if (composeButton != null) {
- if (hideFab) {
- if (dy > 0 && composeButton.isShown) {
- composeButton.hide() // hides the button if we're scrolling down
- } else if (dy < 0 && !composeButton.isShown) {
- composeButton.show() // shows it if we are scrolling up
+ binding.recyclerView.addOnScrollListener(
+ object : RecyclerView.OnScrollListener() {
+ override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
+ val composeButton = (activity as ActionButtonActivity).actionButton
+ if (composeButton != null) {
+ if (hideFab) {
+ if (dy > 0 && composeButton.isShown) {
+ composeButton.hide() // hides the button if we're scrolling down
+ } else if (dy < 0 && !composeButton.isShown) {
+ composeButton.show() // shows it if we are scrolling up
+ }
+ } else if (!composeButton.isShown) {
+ composeButton.show()
}
- } else if (!composeButton.isShown) {
- composeButton.show()
}
}
- }
- })
+ },
+ )
viewLifecycleOwner.lifecycleScope.launch {
viewModel.conversationFlow.collectLatest { pagingData ->
@@ -190,7 +194,7 @@ class ConversationsFragment :
adapter.notifyItemRangeChanged(
0,
adapter.itemCount,
- listOf(StatusBaseViewHolder.Key.KEY_CREATED)
+ listOf(StatusBaseViewHolder.Key.KEY_CREATED),
)
delay(1.toDuration(DurationUnit.MINUTES))
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsRemoteMediator.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsRemoteMediator.kt
index b00c99a95e..7167e19afa 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsRemoteMediator.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsRemoteMediator.kt
@@ -15,7 +15,7 @@ import retrofit2.HttpException
class ConversationsRemoteMediator(
private val api: MastodonApi,
private val db: AppDatabase,
- accountManager: AccountManager
+ accountManager: AccountManager,
) : RemoteMediator() {
private var nextKey: String? = null
@@ -26,7 +26,7 @@ class ConversationsRemoteMediator(
override suspend fun load(
loadType: LoadType,
- state: PagingState
+ state: PagingState,
): MediatorResult {
if (loadType == LoadType.PREPEND) {
return MediatorResult.Success(endOfPaginationReached = true)
@@ -68,9 +68,9 @@ class ConversationsRemoteMediator(
order = order++,
expanded = expanded,
contentShowing = contentShowing,
- contentCollapsed = contentCollapsed
+ contentCollapsed = contentCollapsed,
)
- }
+ },
)
}
return MediatorResult.Success(endOfPaginationReached = nextKey == null)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsViewModel.kt
index 78bb7c8e5d..e12ce22130 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsViewModel.kt
@@ -37,7 +37,7 @@ class ConversationsViewModel @Inject constructor(
private val timelineCases: TimelineCases,
private val database: AppDatabase,
private val accountManager: AccountManager,
- private val api: MastodonApi
+ private val api: MastodonApi,
) : ViewModel() {
@OptIn(ExperimentalPagingApi::class)
@@ -51,7 +51,7 @@ class ConversationsViewModel @Inject constructor(
} else {
database.conversationDao().conversationsForAccount(activeAccount.id)
}
- }
+ },
)
.flow
.map { pagingData ->
@@ -64,13 +64,13 @@ class ConversationsViewModel @Inject constructor(
timelineCases.favourite(conversation.lastStatus.id, favourite).fold({
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- favourited = favourite
+ favourited = favourite,
)
saveConversationToDb(newConversation)
}, { e ->
Log.w(TAG, "failed to favourite status", e)
- })
+ },)
}
}
@@ -79,13 +79,13 @@ class ConversationsViewModel @Inject constructor(
timelineCases.bookmark(conversation.lastStatus.id, bookmark).fold({
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- bookmarked = bookmark
+ bookmarked = bookmark,
)
saveConversationToDb(newConversation)
}, { e ->
Log.w(TAG, "failed to bookmark status", e)
- })
+ },)
}
}
@@ -95,13 +95,13 @@ class ConversationsViewModel @Inject constructor(
.fold({ poll ->
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- poll = poll
+ poll = poll,
)
saveConversationToDb(newConversation)
}, { e ->
Log.w(TAG, "failed to vote in poll", e)
- })
+ },)
}
}
@@ -109,7 +109,7 @@ class ConversationsViewModel @Inject constructor(
viewModelScope.launch {
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- expanded = expanded
+ expanded = expanded,
)
saveConversationToDb(newConversation)
}
@@ -119,7 +119,7 @@ class ConversationsViewModel @Inject constructor(
viewModelScope.launch {
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- collapsed = collapsed
+ collapsed = collapsed,
)
saveConversationToDb(newConversation)
}
@@ -129,7 +129,7 @@ class ConversationsViewModel @Inject constructor(
viewModelScope.launch {
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- showingHiddenContent = showing
+ showingHiddenContent = showing,
)
saveConversationToDb(newConversation)
}
@@ -142,7 +142,7 @@ class ConversationsViewModel @Inject constructor(
database.conversationDao().delete(
id = conversation.id,
- accountId = accountManager.activeAccount!!.id
+ accountId = accountManager.activeAccount!!.id,
)
} catch (e: Exception) {
Log.w(TAG, "failed to delete conversation", e)
@@ -155,12 +155,12 @@ class ConversationsViewModel @Inject constructor(
try {
timelineCases.muteConversation(
conversation.lastStatus.id,
- !(conversation.lastStatus.status.muted ?: false)
+ !(conversation.lastStatus.status.muted ?: false),
)
val newConversation = conversation.toEntity(
accountId = accountManager.activeAccount!!.id,
- muted = !(conversation.lastStatus.status.muted ?: false)
+ muted = !(conversation.lastStatus.status.muted ?: false),
)
database.conversationDao().insert(newConversation)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt
index 2dc802e6a4..33efa8496d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt
@@ -45,7 +45,7 @@ import javax.inject.Inject
class DraftHelper @Inject constructor(
val context: Context,
private val okHttpClient: OkHttpClient,
- db: AppDatabase
+ db: AppDatabase,
) {
private val draftDao = db.draftDao()
@@ -66,7 +66,7 @@ class DraftHelper @Inject constructor(
failedToSendAlert: Boolean,
scheduledAt: String?,
language: String?,
- statusId: String?
+ statusId: String?,
) = withContext(Dispatchers.IO) {
val externalFilesDir = context.getExternalFilesDir("Tusky")
@@ -108,8 +108,8 @@ class DraftHelper @Inject constructor(
uriString = uris[i].toString(),
description = mediaDescriptions[i],
focus = mediaFocus[i],
- type = types[i]
- )
+ type = types[i],
+ ),
)
}
@@ -127,7 +127,7 @@ class DraftHelper @Inject constructor(
failedToSendNew = failedToSendAlert,
scheduledAt = scheduledAt,
language = language,
- statusId = statusId
+ statusId = statusId,
)
draftDao.insertOrReplace(draft)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftMediaAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftMediaAdapter.kt
index 2165f7e0c1..4f3c0c9bbf 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftMediaAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftMediaAdapter.kt
@@ -28,7 +28,7 @@ import com.keylesspalace.tusky.db.DraftAttachment
import com.keylesspalace.tusky.view.MediaPreviewImageView
class DraftMediaAdapter(
- private val attachmentClick: () -> Unit
+ private val attachmentClick: () -> Unit,
) : ListAdapter(
object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(oldItem: DraftAttachment, newItem: DraftAttachment): Boolean {
@@ -38,7 +38,7 @@ class DraftMediaAdapter(
override fun areContentsTheSame(oldItem: DraftAttachment, newItem: DraftAttachment): Boolean {
return oldItem == newItem
}
- }
+ },
) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DraftMediaViewHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsActivity.kt
index 6d9a2aa16c..216daf42f7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsActivity.kt
@@ -119,7 +119,7 @@ class DraftsActivity : BaseActivity(), DraftActionListener {
scheduledAt = draft.scheduledAt,
language = draft.language,
statusId = draft.statusId,
- kind = ComposeActivity.ComposeKind.EDIT_DRAFT
+ kind = ComposeActivity.ComposeKind.EDIT_DRAFT,
)
bottomSheet.state = BottomSheetBehavior.STATE_HIDDEN
@@ -140,7 +140,7 @@ class DraftsActivity : BaseActivity(), DraftActionListener {
Snackbar.make(binding.root, getString(R.string.drafts_failed_loading_reply), Snackbar.LENGTH_SHORT)
.show()
}
- }
+ },
)
}
}
@@ -157,7 +157,7 @@ class DraftsActivity : BaseActivity(), DraftActionListener {
scheduledAt = draft.scheduledAt,
language = draft.language,
statusId = draft.statusId,
- kind = ComposeActivity.ComposeKind.EDIT_DRAFT
+ kind = ComposeActivity.ComposeKind.EDIT_DRAFT,
)
startActivity(ComposeActivity.startIntent(this, composeOptions))
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsAdapter.kt
index 1edf354d6f..0ebdefd9b5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsAdapter.kt
@@ -34,7 +34,7 @@ interface DraftActionListener {
}
class DraftsAdapter(
- private val listener: DraftActionListener
+ private val listener: DraftActionListener,
) : PagingDataAdapter>(
object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(oldItem: DraftEntity, newItem: DraftEntity): Boolean {
@@ -44,7 +44,7 @@ class DraftsAdapter(
override fun areContentsTheSame(oldItem: DraftEntity, newItem: DraftEntity): Boolean {
return oldItem == newItem
}
- }
+ },
) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsViewModel.kt
index e748aebb99..93a3894c8a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftsViewModel.kt
@@ -33,12 +33,12 @@ class DraftsViewModel @Inject constructor(
val database: AppDatabase,
val accountManager: AccountManager,
val api: MastodonApi,
- private val draftHelper: DraftHelper
+ private val draftHelper: DraftHelper,
) : ViewModel() {
val drafts = Pager(
config = PagingConfig(pageSize = 20),
- pagingSourceFactory = { database.draftDao().draftsPagingSource(accountManager.activeAccount?.id!!) }
+ pagingSourceFactory = { database.draftDao().draftsPagingSource(accountManager.activeAccount?.id!!) },
).flow
.cachedIn(viewModelScope)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterActivity.kt
index f8a291c4bf..3d005c24e9 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterActivity.kt
@@ -60,7 +60,7 @@ class EditFilterActivity : BaseActivity() {
filterContextNotifications to Filter.Kind.NOTIFICATIONS,
filterContextPublic to Filter.Kind.PUBLIC,
filterContextThread to Filter.Kind.THREAD,
- filterContextAccount to Filter.Kind.ACCOUNT
+ filterContextAccount to Filter.Kind.ACCOUNT,
)
}
@@ -77,7 +77,7 @@ class EditFilterActivity : BaseActivity() {
R.string.filter_addition_title
} else {
R.string.filter_edit_title
- }
+ },
)
binding.actionChip.setOnClickListener { showAddKeywordDialog() }
@@ -110,7 +110,7 @@ class EditFilterActivity : BaseActivity() {
Filter.Action.WARN
} else {
Filter.Action.HIDE
- }
+ },
)
}
binding.filterDurationSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
@@ -120,7 +120,7 @@ class EditFilterActivity : BaseActivity() {
position
} else {
position - 1
- }
+ },
)
}
@@ -192,7 +192,7 @@ class EditFilterActivity : BaseActivity() {
chip.text = if (filterKeyword.wholeWord) {
binding.root.context.getString(
R.string.filter_keyword_display_format,
- filterKeyword.keyword
+ filterKeyword.keyword,
)
} else {
filterKeyword.keyword
@@ -225,8 +225,8 @@ class EditFilterActivity : BaseActivity() {
FilterKeyword(
"",
binding.phraseEditText.text.toString(),
- binding.phraseWholeWord.isChecked
- )
+ binding.phraseWholeWord.isChecked,
+ ),
)
}
.setNegativeButton(android.R.string.cancel, null)
@@ -246,8 +246,8 @@ class EditFilterActivity : BaseActivity() {
keyword,
keyword.copy(
keyword = binding.phraseEditText.text.toString(),
- wholeWord = binding.phraseWholeWord.isChecked
- )
+ wholeWord = binding.phraseWholeWord.isChecked,
+ ),
)
}
.setNegativeButton(android.R.string.cancel, null)
@@ -285,12 +285,12 @@ class EditFilterActivity : BaseActivity() {
},
{
Snackbar.make(binding.root, "Error deleting filter '${filter.title}'", Snackbar.LENGTH_SHORT).show()
- }
+ },
)
} else {
Snackbar.make(binding.root, "Error deleting filter '${filter.title}'", Snackbar.LENGTH_SHORT).show()
}
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterViewModel.kt
index d33031d658..abe0eb8fdf 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/filters/EditFilterViewModel.kt
@@ -98,7 +98,7 @@ class EditFilterViewModel @Inject constructor(val api: MastodonApi, val eventHub
title = title,
context = contexts,
filterAction = action,
- expiresInSeconds = expiresInSeconds
+ expiresInSeconds = expiresInSeconds,
).fold(
{ newFilter ->
// This is _terrible_, but the all-in-one update filter api Just Doesn't Work
@@ -112,7 +112,7 @@ class EditFilterViewModel @Inject constructor(val api: MastodonApi, val eventHub
// Endpoint not found, fall back to v1 api
createFilterV1(contexts, expiresInSeconds)
)
- }
+ },
)
}
@@ -123,7 +123,7 @@ class EditFilterViewModel @Inject constructor(val api: MastodonApi, val eventHub
title = title,
context = contexts,
filterAction = action,
- expiresInSeconds = expiresInSeconds
+ expiresInSeconds = expiresInSeconds,
).fold(
{
// This is _terrible_, but the all-in-one update filter api Just Doesn't Work
@@ -148,7 +148,7 @@ class EditFilterViewModel @Inject constructor(val api: MastodonApi, val eventHub
}
}
return false
- }
+ },
)
}
@@ -166,7 +166,7 @@ class EditFilterViewModel @Inject constructor(val api: MastodonApi, val eventHub
context = context,
irreversible = false,
wholeWord = keyword.wholeWord,
- expiresInSeconds = expiresInSeconds
+ expiresInSeconds = expiresInSeconds,
)
} else {
api.updateFilterV1(
@@ -175,7 +175,7 @@ class EditFilterViewModel @Inject constructor(val api: MastodonApi, val eventHub
context = context,
irreversible = false,
wholeWord = keyword.wholeWord,
- expiresInSeconds = expiresInSeconds
+ expiresInSeconds = expiresInSeconds,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersActivity.kt
index d66fb7ad21..3395033e66 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersActivity.kt
@@ -78,7 +78,7 @@ class FiltersActivity : BaseActivity(), FiltersListener {
binding.messageView.setup(
R.drawable.elephant_friend_empty,
R.string.message_empty,
- null
+ null,
)
binding.messageView.show()
} else {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersAdapter.kt
index f6e6791a7e..4ba31c163b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersAdapter.kt
@@ -32,13 +32,13 @@ class FiltersAdapter(val listener: FiltersListener, val filters: List) :
context.getString(
R.string.filter_expiration_format,
filter.title,
- getRelativeTimeSpanString(binding.root.context, filter.expiresAt.time, System.currentTimeMillis())
+ getRelativeTimeSpanString(binding.root.context, filter.expiresAt.time, System.currentTimeMillis()),
)
}
binding.textSecondary.text = context.getString(
R.string.filter_description_format,
actions.getOrNull(filter.action.ordinal - 1),
- filter.context.map { contexts.getOrNull(Filter.Kind.from(it).ordinal) }.joinToString("/")
+ filter.context.map { contexts.getOrNull(Filter.Kind.from(it).ordinal) }.joinToString("/"),
)
binding.delete.setOnClickListener {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersViewModel.kt
index ed53840c32..03c9313bcb 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/filters/FiltersViewModel.kt
@@ -18,7 +18,7 @@ import javax.inject.Inject
class FiltersViewModel @Inject constructor(
private val api: MastodonApi,
- private val eventHub: EventHub
+ private val eventHub: EventHub,
) : ViewModel() {
enum class LoadingState {
@@ -49,13 +49,13 @@ class FiltersViewModel @Inject constructor(
// TODO log errors (also below)
this@FiltersViewModel._state.value = _state.value.copy(loadingState = LoadingState.ERROR_OTHER)
- }
+ },
)
this@FiltersViewModel._state.value = _state.value.copy(loadingState = LoadingState.ERROR_OTHER)
} else {
this@FiltersViewModel._state.value = _state.value.copy(loadingState = LoadingState.ERROR_NETWORK)
}
- }
+ },
)
}
}
@@ -77,12 +77,12 @@ class FiltersViewModel @Inject constructor(
},
{
Snackbar.make(parent, "Error deleting filter '${filter.title}'", Snackbar.LENGTH_SHORT).show()
- }
+ },
)
} else {
Snackbar.make(parent, "Error deleting filter '${filter.title}'", Snackbar.LENGTH_SHORT).show()
}
- }
+ },
)
}
}
@@ -94,7 +94,7 @@ class FiltersViewModel @Inject constructor(
FilterV1.NOTIFICATIONS,
FilterV1.THREAD,
FilterV1.PUBLIC,
- FilterV1.ACCOUNT
+ FilterV1.ACCOUNT,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsActivity.kt
index b6b56d4a36..5a34baf6dc 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsActivity.kt
@@ -86,15 +86,17 @@ class FollowedTagsActivity :
val hideFab = sharedPreferences.getBoolean(PrefKeys.FAB_HIDE, false)
if (hideFab) {
- binding.followedTagsView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
- override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
- if (dy > 0 && binding.fab.isShown) {
- binding.fab.hide()
- } else if (dy < 0 && !binding.fab.isShown) {
- binding.fab.show()
+ binding.followedTagsView.addOnScrollListener(
+ object : RecyclerView.OnScrollListener() {
+ override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+ if (dy > 0 && binding.fab.isShown) {
+ binding.fab.hide()
+ } else if (dy < 0 && !binding.fab.isShown) {
+ binding.fab.show()
+ }
}
- }
- })
+ },
+ )
}
}
@@ -133,10 +135,10 @@ class FollowedTagsActivity :
this@FollowedTagsActivity,
binding.followedTagsView,
getString(R.string.error_following_hashtag_format, tagName),
- Snackbar.LENGTH_SHORT
+ Snackbar.LENGTH_SHORT,
)
.show()
- }
+ },
)
}
}
@@ -150,7 +152,7 @@ class FollowedTagsActivity :
this@FollowedTagsActivity,
binding.followedTagsView,
getString(R.string.confirmation_hashtag_unfollowed, tagName),
- Snackbar.LENGTH_LONG
+ Snackbar.LENGTH_LONG,
)
.setAction(R.string.action_undo) {
follow(tagName, position)
@@ -164,12 +166,12 @@ class FollowedTagsActivity :
binding.followedTagsView,
getString(
R.string.error_unfollowing_hashtag_format,
- tagName
+ tagName,
),
- Snackbar.LENGTH_SHORT
+ Snackbar.LENGTH_SHORT,
)
.show()
- }
+ },
)
}
}
@@ -191,8 +193,8 @@ class FollowedTagsActivity :
requireActivity() as FollowedTagsActivity,
animateAvatar = false,
animateEmojis = false,
- showBotBadge = false
- )
+ showBotBadge = false,
+ ),
)
return AlertDialog.Builder(requireActivity())
@@ -200,7 +202,7 @@ class FollowedTagsActivity :
.setView(layout)
.setPositiveButton(android.R.string.ok) { _, _ ->
(requireActivity() as FollowedTagsActivity).follow(
- autoCompleteTextView.text.toString().removePrefix("#")
+ autoCompleteTextView.text.toString().removePrefix("#"),
)
}
.setNegativeButton(android.R.string.cancel) { _: DialogInterface, _: Int -> }
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsAdapter.kt
index 4cdc9f97af..682d39a8ad 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsAdapter.kt
@@ -13,7 +13,7 @@ import com.keylesspalace.tusky.util.BindingHolder
class FollowedTagsAdapter(
private val actionListener: HashtagActionListener,
- private val viewModel: FollowedTagsViewModel
+ private val viewModel: FollowedTagsViewModel,
) : PagingDataAdapter>(STRING_COMPARATOR) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder =
BindingHolder(ItemFollowedHashtagBinding.inflate(LayoutInflater.from(parent.context), parent, false))
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsRemoteMediator.kt b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsRemoteMediator.kt
index 00239a75f2..50a9ab928e 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsRemoteMediator.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsRemoteMediator.kt
@@ -13,11 +13,11 @@ import retrofit2.Response
@OptIn(ExperimentalPagingApi::class)
class FollowedTagsRemoteMediator(
private val api: MastodonApi,
- private val viewModel: FollowedTagsViewModel
+ private val viewModel: FollowedTagsViewModel,
) : RemoteMediator() {
override suspend fun load(
loadType: LoadType,
- state: PagingState
+ state: PagingState,
): MediatorResult {
return try {
val response = request(loadType)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsViewModel.kt
index 1a1b794bb7..51e47eef78 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsViewModel.kt
@@ -16,7 +16,7 @@ import com.keylesspalace.tusky.network.MastodonApi
import javax.inject.Inject
class FollowedTagsViewModel @Inject constructor(
- private val api: MastodonApi
+ private val api: MastodonApi,
) : ViewModel(), Injectable {
val tags: MutableList = mutableListOf()
var nextKey: String? = null
@@ -28,11 +28,11 @@ class FollowedTagsViewModel @Inject constructor(
remoteMediator = FollowedTagsRemoteMediator(api, this),
pagingSourceFactory = {
FollowedTagsPagingSource(
- viewModel = this
+ viewModel = this,
).also { source ->
currentSource = source
}
- }
+ },
).flow.cachedIn(viewModelScope)
fun searchAutocompleteSuggestions(token: String): List {
@@ -42,7 +42,7 @@ class FollowedTagsViewModel @Inject constructor(
}, { e ->
Log.e(TAG, "Autocomplete search for $token failed.", e)
emptyList()
- })
+ },)
}
companion object {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfo.kt b/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfo.kt
index 582df02e8d..fb21caaeff 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfo.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfo.kt
@@ -29,5 +29,5 @@ data class InstanceInfo(
val maxFields: Int,
val maxFieldNameLength: Int?,
val maxFieldValueLength: Int?,
- val version: String?
+ val version: String?,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfoRepository.kt b/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfoRepository.kt
index 1045fe480e..c5d56d1bb5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfoRepository.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/instanceinfo/InstanceInfoRepository.kt
@@ -32,7 +32,7 @@ import javax.inject.Inject
class InstanceInfoRepository @Inject constructor(
private val api: MastodonApi,
db: AppDatabase,
- accountManager: AccountManager
+ accountManager: AccountManager,
) {
private val dao = db.instanceDao()
@@ -76,7 +76,7 @@ class InstanceInfoRepository @Inject constructor(
maxMediaAttachments = instance.configuration?.statuses?.maxMediaAttachments ?: instance.maxMediaAttachments,
maxFields = instance.pleroma?.metadata?.fieldLimits?.maxFields,
maxFieldNameLength = instance.pleroma?.metadata?.fieldLimits?.nameLength,
- maxFieldValueLength = instance.pleroma?.metadata?.fieldLimits?.valueLength
+ maxFieldValueLength = instance.pleroma?.metadata?.fieldLimits?.valueLength,
)
dao.upsert(instanceEntity)
instanceEntity
@@ -84,7 +84,7 @@ class InstanceInfoRepository @Inject constructor(
{ throwable ->
Log.w(TAG, "failed to instance, falling back to cache and default values", throwable)
dao.getInstanceInfo(instanceName)
- }
+ },
).let { instanceInfo: InstanceInfoEntity? ->
InstanceInfo(
maxChars = instanceInfo?.maximumTootCharacters ?: DEFAULT_CHARACTER_LIMIT,
@@ -100,7 +100,7 @@ class InstanceInfoRepository @Inject constructor(
maxFields = instanceInfo?.maxFields ?: DEFAULT_MAX_ACCOUNT_FIELDS,
maxFieldNameLength = instanceInfo?.maxFieldNameLength,
maxFieldValueLength = instanceInfo?.maxFieldValueLength,
- version = instanceInfo?.version
+ version = instanceInfo?.version,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt
index 13d8f2d83e..8d20da4956 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/instancemute/adapter/DomainMutesAdapter.kt
@@ -8,7 +8,7 @@ import com.keylesspalace.tusky.databinding.ItemMutedDomainBinding
import com.keylesspalace.tusky.util.BindingHolder
class DomainMutesAdapter(
- private val actionListener: InstanceActionListener
+ private val actionListener: InstanceActionListener,
) : RecyclerView.Adapter>() {
var instances: MutableList = mutableListOf()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt
index 1da0a2b7d8..47e85d3c39 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/instancemute/fragment/InstanceListFragment.kt
@@ -69,7 +69,7 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
adapter.addItem(instance)
}, { e ->
Log.e(TAG, "Error muting domain $instance", e)
- })
+ },)
} else {
api.unblockDomain(instance).fold({
adapter.removeItem(position)
@@ -80,7 +80,7 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
.show()
}, { e ->
Log.e(TAG, "Error unmuting domain $instance", e)
- })
+ },)
}
}
}
@@ -111,7 +111,7 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
},
{ throwable ->
onFetchInstancesFailure(throwable)
- }
+ },
)
}
@@ -131,7 +131,7 @@ class InstanceListFragment : Fragment(R.layout.fragment_instance_list), Injectab
binding.messageView.setup(
R.drawable.elephant_friend_empty,
R.string.message_empty,
- null
+ null,
)
} else {
binding.messageView.hide()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/login/LoginActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/login/LoginActivity.kt
index 7e04768967..9ede2c4c02 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/login/LoginActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/login/LoginActivity.kt
@@ -100,7 +100,7 @@ class LoginActivity : BaseActivity(), Injectable {
preferences = getSharedPreferences(
getString(R.string.preferences_file_key),
- Context.MODE_PRIVATE
+ Context.MODE_PRIVATE,
)
binding.loginButton.setOnClickListener { onLoginClick(true) }
@@ -173,7 +173,7 @@ class LoginActivity : BaseActivity(), Injectable {
getString(R.string.app_name),
oauthRedirectUri,
OAUTH_SCOPES,
- getString(R.string.tusky_website)
+ getString(R.string.tusky_website),
).fold(
{ credentials ->
// Before we open browser page we save the data.
@@ -196,7 +196,7 @@ class LoginActivity : BaseActivity(), Injectable {
setLoading(false)
Log.e(TAG, Log.getStackTraceString(e))
return@launch
- }
+ },
)
}
}
@@ -282,7 +282,7 @@ class LoginActivity : BaseActivity(), Injectable {
clientSecret,
oauthRedirectUri,
code,
- "authorization_code"
+ "authorization_code",
).fold(
{ accessToken ->
fetchAccountDetails(accessToken, domain, clientId, clientSecret)
@@ -292,7 +292,7 @@ class LoginActivity : BaseActivity(), Injectable {
binding.domainTextInputLayout.error =
getString(R.string.error_retrieving_oauth_token)
Log.e(TAG, getString(R.string.error_retrieving_oauth_token), e)
- }
+ },
)
}
@@ -300,11 +300,11 @@ class LoginActivity : BaseActivity(), Injectable {
accessToken: AccessToken,
domain: String,
clientId: String,
- clientSecret: String
+ clientSecret: String,
) {
mastodonApi.accountVerifyCredentials(
domain = domain,
- auth = "Bearer ${accessToken.accessToken}"
+ auth = "Bearer ${accessToken.accessToken}",
).fold({ newAccount ->
accountManager.addAccount(
accessToken = accessToken.accessToken,
@@ -312,7 +312,7 @@ class LoginActivity : BaseActivity(), Injectable {
clientId = clientId,
clientSecret = clientSecret,
oauthScopes = OAUTH_SCOPES,
- newAccount = newAccount
+ newAccount = newAccount,
)
val intent = Intent(this, MainActivity::class.java)
@@ -325,7 +325,7 @@ class LoginActivity : BaseActivity(), Injectable {
binding.domainTextInputLayout.error =
getString(R.string.error_loading_account_details)
Log.e(TAG, getString(R.string.error_loading_account_details), e)
- })
+ },)
}
private fun setLoading(loadingState: Boolean) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewActivity.kt
index ed57441652..29c518f59a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewActivity.kt
@@ -88,7 +88,7 @@ class OauthLogin : ActivityResultContract() {
data class LoginData(
val domain: String,
val url: Uri,
- val oauthRedirectUrl: Uri
+ val oauthRedirectUrl: Uri,
) : Parcelable
sealed class LoginResult : Parcelable {
@@ -149,7 +149,7 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
override fun onReceivedError(
view: WebView,
request: WebResourceRequest,
- error: WebResourceError
+ error: WebResourceError,
) {
Log.d("LoginWeb", "Failed to load ${data.url}: $error")
sendResult(LoginResult.Err(getString(R.string.error_could_not_load_login_page)))
@@ -157,7 +157,7 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
override fun shouldOverrideUrlLoading(
view: WebView,
- request: WebResourceRequest
+ request: WebResourceRequest,
): Boolean {
return shouldOverrideUrlLoading(request.url)
}
@@ -204,7 +204,7 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
AlertDialog.Builder(this@LoginWebViewActivity)
.setTitle(getString(R.string.instance_rule_title, data.domain))
.setMessage(
- instanceRules.joinToString(separator = "\n\n") { "• $it" }
+ instanceRules.joinToString(separator = "\n\n") { "• $it" },
)
.setPositiveButton(android.R.string.ok, null)
.show()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewViewModel.kt
index 39dd311aa7..6cac6bd618 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/login/LoginWebViewViewModel.kt
@@ -25,7 +25,7 @@ import kotlinx.coroutines.launch
import javax.inject.Inject
class LoginWebViewViewModel @Inject constructor(
- private val api: MastodonApi
+ private val api: MastodonApi,
) : ViewModel() {
val instanceRules: MutableStateFlow> = MutableStateFlow(emptyList())
@@ -40,7 +40,7 @@ class LoginWebViewViewModel @Inject constructor(
instanceRules.value = instance.rules?.map { rule -> rule.text }.orEmpty()
}, { throwable ->
Log.w("LoginWebViewViewModel", "failed to load instance info", throwable)
- })
+ },)
}
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/FollowViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/FollowViewHolder.kt
index b433a73ee0..880aa79c86 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/FollowViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/FollowViewHolder.kt
@@ -34,16 +34,16 @@ import com.keylesspalace.tusky.viewdata.NotificationViewData
class FollowViewHolder(
private val binding: ItemFollowBinding,
private val notificationActionListener: NotificationActionListener,
- private val linkListener: LinkListener
+ private val linkListener: LinkListener,
) : NotificationsPagingAdapter.ViewHolder, RecyclerView.ViewHolder(binding.root) {
private val avatarRadius42dp = itemView.context.resources.getDimensionPixelSize(
- R.dimen.avatar_radius_42dp
+ R.dimen.avatar_radius_42dp,
)
override fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
) {
// Skip updates with payloads. That indicates a timestamp update, and
// this view does not have timestamps.
@@ -53,7 +53,7 @@ class FollowViewHolder(
viewData.account,
viewData.type === Notification.Type.SIGN_UP,
statusDisplayOptions.animateAvatars,
- statusDisplayOptions.animateEmojis
+ statusDisplayOptions.animateEmojis,
)
setupButtons(notificationActionListener, viewData.account.id)
}
@@ -62,7 +62,7 @@ class FollowViewHolder(
account: TimelineAccount,
isSignUp: Boolean,
animateAvatars: Boolean,
- animateEmojis: Boolean
+ animateEmojis: Boolean,
) {
val context = binding.notificationText.context
val format =
@@ -71,7 +71,7 @@ class FollowViewHolder(
R.string.notification_sign_up_format
} else {
R.string.notification_follow_format
- }
+ },
)
val wrappedDisplayName = account.name.unicodeWrap()
val wholeMessage = String.format(format, wrappedDisplayName)
@@ -79,7 +79,7 @@ class FollowViewHolder(
wholeMessage.emojify(
account.emojis,
binding.notificationText,
- animateEmojis
+ animateEmojis,
)
binding.notificationText.text = emojifiedMessage
val username = context.getString(R.string.post_username_format, account.username)
@@ -87,20 +87,20 @@ class FollowViewHolder(
val emojifiedDisplayName = wrappedDisplayName.emojify(
account.emojis,
binding.notificationUsername,
- animateEmojis
+ animateEmojis,
)
binding.notificationDisplayName.text = emojifiedDisplayName
loadAvatar(
account.avatar,
binding.notificationAvatar,
avatarRadius42dp,
- animateAvatars
+ animateAvatars,
)
val emojifiedNote = account.note.parseAsMastodonHtml().emojify(
account.emojis,
binding.notificationAccountNote,
- animateEmojis
+ animateEmojis,
)
setClickableText(binding.notificationAccountNote, emojifiedNote, emptyList(), null, linkListener)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationFetcher.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationFetcher.kt
index efb322263f..109b605f02 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationFetcher.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationFetcher.kt
@@ -46,7 +46,7 @@ import kotlin.time.Duration.Companion.milliseconds
class NotificationFetcher @Inject constructor(
private val mastodonApi: MastodonApi,
private val accountManager: AccountManager,
- private val context: Context
+ private val context: Context,
) {
suspend fun fetchAndShow() {
for (account in accountManager.getAllAccountsOrderedByActive()) {
@@ -93,7 +93,7 @@ class NotificationFetcher @Inject constructor(
notificationManager,
notification,
account,
- index == 0
+ index == 0,
)
notificationManager.notify(notification.id, account.id.toInt(), androidNotification)
// Android will rate limit / drop notifications if they're posted too
@@ -105,7 +105,7 @@ class NotificationFetcher @Inject constructor(
NotificationHelper.updateSummaryNotifications(
context,
notificationManager,
- account
+ account,
)
accountManager.saveAccount(account)
@@ -161,7 +161,7 @@ class NotificationFetcher @Inject constructor(
val response = mastodonApi.notificationsWithAuth(
authHeader,
account.domain,
- minId = minId
+ minId = minId,
)
if (!response.isSuccessful) break
@@ -185,7 +185,7 @@ class NotificationFetcher @Inject constructor(
mastodonApi.updateMarkersWithAuth(
auth = authHeader,
domain = account.domain,
- notificationsLastReadId = newMarkerId
+ notificationsLastReadId = newMarkerId,
)
account.notificationMarkerId = newMarkerId
accountManager.saveAccount(account)
@@ -199,7 +199,7 @@ class NotificationFetcher @Inject constructor(
val allMarkers = mastodonApi.markersWithAuth(
authHeader,
account.domain,
- listOf("notifications")
+ listOf("notifications"),
)
val notificationMarker = allMarkers["notifications"]
Log.d(TAG, "Fetched marker for ${account.fullName}: $notificationMarker")
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsFragment.kt
index 26104499f3..cfdaeaeb94 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsFragment.kt
@@ -114,14 +114,14 @@ class NotificationsFragment :
statusActionListener = this,
notificationActionListener = this,
accountActionListener = this,
- statusDisplayOptions = viewModel.statusDisplayOptions.value
+ statusDisplayOptions = viewModel.statusDisplayOptions.value,
)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
+ savedInstanceState: Bundle?,
): View {
return inflater.inflate(R.layout.fragment_timeline_notifications, container, false)
}
@@ -149,7 +149,7 @@ class NotificationsFragment :
binding.recyclerView.setAccessibilityDelegateCompat(
ListStatusAccessibilityDelegate(
binding.recyclerView,
- this
+ this,
) { pos: Int ->
val notification = adapter.snapshot().getOrNull(pos)
// We support replies only for now
@@ -158,49 +158,51 @@ class NotificationsFragment :
} else {
null
}
- }
+ },
)
binding.recyclerView.addItemDecoration(
DividerItemDecoration(
context,
- DividerItemDecoration.VERTICAL
- )
+ DividerItemDecoration.VERTICAL,
+ ),
)
- binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
- val actionButton = (activity as ActionButtonActivity).actionButton
-
- override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
- actionButton?.let { fab ->
- if (!viewModel.uiState.value.showFabWhileScrolling) {
- if (dy > 0 && fab.isShown) {
- fab.hide() // Hide when scrolling down
- } else if (dy < 0 && !fab.isShown) {
- fab.show() // Show when scrolling up
+ binding.recyclerView.addOnScrollListener(
+ object : RecyclerView.OnScrollListener() {
+ val actionButton = (activity as ActionButtonActivity).actionButton
+
+ override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
+ actionButton?.let { fab ->
+ if (!viewModel.uiState.value.showFabWhileScrolling) {
+ if (dy > 0 && fab.isShown) {
+ fab.hide() // Hide when scrolling down
+ } else if (dy < 0 && !fab.isShown) {
+ fab.show() // Show when scrolling up
+ }
+ } else if (!fab.isShown) {
+ fab.show()
}
- } else if (!fab.isShown) {
- fab.show()
}
}
- }
- @Suppress("SyntheticAccessor")
- override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
- newState != SCROLL_STATE_IDLE && return
+ @Suppress("SyntheticAccessor")
+ override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
+ newState != SCROLL_STATE_IDLE && return
- // Save the ID of the first notification visible in the list, so the user's
- // reading position is always restorable.
- layoutManager.findFirstVisibleItemPosition().takeIf { it != NO_POSITION }?.let { position ->
- adapter.snapshot().getOrNull(position)?.id?.let { id ->
- viewModel.accept(InfallibleUiAction.SaveVisibleId(visibleId = id))
+ // Save the ID of the first notification visible in the list, so the user's
+ // reading position is always restorable.
+ layoutManager.findFirstVisibleItemPosition().takeIf { it != NO_POSITION }?.let { position ->
+ adapter.snapshot().getOrNull(position)?.id?.let { id ->
+ viewModel.accept(InfallibleUiAction.SaveVisibleId(visibleId = id))
+ }
}
}
- }
- })
+ },
+ )
binding.recyclerView.adapter = adapter.withLoadStateHeaderAndFooter(
header = TimelineLoadStateAdapter { adapter.retry() },
- footer = TimelineLoadStateAdapter { adapter.retry() }
+ footer = TimelineLoadStateAdapter { adapter.retry() },
)
(binding.recyclerView.itemAnimator as SimpleItemAnimator?)!!.supportsChangeAnimations =
@@ -241,13 +243,13 @@ class NotificationsFragment :
val message = getString(
error.message,
error.throwable.localizedMessage
- ?: getString(R.string.ui_error_unknown)
+ ?: getString(R.string.ui_error_unknown),
)
val snackbar = Snackbar.make(
// Without this the FAB will not move out of the way
(activity as ActionButtonActivity).actionButton ?: binding.root,
message,
- Snackbar.LENGTH_INDEFINITE
+ Snackbar.LENGTH_INDEFINITE,
).setTextMaxLines(5)
error.action?.let { action ->
snackbar.setAction(R.string.action_retry) {
@@ -281,14 +283,15 @@ class NotificationsFragment :
Snackbar.make(
(activity as ActionButtonActivity).actionButton ?: binding.root,
getString(it.msg),
- Snackbar.LENGTH_SHORT
+ Snackbar.LENGTH_SHORT,
).show()
when (it) {
// The follow request is no longer valid, refresh the adapter to
// remove it.
is NotificationActionSuccess.AcceptFollowRequest,
- is NotificationActionSuccess.RejectFollowRequest -> adapter.refresh()
+ is NotificationActionSuccess.RejectFollowRequest,
+ -> adapter.refresh()
}
}
}
@@ -318,11 +321,11 @@ class NotificationsFragment :
statusViewData.status.copy(reblogged = it.action.state)
is StatusActionSuccess.VoteInPoll ->
statusViewData.status.copy(
- poll = it.action.poll.votedCopy(it.action.choices)
+ poll = it.action.poll.votedCopy(it.action.choices),
)
}
indexedViewData.value?.statusViewData = statusViewData.copy(
- status = status
+ status = status,
)
adapter.notifyItemChanged(indexedViewData.index)
@@ -402,7 +405,7 @@ class NotificationsFragment :
getView() ?: return@post
binding.recyclerView.smoothScrollBy(
0,
- Utils.dpToPx(requireContext(), -30)
+ Utils.dpToPx(requireContext(), -30),
)
}
peeked = true
@@ -441,7 +444,7 @@ class NotificationsFragment :
if (adapter.itemCount == 0) {
binding.statusView.setup(
R.drawable.elephant_friend_empty,
- R.string.message_empty
+ R.string.message_empty,
)
binding.recyclerView.hide()
binding.statusView.show()
@@ -559,7 +562,7 @@ class NotificationsFragment :
super.viewMedia(
attachmentIndex,
list(status, viewModel.statusDisplayOptions.value.showSensitiveMedia),
- view
+ view,
)
}
@@ -576,7 +579,7 @@ class NotificationsFragment :
override fun onExpandedChange(expanded: Boolean, position: Int) {
val notificationViewData = adapter.snapshot()[position] ?: return
notificationViewData.statusViewData = notificationViewData.statusViewData?.copy(
- isExpanded = expanded
+ isExpanded = expanded,
)
adapter.notifyItemChanged(position)
}
@@ -584,7 +587,7 @@ class NotificationsFragment :
override fun onContentHiddenChange(isShowing: Boolean, position: Int) {
val notificationViewData = adapter.snapshot()[position] ?: return
notificationViewData.statusViewData = notificationViewData.statusViewData?.copy(
- isShowingContent = isShowing
+ isShowingContent = isShowing,
)
adapter.notifyItemChanged(position)
}
@@ -592,7 +595,7 @@ class NotificationsFragment :
override fun onContentCollapsedChange(isCollapsed: Boolean, position: Int) {
val notificationViewData = adapter.snapshot()[position] ?: return
notificationViewData.statusViewData = notificationViewData.statusViewData?.copy(
- isCollapsed = isCollapsed
+ isCollapsed = isCollapsed,
)
adapter.notifyItemChanged(position)
}
@@ -604,7 +607,7 @@ class NotificationsFragment :
override fun clearWarningAction(position: Int) {
val notificationViewData = adapter.snapshot()[position] ?: return
notificationViewData.statusViewData = notificationViewData.statusViewData?.copy(
- filterAction = Filter.Action.NONE
+ filterAction = Filter.Action.NONE,
)
adapter.notifyItemChanged(position)
}
@@ -654,7 +657,7 @@ class NotificationsFragment :
override fun onViewReport(reportId: String) {
requireContext().openLink(
- "https://${viewModel.account.domain}/admin/reports/$reportId"
+ "https://${viewModel.account.domain}/admin/reports/$reportId",
)
}
@@ -676,21 +679,21 @@ class NotificationsFragment :
object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(
oldItem: NotificationViewData,
- newItem: NotificationViewData
+ newItem: NotificationViewData,
): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(
oldItem: NotificationViewData,
- newItem: NotificationViewData
+ newItem: NotificationViewData,
): Boolean {
return false
}
override fun getChangePayload(
oldItem: NotificationViewData,
- newItem: NotificationViewData
+ newItem: NotificationViewData,
): Any? {
return if (oldItem == newItem) {
// If items are equal - update timestamp only
@@ -706,7 +709,7 @@ class NotificationsFragment :
class FilterDialogFragment(
private val activeFilter: Set,
- private val listener: ((filter: Set) -> Unit)
+ private val listener: ((filter: Set) -> Unit),
) : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val context = requireContext()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt
index f7476e3180..289efb7ec9 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt
@@ -52,20 +52,24 @@ enum class NotificationViewKind {
FOLLOW,
FOLLOW_REQUEST,
REPORT,
- UNKNOWN;
+ UNKNOWN,
+ ;
companion object {
fun from(kind: Notification.Type?): NotificationViewKind {
return when (kind) {
Notification.Type.MENTION,
Notification.Type.POLL,
- Notification.Type.UNKNOWN -> STATUS
+ Notification.Type.UNKNOWN,
+ -> STATUS
Notification.Type.FAVOURITE,
Notification.Type.REBLOG,
Notification.Type.STATUS,
- Notification.Type.UPDATE -> NOTIFICATION
+ Notification.Type.UPDATE,
+ -> NOTIFICATION
Notification.Type.FOLLOW,
- Notification.Type.SIGN_UP -> FOLLOW
+ Notification.Type.SIGN_UP,
+ -> FOLLOW
Notification.Type.FOLLOW_REQUEST -> FOLLOW_REQUEST
Notification.Type.REPORT -> REPORT
null -> UNKNOWN
@@ -106,7 +110,7 @@ class NotificationsPagingAdapter(
private val statusActionListener: StatusActionListener,
private val notificationActionListener: NotificationActionListener,
private val accountActionListener: AccountActionListener,
- var statusDisplayOptions: StatusDisplayOptions
+ var statusDisplayOptions: StatusDisplayOptions,
) : PagingDataAdapter(diffCallback) {
private val absoluteTimeFormatter = AbsoluteTimeFormatter()
@@ -117,7 +121,7 @@ class NotificationsPagingAdapter(
fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
)
}
@@ -138,14 +142,14 @@ class NotificationsPagingAdapter(
StatusViewHolder(
ItemStatusBinding.inflate(inflater, parent, false),
statusActionListener,
- accountId
+ accountId,
)
}
NotificationViewKind.STATUS_FILTERED -> {
StatusViewHolder(
ItemStatusWrapperBinding.inflate(inflater, parent, false),
statusActionListener,
- accountId
+ accountId,
)
}
NotificationViewKind.NOTIFICATION -> {
@@ -153,14 +157,14 @@ class NotificationsPagingAdapter(
ItemStatusNotificationBinding.inflate(inflater, parent, false),
statusActionListener,
notificationActionListener,
- absoluteTimeFormatter
+ absoluteTimeFormatter,
)
}
NotificationViewKind.FOLLOW -> {
FollowViewHolder(
ItemFollowBinding.inflate(inflater, parent, false),
notificationActionListener,
- statusActionListener
+ statusActionListener,
)
}
NotificationViewKind.FOLLOW_REQUEST -> {
@@ -168,18 +172,18 @@ class NotificationsPagingAdapter(
ItemFollowRequestBinding.inflate(inflater, parent, false),
accountActionListener,
statusActionListener,
- showHeader = true
+ showHeader = true,
)
}
NotificationViewKind.REPORT -> {
ReportNotificationViewHolder(
ItemReportNotificationBinding.inflate(inflater, parent, false),
- notificationActionListener
+ notificationActionListener,
)
}
else -> {
FallbackNotificationViewHolder(
- SimpleListItem1Binding.inflate(inflater, parent, false)
+ SimpleListItem1Binding.inflate(inflater, parent, false),
)
}
}
@@ -192,7 +196,7 @@ class NotificationsPagingAdapter(
override fun onBindViewHolder(
holder: RecyclerView.ViewHolder,
position: Int,
- payloads: MutableList
+ payloads: MutableList,
) {
bindViewHolder(holder, position, payloads)
}
@@ -200,7 +204,7 @@ class NotificationsPagingAdapter(
private fun bindViewHolder(
holder: RecyclerView.ViewHolder,
position: Int,
- payloads: List<*>?
+ payloads: List<*>?,
) {
getItem(position)?.let { (holder as ViewHolder).bind(it, payloads, statusDisplayOptions) }
}
@@ -210,12 +214,12 @@ class NotificationsPagingAdapter(
* be used, but is useful when migrating code.
*/
private class FallbackNotificationViewHolder(
- val binding: SimpleListItem1Binding
+ val binding: SimpleListItem1Binding,
) : ViewHolder, RecyclerView.ViewHolder(binding.root) {
override fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
) {
binding.text1.text = viewData.statusViewData?.content
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingSource.kt
index 37c72f0eca..20bcb7f018 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingSource.kt
@@ -37,7 +37,7 @@ private val INVALID = LoadResult.Invalid()
class NotificationsPagingSource @Inject constructor(
private val mastodonApi: MastodonApi,
private val gson: Gson,
- private val notificationFilter: Set
+ private val notificationFilter: Set,
) : PagingSource() {
override suspend fun load(params: LoadParams): LoadResult {
Log.d(TAG, "load() with ${params.javaClass.simpleName} for key: ${params.key}")
@@ -50,12 +50,12 @@ class NotificationsPagingSource @Inject constructor(
is LoadParams.Append -> mastodonApi.notifications(
maxId = params.key,
limit = params.loadSize,
- excludes = notificationFilter
+ excludes = notificationFilter,
)
is LoadParams.Prepend -> mastodonApi.notifications(
minId = params.key,
limit = params.loadSize,
- excludes = notificationFilter
+ excludes = notificationFilter,
)
}
@@ -92,7 +92,7 @@ class NotificationsPagingSource @Inject constructor(
return LoadResult.Page(
data = response.body()!!,
nextKey = links.next,
- prevKey = links.prev
+ prevKey = links.prev,
)
} catch (e: Exception) {
return LoadResult.Error(e)
@@ -116,7 +116,7 @@ class NotificationsPagingSource @Inject constructor(
val key = params.key
?: return@coroutineScope mastodonApi.notifications(
limit = params.loadSize,
- excludes = notificationFilter
+ excludes = notificationFilter,
)
// It's important to return *something* from this state. If an empty page is returned
@@ -193,7 +193,7 @@ class NotificationsPagingSource @Inject constructor(
// Everything failed -- fallback to fetching the most recent notifications
return@coroutineScope mastodonApi.notifications(
limit = params.loadSize,
- excludes = notificationFilter
+ excludes = notificationFilter,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsRepository.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsRepository.kt
index 7de654f8ab..0baa58f320 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsRepository.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsRepository.kt
@@ -37,7 +37,7 @@ import javax.inject.Inject
class NotificationsRepository @Inject constructor(
private val mastodonApi: MastodonApi,
private val gson: Gson,
- @ApplicationScope private val externalScope: CoroutineScope
+ @ApplicationScope private val externalScope: CoroutineScope,
) {
private var factory: InvalidatingPagingSourceFactory? = null
@@ -48,7 +48,7 @@ class NotificationsRepository @Inject constructor(
fun getNotificationsStream(
filter: Set,
pageSize: Int = PAGE_SIZE,
- initialKey: String? = null
+ initialKey: String? = null,
): Flow> {
Log.d(TAG, "getNotificationsStream(), filtering: $filter")
@@ -59,7 +59,7 @@ class NotificationsRepository @Inject constructor(
return Pager(
config = PagingConfig(pageSize = pageSize, initialLoadSize = pageSize),
initialKey = initialKey,
- pagingSourceFactory = factory!!
+ pagingSourceFactory = factory!!,
).flow
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsViewModel.kt
index 8e010f9a4d..e3f42f5feb 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsViewModel.kt
@@ -82,17 +82,17 @@ data class UiState(
val activeFilter: Set = emptySet(),
/** True if the FAB should be shown while scrolling */
- val showFabWhileScrolling: Boolean = true
+ val showFabWhileScrolling: Boolean = true,
)
/** Preferences the UI reacts to */
data class UiPrefs(
- val showFabWhileScrolling: Boolean
+ val showFabWhileScrolling: Boolean,
) {
companion object {
/** Relevant preference keys. Changes to any of these trigger a display update */
val prefKeys = setOf(
- PrefKeys.FAB_HIDE
+ PrefKeys.FAB_HIDE,
)
}
}
@@ -164,7 +164,7 @@ sealed class NotificationActionSuccess(
* The original action, in case additional information is required from it to display the
* message.
*/
- open val action: NotificationAction
+ open val action: NotificationAction,
) : UiSuccess() {
data class AcceptFollowRequest(override val action: NotificationAction) :
NotificationActionSuccess(R.string.ui_success_accepted_follow_request, action)
@@ -181,7 +181,7 @@ sealed class NotificationActionSuccess(
/** Actions the user can trigger on an individual status */
sealed class StatusAction(
- open val statusViewData: StatusViewData
+ open val statusViewData: StatusViewData,
) : FallibleUiAction() {
/** Set the bookmark state for a status */
data class Bookmark(val state: Boolean, override val statusViewData: StatusViewData) :
@@ -199,7 +199,7 @@ sealed class StatusAction(
data class VoteInPoll(
val poll: Poll,
val choices: List,
- override val statusViewData: StatusViewData
+ override val statusViewData: StatusViewData,
) : StatusAction(statusViewData)
}
@@ -236,45 +236,45 @@ sealed class UiError(
@StringRes val message: Int,
/** The action that failed. Can be resent to retry the action */
- open val action: UiAction? = null
+ open val action: UiAction? = null,
) {
data class ClearNotifications(override val throwable: Throwable) : UiError(
throwable,
- R.string.ui_error_clear_notifications
+ R.string.ui_error_clear_notifications,
)
data class Bookmark(
override val throwable: Throwable,
- override val action: StatusAction.Bookmark
+ override val action: StatusAction.Bookmark,
) : UiError(throwable, R.string.ui_error_bookmark, action)
data class Favourite(
override val throwable: Throwable,
- override val action: StatusAction.Favourite
+ override val action: StatusAction.Favourite,
) : UiError(throwable, R.string.ui_error_favourite, action)
data class Reblog(
override val throwable: Throwable,
- override val action: StatusAction.Reblog
+ override val action: StatusAction.Reblog,
) : UiError(throwable, R.string.ui_error_reblog, action)
data class VoteInPoll(
override val throwable: Throwable,
- override val action: StatusAction.VoteInPoll
+ override val action: StatusAction.VoteInPoll,
) : UiError(throwable, R.string.ui_error_vote, action)
data class AcceptFollowRequest(
override val throwable: Throwable,
- override val action: NotificationAction.AcceptFollowRequest
+ override val action: NotificationAction.AcceptFollowRequest,
) : UiError(throwable, R.string.ui_error_accept_follow_request, action)
data class RejectFollowRequest(
override val throwable: Throwable,
- override val action: NotificationAction.RejectFollowRequest
+ override val action: NotificationAction.RejectFollowRequest,
) : UiError(throwable, R.string.ui_error_reject_follow_request, action)
data class GetFilters(
- override val throwable: Throwable
+ override val throwable: Throwable,
) : UiError(throwable, R.string.ui_error_filter_v1_load, null)
companion object {
@@ -298,7 +298,7 @@ class NotificationsViewModel @Inject constructor(
private val timelineCases: TimelineCases,
private val eventHub: EventHub,
private val filtersRepository: FiltersRepository,
- private val filterModel: FilterModel
+ private val filterModel: FilterModel,
) : ViewModel() {
/** The account to display notifications for */
val account = accountManager.activeAccount!!
@@ -355,8 +355,8 @@ class NotificationsViewModel @Inject constructor(
.onStart {
emit(
InfallibleUiAction.ApplyFilter(
- filter = deserialize(account.notificationsFilter)
- )
+ filter = deserialize(account.notificationsFilter),
+ ),
)
}
@@ -391,8 +391,8 @@ class NotificationsViewModel @Inject constructor(
statusDisplayOptions = MutableStateFlow(
StatusDisplayOptions.from(
preferences,
- account
- )
+ account,
+ ),
)
viewModelScope.launch {
@@ -403,7 +403,7 @@ class NotificationsViewModel @Inject constructor(
statusDisplayOptions.value.make(
preferences,
it.preferenceKey,
- account
+ account,
)
}
.collect {
@@ -458,23 +458,23 @@ class NotificationsViewModel @Inject constructor(
is StatusAction.Bookmark ->
timelineCases.bookmark(
action.statusViewData.actionableId,
- action.state
+ action.state,
)
is StatusAction.Favourite ->
timelineCases.favourite(
action.statusViewData.actionableId,
- action.state
+ action.state,
)
is StatusAction.Reblog ->
timelineCases.reblog(
action.statusViewData.actionableId,
- action.state
+ action.state,
)
is StatusAction.VoteInPoll ->
timelineCases.voteInPoll(
action.statusViewData.actionableId,
action.poll.id,
- action.choices
+ action.choices,
)
}.getOrThrow()
uiSuccess.emit(StatusActionSuccess.from(action))
@@ -516,18 +516,18 @@ class NotificationsViewModel @Inject constructor(
uiState = combine(notificationFilter, getUiPrefs()) { filter, prefs ->
UiState(
activeFilter = filter.filter,
- showFabWhileScrolling = prefs.showFabWhileScrolling
+ showFabWhileScrolling = prefs.showFabWhileScrolling,
)
}.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(stopTimeoutMillis = 5000),
- initialValue = UiState()
+ initialValue = UiState(),
)
}
private fun getNotifications(
filters: Set,
- initialKey: String? = null
+ initialKey: String? = null,
): Flow> {
Log.d(TAG, "getNotifications: $initialKey")
return repository.getNotificationsStream(filter = filters, initialKey = initialKey)
@@ -539,7 +539,7 @@ class NotificationsViewModel @Inject constructor(
!(notification.status?.actionableStatus?.sensitive ?: false),
isExpanded = statusDisplayOptions.value.openSpoiler,
isCollapsed = true,
- filterAction = filterAction
+ filterAction = filterAction,
)
}.filter {
it.statusViewData?.filterAction != Filter.Action.HIDE
@@ -561,7 +561,7 @@ class NotificationsViewModel @Inject constructor(
filterModel.initWithFilters(
filters.filters.filter {
it.context.contains("notifications")
- }
+ },
)
repository.invalidate()
}
@@ -594,7 +594,7 @@ class NotificationsViewModel @Inject constructor(
.onStart { emit(toPrefs()) }
private fun toPrefs() = UiPrefs(
- showFabWhileScrolling = !preferences.getBoolean(PrefKeys.FAB_HIDE, false)
+ showFabWhileScrolling = !preferences.getBoolean(PrefKeys.FAB_HIDE, false),
)
companion object {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/PushNotificationHelper.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/PushNotificationHelper.kt
index f61307e3eb..82c8248918 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/PushNotificationHelper.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/PushNotificationHelper.kt
@@ -55,7 +55,7 @@ fun showMigrationNoticeIfNecessary(
context: Context,
parent: View,
anchorView: View?,
- accountManager: AccountManager
+ accountManager: AccountManager,
) {
// No point showing anything if we cannot enable it
if (!isUnifiedPushAvailable(context)) return
@@ -163,7 +163,7 @@ suspend fun registerUnifiedPushEndpoint(
api: MastodonApi,
accountManager: AccountManager,
account: AccountEntity,
- endpoint: String
+ endpoint: String,
) = withContext(Dispatchers.IO) {
// Generate a prime256v1 key pair for WebPush
// Decryption is unimplemented for now, since Mastodon uses an old WebPush
@@ -179,7 +179,7 @@ suspend fun registerUnifiedPushEndpoint(
endpoint,
keyPair.pubkey,
auth,
- buildSubscriptionData(context, account)
+ buildSubscriptionData(context, account),
).onFailure { throwable ->
Log.w(TAG, "Error setting push endpoint for account ${account.id}", throwable)
disableUnifiedPushNotificationsForAccount(context, account)
@@ -201,7 +201,7 @@ suspend fun updateUnifiedPushSubscription(context: Context, api: MastodonApi, ac
api.updatePushNotificationSubscription(
"Bearer ${account.accessToken}",
account.domain,
- buildSubscriptionData(context, account)
+ buildSubscriptionData(context, account),
).onSuccess {
Log.d(TAG, "UnifiedPush subscription updated for account ${account.id}")
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusNotificationViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusNotificationViewHolder.kt
index ab23d45d21..a6ba34d30f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusNotificationViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusNotificationViewHolder.kt
@@ -67,22 +67,22 @@ internal class StatusNotificationViewHolder(
private val binding: ItemStatusNotificationBinding,
private val statusActionListener: StatusActionListener,
private val notificationActionListener: NotificationActionListener,
- private val absoluteTimeFormatter: AbsoluteTimeFormatter
+ private val absoluteTimeFormatter: AbsoluteTimeFormatter,
) : NotificationsPagingAdapter.ViewHolder, RecyclerView.ViewHolder(binding.root) {
private val avatarRadius48dp = itemView.context.resources.getDimensionPixelSize(
- R.dimen.avatar_radius_48dp
+ R.dimen.avatar_radius_48dp,
)
private val avatarRadius36dp = itemView.context.resources.getDimensionPixelSize(
- R.dimen.avatar_radius_36dp
+ R.dimen.avatar_radius_36dp,
)
private val avatarRadius24dp = itemView.context.resources.getDimensionPixelSize(
- R.dimen.avatar_radius_24dp
+ R.dimen.avatar_radius_24dp,
)
override fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
) {
val statusViewData = viewData.statusViewData
if (payloads.isNullOrEmpty()) {
@@ -103,13 +103,13 @@ internal class StatusNotificationViewHolder(
account.avatar,
account.bot,
statusDisplayOptions.animateAvatars,
- statusDisplayOptions.showBotOverlay
+ statusDisplayOptions.showBotOverlay,
)
} else {
setAvatars(
account.avatar,
viewData.account.avatar,
- statusDisplayOptions.animateAvatars
+ statusDisplayOptions.animateAvatars,
)
}
@@ -129,7 +129,7 @@ internal class StatusNotificationViewHolder(
if (StatusBaseViewHolder.Key.KEY_CREATED == item && statusViewData != null) {
setCreatedAt(
statusViewData.status.actionableStatus.createdAt,
- statusDisplayOptions.useAbsoluteTime
+ statusDisplayOptions.useAbsoluteTime,
)
}
}
@@ -178,7 +178,7 @@ internal class StatusNotificationViewHolder(
then,
now,
DateUtils.SECOND_IN_MILLIS,
- DateUtils.FORMAT_ABBREV_RELATIVE
+ DateUtils.FORMAT_ABBREV_RELATIVE,
)
} else {
// unknown minutes~
@@ -193,7 +193,7 @@ internal class StatusNotificationViewHolder(
private fun getIconWithColor(
context: Context,
@DrawableRes drawable: Int,
- @ColorRes color: Int
+ @ColorRes color: Int,
): Drawable? {
val icon = ContextCompat.getDrawable(context, drawable)
icon?.setColorFilter(context.getColor(color), PorterDuff.Mode.SRC_ATOP)
@@ -206,7 +206,7 @@ internal class StatusNotificationViewHolder(
statusAvatarUrl,
binding.notificationStatusAvatar,
avatarRadius48dp,
- animateAvatars
+ animateAvatars,
)
if (showBotOverlay && isBot) {
binding.notificationNotificationAvatar.visibility = View.VISIBLE
@@ -225,21 +225,21 @@ internal class StatusNotificationViewHolder(
statusAvatarUrl,
binding.notificationStatusAvatar,
avatarRadius36dp,
- animateAvatars
+ animateAvatars,
)
binding.notificationNotificationAvatar.visibility = View.VISIBLE
loadAvatar(
notificationAvatarUrl,
binding.notificationNotificationAvatar,
avatarRadius24dp,
- animateAvatars
+ animateAvatars,
)
}
fun setMessage(
notificationViewData: NotificationViewData,
listener: LinkListener,
- animateEmojis: Boolean
+ animateEmojis: Boolean,
) {
val statusViewData = notificationViewData.statusViewData
val displayName = notificationViewData.account.name.unicodeWrap()
@@ -273,7 +273,7 @@ internal class StatusNotificationViewHolder(
icon,
null,
null,
- null
+ null,
)
val wholeMessage = String.format(format, displayName)
val str = SpannableStringBuilder(wholeMessage)
@@ -282,12 +282,12 @@ internal class StatusNotificationViewHolder(
StyleSpan(Typeface.BOLD),
displayNameIndex,
displayNameIndex + displayName.length,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,
)
val emojifiedText = str.emojify(
notificationViewData.account.emojis,
binding.notificationTopText,
- animateEmojis
+ animateEmojis,
)
binding.notificationTopText.text = emojifiedText
if (statusViewData != null) {
@@ -298,18 +298,18 @@ internal class StatusNotificationViewHolder(
if (hasSpoiler) View.VISIBLE else View.GONE
if (statusViewData.isExpanded) {
binding.notificationContentWarningButton.setText(
- R.string.post_content_warning_show_less
+ R.string.post_content_warning_show_less,
)
} else {
binding.notificationContentWarningButton.setText(
- R.string.post_content_warning_show_more
+ R.string.post_content_warning_show_more,
)
}
binding.notificationContentWarningButton.setOnClickListener {
if (bindingAdapterPosition != RecyclerView.NO_POSITION) {
notificationActionListener.onExpandedChange(
!statusViewData.isExpanded,
- bindingAdapterPosition
+ bindingAdapterPosition,
)
}
binding.notificationContent.visibility =
@@ -322,7 +322,7 @@ internal class StatusNotificationViewHolder(
private fun setupContentAndSpoiler(
listener: LinkListener,
statusViewData: StatusViewData,
- animateEmojis: Boolean
+ animateEmojis: Boolean,
) {
val shouldShowContentIfSpoiler = statusViewData.isExpanded
val hasSpoiler = !TextUtils.isEmpty(statusViewData.status.spoilerText)
@@ -339,19 +339,19 @@ internal class StatusNotificationViewHolder(
if (position != RecyclerView.NO_POSITION) {
notificationActionListener.onNotificationContentCollapsedChange(
!statusViewData.isCollapsed,
- position
+ position,
)
}
}
binding.buttonToggleNotificationContent.visibility = View.VISIBLE
if (statusViewData.isCollapsed) {
binding.buttonToggleNotificationContent.setText(
- R.string.post_content_warning_show_more
+ R.string.post_content_warning_show_more,
)
binding.notificationContent.filters = COLLAPSE_INPUT_FILTER
} else {
binding.buttonToggleNotificationContent.setText(
- R.string.post_content_warning_show_less
+ R.string.post_content_warning_show_less,
)
binding.notificationContent.filters = NO_INPUT_FILTER
}
@@ -363,19 +363,19 @@ internal class StatusNotificationViewHolder(
content.emojify(
emojis,
binding.notificationContent,
- animateEmojis
+ animateEmojis,
)
setClickableText(
binding.notificationContent,
emojifiedText,
statusViewData.actionable.mentions,
statusViewData.actionable.tags,
- listener
+ listener,
)
val emojifiedContentWarning: CharSequence = statusViewData.spoilerText.emojify(
statusViewData.actionable.emojis,
binding.notificationContentWarningDescription,
- animateEmojis
+ animateEmojis,
)
binding.notificationContentWarningDescription.text = emojifiedContentWarning
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusViewHolder.kt
index 3801291300..b5f5bb070c 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/StatusViewHolder.kt
@@ -27,13 +27,13 @@ import com.keylesspalace.tusky.viewdata.NotificationViewData
internal class StatusViewHolder(
binding: ViewBinding,
private val statusActionListener: StatusActionListener,
- private val accountId: String
+ private val accountId: String,
) : NotificationsPagingAdapter.ViewHolder, StatusViewHolder(binding.root) {
override fun bind(
viewData: NotificationViewData,
payloads: List<*>?,
- statusDisplayOptions: StatusDisplayOptions
+ statusDisplayOptions: StatusDisplayOptions,
) {
val statusViewData = viewData.statusViewData
if (statusViewData == null) {
@@ -48,7 +48,7 @@ internal class StatusViewHolder(
statusViewData,
statusActionListener,
statusDisplayOptions,
- payloads?.firstOrNull()
+ payloads?.firstOrNull(),
)
}
if (viewData.type == Notification.Type.POLL) {
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 b0fedb2b1a..16446ac28c 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
@@ -99,7 +99,7 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
activity?.startActivity(intent)
activity?.overridePendingTransition(
R.anim.slide_from_right,
- R.anim.slide_to_left
+ R.anim.slide_to_left,
)
true
}
@@ -113,7 +113,7 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
activity?.startActivity(intent)
activity?.overridePendingTransition(
R.anim.slide_from_right,
- R.anim.slide_to_left
+ R.anim.slide_to_left,
)
true
}
@@ -128,7 +128,7 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
activity?.startActivity(intent)
activity?.overridePendingTransition(
R.anim.slide_from_right,
- R.anim.slide_to_left
+ R.anim.slide_to_left,
)
true
}
@@ -146,7 +146,7 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
activity?.startActivity(intent)
activity?.overridePendingTransition(
R.anim.slide_from_right,
- R.anim.slide_to_left
+ R.anim.slide_to_left,
)
true
}
@@ -160,7 +160,7 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
activity?.startActivity(intent)
activity?.overridePendingTransition(
R.anim.slide_from_right,
- R.anim.slide_to_left
+ R.anim.slide_to_left,
)
true
}
@@ -294,28 +294,30 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
// TODO these could also be "datastore backed" preferences (a ServerPreferenceDataStore); follow-up of issue #3204
mastodonApi.accountUpdateSource(visibility, sensitive, language)
- .enqueue(object : Callback {
- override fun onResponse(call: Call, response: Response) {
- val account = response.body()
- if (response.isSuccessful && account != null) {
- accountManager.activeAccount?.let {
- it.defaultPostPrivacy = account.source?.privacy
- ?: Status.Visibility.PUBLIC
- it.defaultMediaSensitivity = account.source?.sensitive ?: false
- it.defaultPostLanguage = language.orEmpty()
- accountManager.saveAccount(it)
+ .enqueue(
+ object : Callback {
+ override fun onResponse(call: Call, response: Response) {
+ val account = response.body()
+ if (response.isSuccessful && account != null) {
+ accountManager.activeAccount?.let {
+ it.defaultPostPrivacy = account.source?.privacy
+ ?: Status.Visibility.PUBLIC
+ it.defaultMediaSensitivity = account.source?.sensitive ?: false
+ it.defaultPostLanguage = language.orEmpty()
+ accountManager.saveAccount(it)
+ }
+ } else {
+ Log.e("AccountPreferences", "failed updating settings on server")
+ showErrorSnackbar(visibility, sensitive)
}
- } else {
- Log.e("AccountPreferences", "failed updating settings on server")
- showErrorSnackbar(visibility, sensitive)
}
- }
- override fun onFailure(call: Call, t: Throwable) {
- Log.e("AccountPreferences", "failed updating settings on server", t)
- showErrorSnackbar(visibility, sensitive)
- }
- })
+ override fun onFailure(call: Call, t: Throwable) {
+ Log.e("AccountPreferences", "failed updating settings on server", t)
+ showErrorSnackbar(visibility, sensitive)
+ }
+ },
+ )
}
private fun showErrorSnackbar(visibility: String?, sensitive: Boolean?) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
index a3b8cbc688..04f23aa2ba 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
@@ -97,18 +97,18 @@ class PreferencesActivity :
onBackPressedDispatcher.addCallback(this, restartActivitiesOnBackPressedCallback)
restartActivitiesOnBackPressedCallback.isEnabled = intent.extras?.getBoolean(
- EXTRA_RESTART_ON_BACK
+ EXTRA_RESTART_ON_BACK,
) ?: savedInstanceState?.getBoolean(EXTRA_RESTART_ON_BACK, false) ?: false
}
override fun onPreferenceStartFragment(
caller: PreferenceFragmentCompat,
- pref: Preference
+ pref: Preference,
): Boolean {
val args = pref.extras
val fragment = supportFragmentManager.fragmentFactory.instantiate(
classLoader,
- pref.fragment!!
+ pref.fragment!!,
)
fragment.arguments = args
fragment.setTargetFragment(caller, 0)
@@ -117,7 +117,7 @@ class PreferencesActivity :
R.anim.slide_from_right,
R.anim.slide_to_left,
R.anim.slide_from_left,
- R.anim.slide_to_right
+ R.anim.slide_to_right,
)
replace(R.id.fragment_container, fragment)
addToBackStack(null)
@@ -160,7 +160,8 @@ class PreferencesActivity :
}
"statusTextSize", "absoluteTimeView", "showBotOverlay", "animateGifAvatars", "useBlurhash",
"showSelfUsername", "showCardsInTimelines", "confirmReblogs", "confirmFavourites",
- "enableSwipeForTabs", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR, PrefKeys.SHOW_STATS_INLINE -> {
+ "enableSwipeForTabs", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR, PrefKeys.SHOW_STATS_INLINE,
+ -> {
restartActivitiesOnBackPressedCallback.isEnabled = true
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/ProxyPreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/ProxyPreferencesFragment.kt
index da63db1271..ea2c298a61 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/ProxyPreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/ProxyPreferencesFragment.kt
@@ -56,7 +56,7 @@ class ProxyPreferencesFragment : PreferenceFragmentCompat() {
val portErrorMessage = getString(
R.string.pref_title_http_proxy_port_message,
MIN_PROXY_PORT,
- MAX_PROXY_PORT
+ MAX_PROXY_PORT,
)
validatedEditTextPreference(portErrorMessage, ProxyConfiguration::isValidProxyPort) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/ReportViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/ReportViewModel.kt
index c56be7d30d..4fce5a8446 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/ReportViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/ReportViewModel.kt
@@ -46,7 +46,7 @@ import javax.inject.Inject
class ReportViewModel @Inject constructor(
private val mastodonApi: MastodonApi,
- private val eventHub: EventHub
+ private val eventHub: EventHub,
) : ViewModel() {
private val navigationMutable = MutableLiveData()
@@ -66,14 +66,14 @@ class ReportViewModel @Inject constructor(
private val accountIdFlow = MutableSharedFlow(
replay = 1,
- onBufferOverflow = BufferOverflow.DROP_OLDEST
+ onBufferOverflow = BufferOverflow.DROP_OLDEST,
)
val statusesFlow = accountIdFlow.flatMapLatest { accountId ->
Pager(
initialKey = statusId,
config = PagingConfig(pageSize = 20, initialLoadSize = 20),
- pagingSourceFactory = { StatusesPagingSource(accountId, mastodonApi) }
+ pagingSourceFactory = { StatusesPagingSource(accountId, mastodonApi) },
).flow
}
.map { pagingData ->
@@ -134,7 +134,7 @@ class ReportViewModel @Inject constructor(
},
{
updateRelationship(null)
- }
+ },
)
}
}
@@ -166,7 +166,7 @@ class ReportViewModel @Inject constructor(
},
{ t ->
muteStateMutable.value = Error(false, t.message)
- }
+ },
)
}
@@ -188,7 +188,7 @@ class ReportViewModel @Inject constructor(
}
}, { t ->
blockStateMutable.value = Error(false, t.message)
- })
+ },)
}
blockStateMutable.value = Loading()
}
@@ -201,7 +201,7 @@ class ReportViewModel @Inject constructor(
reportingStateMutable.value = Success(true)
}, { error ->
reportingStateMutable.value = Error(cause = error)
- })
+ },)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/Screen.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/Screen.kt
index fb0b15caed..e3c5c197d2 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/Screen.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/Screen.kt
@@ -20,5 +20,5 @@ enum class Screen {
Note,
Done,
Back,
- Finish
+ Finish,
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt
index ba076b77eb..d985f729d1 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusViewHolder.kt
@@ -47,7 +47,7 @@ class StatusViewHolder(
private val statusDisplayOptions: StatusDisplayOptions,
private val viewState: StatusViewState,
private val adapterHandler: AdapterHandler,
- private val getStatusForPosition: (Int) -> StatusViewData?
+ private val getStatusForPosition: (Int) -> StatusViewData?,
) : RecyclerView.ViewHolder(binding.root) {
private val mediaViewHeight = itemView.context.resources.getDimensionPixelSize(R.dimen.status_media_preview_height)
@@ -90,7 +90,7 @@ class StatusViewHolder(
sensitive,
previewListener,
viewState.isMediaShow(viewData.id, viewData.status.sensitive),
- mediaViewHeight
+ mediaViewHeight,
)
statusViewHelper.setupPollReadonly(viewData.status.poll.toViewData(), viewData.status.emojis, statusDisplayOptions)
@@ -103,7 +103,7 @@ class StatusViewHolder(
shouldTrimStatus(viewdata.content),
viewState.isCollapsed(viewdata.id, true),
viewState.isContentShow(viewdata.id, viewdata.status.sensitive),
- viewdata.spoilerText
+ viewdata.spoilerText,
)
if (viewdata.spoilerText.isBlank()) {
@@ -144,7 +144,7 @@ class StatusViewHolder(
mentions: List,
tags: List?,
emojis: List,
- listener: LinkListener
+ listener: LinkListener,
) {
if (expanded) {
val emojifiedText = content.emojify(emojis, binding.statusContent, statusDisplayOptions.animateEmojis)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesAdapter.kt
index dab371ccf6..c1c414f77d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesAdapter.kt
@@ -28,7 +28,7 @@ import com.keylesspalace.tusky.viewdata.StatusViewData
class StatusesAdapter(
private val statusDisplayOptions: StatusDisplayOptions,
private val statusViewState: StatusViewState,
- private val adapterHandler: AdapterHandler
+ private val adapterHandler: AdapterHandler,
) : PagingDataAdapter(STATUS_COMPARATOR) {
private val statusForPosition: (Int) -> StatusViewData? = { position: Int ->
@@ -42,7 +42,7 @@ class StatusesAdapter(
statusDisplayOptions,
statusViewState,
adapterHandler,
- statusForPosition
+ statusForPosition,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesPagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesPagingSource.kt
index c007239d8d..c09626e2c0 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesPagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/adapter/StatusesPagingSource.kt
@@ -27,7 +27,7 @@ import kotlinx.coroutines.withContext
class StatusesPagingSource(
private val accountId: String,
- private val mastodonApi: MastodonApi
+ private val mastodonApi: MastodonApi,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): String? {
@@ -63,7 +63,7 @@ class StatusesPagingSource(
return LoadResult.Page(
data = result,
prevKey = result.firstOrNull()?.id,
- nextKey = result.lastOrNull()?.id
+ nextKey = result.lastOrNull()?.id,
)
} catch (e: Exception) {
Log.w("StatusesPagingSource", "failed to load statuses", e)
@@ -82,7 +82,7 @@ class StatusesPagingSource(
sinceId = null,
minId = minId,
limit = limit,
- excludeReblogs = true
+ excludeReblogs = true,
).await()
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportDoneFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportDoneFragment.kt
index 0f8065776a..441945e5e8 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportDoneFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportDoneFragment.kt
@@ -60,7 +60,7 @@ class ReportDoneFragment : Fragment(R.layout.fragment_report_done), Injectable {
when (it.data) {
true -> R.string.action_unmute
else -> R.string.action_mute
- }
+ },
)
}
@@ -76,7 +76,7 @@ class ReportDoneFragment : Fragment(R.layout.fragment_report_done), Injectable {
when (it.data) {
true -> R.string.action_unblock
else -> R.string.action_block
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt
index 362680f6f4..cb8d00ef92 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt
@@ -159,7 +159,7 @@ class ReportStatusesFragment :
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
- openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler
+ openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
)
adapter = StatusesAdapter(statusDisplayOptions, viewModel.statusViewState, this)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusActivity.kt
index a53c08928c..38df7fd4ab 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusActivity.kt
@@ -163,8 +163,8 @@ class ScheduledStatusActivity :
visibility = item.params.visibility,
scheduledAt = item.scheduledAt,
sensitive = item.params.sensitive,
- kind = ComposeActivity.ComposeKind.EDIT_SCHEDULED
- )
+ kind = ComposeActivity.ComposeKind.EDIT_SCHEDULED,
+ ),
)
startActivity(intent)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusAdapter.kt
index 9d51bc53c6..97960545f3 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusAdapter.kt
@@ -29,7 +29,7 @@ interface ScheduledStatusActionListener {
}
class ScheduledStatusAdapter(
- val listener: ScheduledStatusActionListener
+ val listener: ScheduledStatusActionListener,
) : PagingDataAdapter>(
object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(oldItem: ScheduledStatus, newItem: ScheduledStatus): Boolean {
@@ -39,7 +39,7 @@ class ScheduledStatusAdapter(
override fun areContentsTheSame(oldItem: ScheduledStatus, newItem: ScheduledStatus): Boolean {
return oldItem == newItem
}
- }
+ },
) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusPagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusPagingSource.kt
index c9af661e47..7461f61509 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusPagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusPagingSource.kt
@@ -23,7 +23,7 @@ import com.keylesspalace.tusky.network.MastodonApi
import kotlinx.coroutines.rx3.await
class ScheduledStatusPagingSourceFactory(
- private val mastodonApi: MastodonApi
+ private val mastodonApi: MastodonApi,
) : () -> ScheduledStatusPagingSource {
private val scheduledTootsCache = mutableListOf()
@@ -44,7 +44,7 @@ class ScheduledStatusPagingSourceFactory(
class ScheduledStatusPagingSource(
private val mastodonApi: MastodonApi,
- private val scheduledStatusesCache: MutableList
+ private val scheduledStatusesCache: MutableList,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): String? {
@@ -56,19 +56,19 @@ class ScheduledStatusPagingSource(
LoadResult.Page(
data = scheduledStatusesCache,
prevKey = null,
- nextKey = scheduledStatusesCache.lastOrNull()?.id
+ nextKey = scheduledStatusesCache.lastOrNull()?.id,
)
} else {
try {
val result = mastodonApi.scheduledStatuses(
maxId = params.key,
- limit = params.loadSize
+ limit = params.loadSize,
).await()
LoadResult.Page(
data = result,
prevKey = null,
- nextKey = result.lastOrNull()?.id
+ nextKey = result.lastOrNull()?.id,
)
} catch (e: Exception) {
Log.w("ScheduledStatuses", "Error loading scheduled statuses", e)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusViewModel.kt
index 483c8e4dfa..fd51f5442e 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledStatusViewModel.kt
@@ -30,14 +30,14 @@ import javax.inject.Inject
class ScheduledStatusViewModel @Inject constructor(
val mastodonApi: MastodonApi,
- val eventHub: EventHub
+ val eventHub: EventHub,
) : ViewModel() {
private val pagingSourceFactory = ScheduledStatusPagingSourceFactory(mastodonApi)
val data = Pager(
config = PagingConfig(pageSize = 20, initialLoadSize = 20),
- pagingSourceFactory = pagingSourceFactory
+ pagingSourceFactory = pagingSourceFactory,
).flow
.cachedIn(viewModelScope)
@@ -49,7 +49,7 @@ class ScheduledStatusViewModel @Inject constructor(
},
{ throwable ->
Log.w("ScheduledTootViewModel", "Error deleting scheduled status", throwable)
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchType.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchType.kt
index 235f8ce033..31edc70e13 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchType.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchType.kt
@@ -18,5 +18,5 @@ package com.keylesspalace.tusky.components.search
enum class SearchType(val apiParameter: String) {
Status("statuses"),
Account("accounts"),
- Hashtag("hashtags")
+ Hashtag("hashtags"),
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt
index dbc571a5d8..31f6df0e4d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchViewModel.kt
@@ -41,7 +41,7 @@ import javax.inject.Inject
class SearchViewModel @Inject constructor(
mastodonApi: MastodonApi,
private val timelineCases: TimelineCases,
- private val accountManager: AccountManager
+ private val accountManager: AccountManager,
) : ViewModel() {
var currentQuery: String = ""
@@ -61,7 +61,7 @@ class SearchViewModel @Inject constructor(
status.toViewData(
isShowingContent = alwaysShowSensitiveMedia || !status.actionableStatus.sensitive,
isExpanded = alwaysOpenSpoiler,
- isCollapsed = true
+ isCollapsed = true,
)
}.apply {
loadedStatuses.addAll(this)
@@ -76,19 +76,19 @@ class SearchViewModel @Inject constructor(
val statusesFlow = Pager(
config = PagingConfig(pageSize = DEFAULT_LOAD_SIZE, initialLoadSize = DEFAULT_LOAD_SIZE),
- pagingSourceFactory = statusesPagingSourceFactory
+ pagingSourceFactory = statusesPagingSourceFactory,
).flow
.cachedIn(viewModelScope)
val accountsFlow = Pager(
config = PagingConfig(pageSize = DEFAULT_LOAD_SIZE, initialLoadSize = DEFAULT_LOAD_SIZE),
- pagingSourceFactory = accountsPagingSourceFactory
+ pagingSourceFactory = accountsPagingSourceFactory,
).flow
.cachedIn(viewModelScope)
val hashtagsFlow = Pager(
config = PagingConfig(pageSize = DEFAULT_LOAD_SIZE, initialLoadSize = DEFAULT_LOAD_SIZE),
- pagingSourceFactory = hashtagsPagingSourceFactory
+ pagingSourceFactory = hashtagsPagingSourceFactory,
).flow
.cachedIn(viewModelScope)
@@ -119,12 +119,12 @@ class SearchViewModel @Inject constructor(
updateStatus(
statusViewData.status.copy(
reblogged = reblog,
- reblog = statusViewData.status.reblog?.copy(reblogged = reblog)
- )
+ reblog = statusViewData.status.reblog?.copy(reblogged = reblog),
+ ),
)
}, { t ->
Log.d(TAG, "Failed to reblog status ${statusViewData.id}", t)
- })
+ },)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchAccountsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchAccountsAdapter.kt
index a8b913081e..73e3ac7605 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchAccountsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchAccountsAdapter.kt
@@ -31,7 +31,7 @@ class SearchAccountsAdapter(private val linkListener: LinkListener, private val
val binding = ItemAccountBinding.inflate(
LayoutInflater.from(parent.context),
parent,
- false
+ false,
)
return AccountViewHolder(binding)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSource.kt
index 10339536a2..e40bea712b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSource.kt
@@ -27,7 +27,7 @@ class SearchPagingSource(
private val searchType: SearchType,
private val searchRequest: String,
private val initialItems: List?,
- private val parser: (SearchResult) -> List
+ private val parser: (SearchResult) -> List,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): Int? {
@@ -39,7 +39,7 @@ class SearchPagingSource(
return LoadResult.Page(
data = emptyList(),
prevKey = null,
- nextKey = null
+ nextKey = null,
)
}
@@ -47,7 +47,7 @@ class SearchPagingSource(
return LoadResult.Page(
data = initialItems.toList(),
prevKey = null,
- nextKey = initialItems.size
+ nextKey = initialItems.size,
)
}
@@ -60,7 +60,7 @@ class SearchPagingSource(
resolve = true,
limit = params.loadSize,
offset = currentKey,
- following = false
+ following = false,
).await()
val res = parser(data)
@@ -74,7 +74,7 @@ class SearchPagingSource(
return LoadResult.Page(
data = res,
prevKey = null,
- nextKey = nextKey
+ nextKey = nextKey,
)
} catch (e: Exception) {
return LoadResult.Error(e)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSourceFactory.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSourceFactory.kt
index f995d029b2..dfe323364b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSourceFactory.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchPagingSourceFactory.kt
@@ -23,7 +23,7 @@ class SearchPagingSourceFactory(
private val mastodonApi: MastodonApi,
private val searchType: SearchType,
private val initialItems: List? = null,
- private val parser: (SearchResult) -> List
+ private val parser: (SearchResult) -> List,
) : () -> SearchPagingSource {
private var searchRequest: String = ""
@@ -36,7 +36,7 @@ class SearchPagingSourceFactory(
searchType = searchType,
searchRequest = searchRequest,
initialItems = initialItems,
- parser = parser
+ parser = parser,
).also { source ->
currentSource = source
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchStatusesAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchStatusesAdapter.kt
index 6517308bc9..6ea13140cd 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchStatusesAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/adapter/SearchStatusesAdapter.kt
@@ -27,7 +27,7 @@ import com.keylesspalace.tusky.viewdata.StatusViewData
class SearchStatusesAdapter(
private val statusDisplayOptions: StatusDisplayOptions,
- private val statusListener: StatusActionListener
+ private val statusListener: StatusActionListener,
) : PagingDataAdapter(STATUS_COMPARATOR) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StatusViewHolder {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchAccountsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchAccountsFragment.kt
index 1bcfaaaa03..b5e402a9d5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchAccountsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchAccountsFragment.kt
@@ -32,8 +32,8 @@ class SearchAccountsFragment : SearchFragment() {
binding.searchRecyclerView.addItemDecoration(
DividerItemDecoration(
binding.searchRecyclerView.context,
- DividerItemDecoration.VERTICAL
- )
+ DividerItemDecoration.VERTICAL,
+ ),
)
}
@@ -44,7 +44,7 @@ class SearchAccountsFragment : SearchFragment() {
this,
preferences.getBoolean(PrefKeys.ANIMATE_GIF_AVATARS, false),
preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
- preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true)
+ preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true),
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchHashtagsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchHashtagsFragment.kt
index 8c4f41fb0c..8117cebd99 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchHashtagsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchHashtagsFragment.kt
@@ -34,8 +34,8 @@ class SearchHashtagsFragment : SearchFragment() {
binding.searchRecyclerView.addItemDecoration(
DividerItemDecoration(
binding.searchRecyclerView.context,
- DividerItemDecoration.VERTICAL
- )
+ DividerItemDecoration.VERTICAL,
+ ),
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
index 0cbe300479..6567e5c154 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
@@ -90,7 +90,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
- openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler
+ openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
)
binding.searchRecyclerView.addItemDecoration(DividerItemDecoration(binding.searchRecyclerView.context, DividerItemDecoration.VERTICAL))
@@ -136,7 +136,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
val intent = ViewMediaActivity.newIntent(
context,
attachments,
- attachmentIndex
+ attachmentIndex,
)
if (view != null) {
val url = actionable.attachments[attachmentIndex].url
@@ -144,7 +144,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
val options = ActivityOptionsCompat.makeSceneTransitionAnimation(
requireActivity(),
view,
- url
+ url,
)
startActivity(intent, options.toBundle())
} else {
@@ -226,8 +226,8 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
replyingStatusAuthor = actionableStatus.account.localUsername,
replyingStatusContent = status.content.toString(),
language = actionableStatus.language,
- kind = ComposeActivity.ComposeKind.NEW
- )
+ kind = ComposeActivity.ComposeKind.NEW,
+ ),
)
bottomSheetActivity?.startActivityWithSlideInAnimation(intent)
}
@@ -284,7 +284,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
R.string.action_unmute_conversation
} else {
R.string.action_mute_conversation
- }
+ },
)
}
@@ -384,7 +384,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
private fun onMute(accountId: String, accountUsername: String) {
showMuteAccountDialog(
this.requireActivity(),
- accountUsername
+ accountUsername,
) { notifications, duration ->
viewModel.muteAccount(accountId, notifications, duration)
}
@@ -404,7 +404,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
override fun onAccountSelected(account: AccountEntity) {
bottomSheetActivity?.openAsAccount(statusUrl, account)
}
- }
+ },
)
}
@@ -431,7 +431,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
Toast.makeText(
context,
R.string.error_media_download_permission,
- Toast.LENGTH_SHORT
+ Toast.LENGTH_SHORT,
).show()
}
}
@@ -484,15 +484,15 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
sensitive = redraftStatus.sensitive,
poll = redraftStatus.poll?.toNewPoll(status.createdAt),
language = redraftStatus.language,
- kind = ComposeActivity.ComposeKind.NEW
- )
+ kind = ComposeActivity.ComposeKind.NEW,
+ ),
)
startActivity(intent)
},
{ error ->
Log.w("SearchStatusesFragment", "error deleting status", error)
Toast.makeText(context, R.string.error_generic, Toast.LENGTH_SHORT).show()
- }
+ },
)
}
}
@@ -515,7 +515,7 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
language = status.language,
statusId = source.id,
poll = status.poll?.toNewPoll(status.createdAt),
- kind = ComposeActivity.ComposeKind.EDIT_POSTED
+ kind = ComposeActivity.ComposeKind.EDIT_POSTED,
)
startActivity(ComposeActivity.startIntent(requireContext(), composeOptions))
},
@@ -523,9 +523,9 @@ class SearchStatusesFragment : SearchFragment(), StatusActionLis
Snackbar.make(
requireView(),
getString(R.string.error_status_source_load),
- Snackbar.LENGTH_SHORT
+ Snackbar.LENGTH_SHORT,
).show()
- }
+ },
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRepository.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRepository.kt
index 7ab7e43d22..a022125f64 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRepository.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRepository.kt
@@ -49,7 +49,7 @@ class CachedTimelineRepository @Inject constructor(
private val accountManager: AccountManager,
private val appDatabase: AppDatabase,
private val gson: Gson,
- @ApplicationScope private val externalScope: CoroutineScope
+ @ApplicationScope private val externalScope: CoroutineScope,
) {
private var factory: InvalidatingPagingSourceFactory? = null
@@ -60,7 +60,7 @@ class CachedTimelineRepository @Inject constructor(
fun getStatusStream(
kind: TimelineKind,
pageSize: Int = PAGE_SIZE,
- initialKey: String? = null
+ initialKey: String? = null,
): Flow> {
Log.d(TAG, "getStatusStream(): key: $initialKey")
@@ -90,9 +90,9 @@ class CachedTimelineRepository @Inject constructor(
accountManager,
factory!!,
appDatabase,
- gson
+ gson,
),
- pagingSourceFactory = factory!!
+ pagingSourceFactory = factory!!,
).flow
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/FiltersRepository.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/FiltersRepository.kt
index 03a2ab78f4..73e4bad241 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/FiltersRepository.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/FiltersRepository.kt
@@ -35,7 +35,7 @@ sealed class FilterKind {
/** Repository for filter information */
class FiltersRepository @Inject constructor(
- private val mastodonApi: MastodonApi
+ private val mastodonApi: MastodonApi,
) {
/**
* Get the current set of filters.
@@ -54,7 +54,7 @@ class FiltersRepository @Inject constructor(
} else {
throw throwable
}
- }
+ },
)
companion object {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRepository.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRepository.kt
index a82de5b3d9..1b47154e5d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRepository.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRepository.kt
@@ -70,7 +70,7 @@ import javax.inject.Inject
/** Timeline repository where the timeline information is backed by an in-memory cache. */
class NetworkTimelineRepository @Inject constructor(
private val mastodonApi: MastodonApi,
- private val accountManager: AccountManager
+ private val accountManager: AccountManager,
) {
private val pageCache = PageCache()
@@ -82,7 +82,7 @@ class NetworkTimelineRepository @Inject constructor(
viewModelScope: CoroutineScope,
kind: TimelineKind,
pageSize: Int = PAGE_SIZE,
- initialKey: String? = null
+ initialKey: String? = null,
): Flow> {
Log.d(TAG, "getStatusStream(): key: $initialKey")
@@ -98,9 +98,9 @@ class NetworkTimelineRepository @Inject constructor(
accountManager,
factory!!,
pageCache,
- kind
+ kind,
),
- pagingSourceFactory = factory!!
+ pagingSourceFactory = factory!!,
).flow
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt
index 00a2f54672..7a736cd3fe 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineFragment.kt
@@ -152,7 +152,7 @@ class TimelineFragment :
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
+ savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.fragment_timeline, container, false)
}
@@ -166,27 +166,29 @@ class TimelineFragment :
setupRecyclerView()
if (actionButtonPresent()) {
- binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
- override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
- val composeButton = (activity as ActionButtonActivity).actionButton
- if (composeButton != null) {
- if (!viewModel.uiState.value.showFabWhileScrolling) {
- if (dy > 0 && composeButton.isShown) {
- composeButton.hide() // hides the button if we're scrolling down
- } else if (dy < 0 && !composeButton.isShown) {
- composeButton.show() // shows it if we are scrolling up
+ binding.recyclerView.addOnScrollListener(
+ object : RecyclerView.OnScrollListener() {
+ override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
+ val composeButton = (activity as ActionButtonActivity).actionButton
+ if (composeButton != null) {
+ if (!viewModel.uiState.value.showFabWhileScrolling) {
+ if (dy > 0 && composeButton.isShown) {
+ composeButton.hide() // hides the button if we're scrolling down
+ } else if (dy < 0 && !composeButton.isShown) {
+ composeButton.show() // shows it if we are scrolling up
+ }
+ } else if (!composeButton.isShown) {
+ composeButton.show()
}
- } else if (!composeButton.isShown) {
- composeButton.show()
}
}
- }
- override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
- newState != SCROLL_STATE_IDLE && return
- saveVisibleId()
- }
- })
+ override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
+ newState != SCROLL_STATE_IDLE && return
+ saveVisibleId()
+ }
+ },
+ )
}
/**
@@ -225,13 +227,13 @@ class TimelineFragment :
val message = getString(
error.message,
error.throwable.localizedMessage
- ?: getString(R.string.ui_error_unknown)
+ ?: getString(R.string.ui_error_unknown),
)
snackbar = Snackbar.make(
// Without this the FAB will not move out of the way
(activity as ActionButtonActivity).actionButton ?: binding.root,
message,
- Snackbar.LENGTH_INDEFINITE
+ Snackbar.LENGTH_INDEFINITE,
).setTextMaxLines(5)
error.action?.let { action ->
snackbar!!.setAction(R.string.action_retry) {
@@ -278,7 +280,7 @@ class TimelineFragment :
statusViewData.status.copy(reblogged = it.action.state)
is StatusActionSuccess.VoteInPoll ->
statusViewData.status.copy(
- poll = it.action.poll.votedCopy(it.action.choices)
+ poll = it.action.poll.votedCopy(it.action.choices),
)
}
(indexedViewData.value as StatusViewData).status = status
@@ -293,7 +295,8 @@ class TimelineFragment :
when (it) {
is UiSuccess.Block,
is UiSuccess.Mute,
- is UiSuccess.MuteConversation ->
+ is UiSuccess.MuteConversation,
+ ->
adapter.refresh()
is UiSuccess.StatusSent -> handleStatusSentOrEdit(it.status)
@@ -316,7 +319,7 @@ class TimelineFragment :
adapter.notifyItemRangeChanged(
first,
count,
- null
+ null,
)
}
@@ -389,7 +392,7 @@ class TimelineFragment :
getView() ?: return@post
binding.recyclerView.smoothScrollBy(
0,
- Utils.dpToPx(requireContext(), -30)
+ Utils.dpToPx(requireContext(), -30),
)
}
peeked = true
@@ -428,7 +431,7 @@ class TimelineFragment :
PresentationState.ERROR -> {
val message =
(loadState.refresh as LoadState.Error).error.getErrorString(
- requireContext()
+ requireContext(),
)
// Show errors as a snackbar if there is existing content to show
@@ -439,7 +442,7 @@ class TimelineFragment :
(activity as ActionButtonActivity).actionButton
?: binding.root,
message,
- Snackbar.LENGTH_INDEFINITE
+ Snackbar.LENGTH_INDEFINITE,
)
.setTextMaxLines(5)
.setAction(R.string.action_retry) { adapter.retry() }
@@ -460,7 +463,7 @@ class TimelineFragment :
if (adapter.itemCount == 0) {
binding.statusView.setup(
R.drawable.elephant_friend_empty,
- R.string.message_empty
+ R.string.message_empty,
)
if (timelineKind == TimelineKind.Home) {
binding.statusView.showHelp(R.string.help_empty_home)
@@ -547,7 +550,7 @@ class TimelineFragment :
} else {
null
}
- }
+ },
)
binding.recyclerView.setHasFixedSize(true)
binding.recyclerView.layoutManager = layoutManager
@@ -559,7 +562,7 @@ class TimelineFragment :
binding.recyclerView.adapter = adapter.withLoadStateHeaderAndFooter(
header = TimelineLoadStateAdapter { adapter.retry() },
- footer = TimelineLoadStateAdapter { adapter.retry() }
+ footer = TimelineLoadStateAdapter { adapter.retry() },
)
}
@@ -595,7 +598,7 @@ class TimelineFragment :
Snackbar.make(
binding.root,
"null at adapter.peek($position)",
- Snackbar.LENGTH_INDEFINITE
+ Snackbar.LENGTH_INDEFINITE,
).show()
null
} ?: return
@@ -603,7 +606,7 @@ class TimelineFragment :
Snackbar.make(
binding.root,
"statusViewData had null poll",
- Snackbar.LENGTH_INDEFINITE
+ Snackbar.LENGTH_INDEFINITE,
).show()
null
} ?: return
@@ -657,7 +660,7 @@ class TimelineFragment :
super.viewMedia(
attachmentIndex,
AttachmentViewData.list(status.actionable),
- view
+ view,
)
}
@@ -703,7 +706,8 @@ class TimelineFragment :
is TimelineKind.Home,
is TimelineKind.PublicFederated,
- is TimelineKind.PublicLocal -> adapter.refresh()
+ is TimelineKind.PublicLocal,
+ -> adapter.refresh()
is TimelineKind.User -> if (status.account.id == (timelineKind as TimelineKind.User).id) {
adapter.refresh()
}
@@ -711,7 +715,8 @@ class TimelineFragment :
is TimelineKind.Favourites,
is TimelineKind.Tag,
is TimelineKind.TrendingStatuses,
- is TimelineKind.UserList -> return
+ is TimelineKind.UserList,
+ -> return
}
}
@@ -771,7 +776,7 @@ class TimelineFragment :
fun newInstance(
timelineKind: TimelineKind,
- enableSwipeToRefresh: Boolean = true
+ enableSwipeToRefresh: Boolean = true,
): TimelineFragment {
val fragment = TimelineFragment()
val arguments = Bundle(2)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateAdapter.kt
index 286f2cdce7..cf457e87cd 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateAdapter.kt
@@ -23,11 +23,11 @@ import androidx.paging.LoadStateAdapter
/** Show load state and retry options when loading timelines */
class TimelineLoadStateAdapter(
- private val retry: () -> Unit
+ private val retry: () -> Unit,
) : LoadStateAdapter() {
override fun onCreateViewHolder(
parent: ViewGroup,
- loadState: LoadState
+ loadState: LoadState,
): TimelineLoadStateViewHolder {
return TimelineLoadStateViewHolder.create(parent, retry)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateViewHolder.kt
index 60b82162b1..20fa025839 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineLoadStateViewHolder.kt
@@ -38,7 +38,7 @@ import java.net.SocketTimeoutException
*/
class TimelineLoadStateViewHolder(
private val binding: ItemLoadStateFooterViewBinding,
- retry: () -> Unit
+ retry: () -> Unit,
) : RecyclerView.ViewHolder(binding.root) {
init {
binding.retryButton.setOnClickListener { retry.invoke() }
@@ -65,7 +65,7 @@ class TimelineLoadStateViewHolder(
val binding = ItemLoadStateFooterViewBinding.inflate(
LayoutInflater.from(parent.context),
parent,
- false
+ false,
)
return TimelineLoadStateViewHolder(binding, retry)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelinePagingAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelinePagingAdapter.kt
index 60df0e8580..ff8d2a650a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelinePagingAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelinePagingAdapter.kt
@@ -30,7 +30,7 @@ import com.keylesspalace.tusky.viewdata.StatusViewData
class TimelinePagingAdapter(
private val statusListener: StatusActionListener,
- var statusDisplayOptions: StatusDisplayOptions
+ var statusDisplayOptions: StatusDisplayOptions,
) : PagingDataAdapter(TimelineDifferCallback) {
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val inflater = LayoutInflater.from(viewGroup.context)
@@ -52,7 +52,7 @@ class TimelinePagingAdapter(
override fun onBindViewHolder(
viewHolder: RecyclerView.ViewHolder,
position: Int,
- payloads: List<*>
+ payloads: List<*>,
) {
bindViewHolder(viewHolder, position, payloads)
}
@@ -60,14 +60,14 @@ class TimelinePagingAdapter(
private fun bindViewHolder(
viewHolder: RecyclerView.ViewHolder,
position: Int,
- payloads: List<*>?
+ payloads: List<*>?,
) {
getItem(position)?.let {
(viewHolder as StatusViewHolder).setupWithStatus(
it,
statusListener,
statusDisplayOptions,
- payloads?.getOrNull(0)
+ payloads?.getOrNull(0),
)
}
}
@@ -91,21 +91,21 @@ class TimelinePagingAdapter(
val TimelineDifferCallback = object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(
oldItem: StatusViewData,
- newItem: StatusViewData
+ newItem: StatusViewData,
): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(
oldItem: StatusViewData,
- newItem: StatusViewData
+ newItem: StatusViewData,
): Boolean {
return oldItem == newItem
}
override fun getChangePayload(
oldItem: StatusViewData,
- newItem: StatusViewData
+ newItem: StatusViewData,
): Any? {
return if (oldItem == newItem) {
// If items are equal - update timestamp only
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt
index e9f952c682..3fc14f78ff 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt
@@ -47,7 +47,7 @@ fun TimelineAccount.toEntity(accountId: Long, gson: Gson): TimelineAccountEntity
url = url,
avatar = avatar,
emojis = gson.toJson(emojis),
- bot = bot
+ bot = bot,
)
}
@@ -61,7 +61,7 @@ fun TimelineAccountEntity.toAccount(gson: Gson): TimelineAccount {
url = url,
avatar = avatar,
bot = bot,
- emojis = gson.fromJson(emojis, emojisListType)
+ emojis = gson.fromJson(emojis, emojisListType),
)
}
@@ -70,7 +70,7 @@ fun Status.toEntity(
gson: Gson,
expanded: Boolean,
contentShowing: Boolean,
- contentCollapsed: Boolean
+ contentCollapsed: Boolean,
): TimelineStatusEntity {
return TimelineStatusEntity(
serverId = this.id,
@@ -106,7 +106,7 @@ fun Status.toEntity(
card = actionableStatus.card?.let(gson::toJson),
repliesCount = actionableStatus.repliesCount,
language = actionableStatus.language,
- filtered = actionableStatus.filtered
+ filtered = actionableStatus.filtered,
)
}
@@ -149,7 +149,7 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson, isDetailed: Boolean = false
card = card,
repliesCount = status.repliesCount,
language = status.language,
- filtered = status.filtered
+ filtered = status.filtered,
)
}
val status = if (reblog != null) {
@@ -182,7 +182,7 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson, isDetailed: Boolean = false
card = null,
repliesCount = status.repliesCount,
language = status.language,
- filtered = status.filtered
+ filtered = status.filtered,
)
} else {
Status(
@@ -214,7 +214,7 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson, isDetailed: Boolean = false
card = card,
repliesCount = status.repliesCount,
language = status.language,
- filtered = status.filtered
+ filtered = status.filtered,
)
}
return StatusViewData(
@@ -222,6 +222,6 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson, isDetailed: Boolean = false
isExpanded = this.status.expanded,
isShowingContent = this.status.contentShowing,
isCollapsed = this.status.contentCollapsed,
- isDetailed = isDetailed
+ isDetailed = isDetailed,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/util/TimelineUtils.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/util/TimelineUtils.kt
index c8d95fd812..7a261c99c1 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/util/TimelineUtils.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/util/TimelineUtils.kt
@@ -7,7 +7,7 @@ fun Throwable.isExpected() = this is IOException || this is HttpException
inline fun ifExpected(
t: Throwable,
- cb: () -> T
+ cb: () -> T,
): T {
if (t.isExpected()) {
return cb()
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineRemoteMediator.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineRemoteMediator.kt
index 85d3b456b9..1bc1df958a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineRemoteMediator.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineRemoteMediator.kt
@@ -45,7 +45,7 @@ class CachedTimelineRemoteMediator(
accountManager: AccountManager,
private val factory: InvalidatingPagingSourceFactory,
private val db: AppDatabase,
- private val gson: Gson
+ private val gson: Gson,
) : RemoteMediator() {
private val timelineDao = db.timelineDao()
@@ -54,7 +54,7 @@ class CachedTimelineRemoteMediator(
override suspend fun load(
loadType: LoadType,
- state: PagingState
+ state: PagingState,
): MediatorResult {
if (!activeAccount.isLoggedIn()) {
return MediatorResult.Success(endOfPaginationReached = true)
@@ -74,7 +74,7 @@ class CachedTimelineRemoteMediator(
remoteKeyDao.remoteKeyForKind(
activeAccount.id,
TIMELINE_ID,
- RemoteKeyKind.NEXT
+ RemoteKeyKind.NEXT,
)
} ?: return MediatorResult.Success(endOfPaginationReached = true)
Log.d(TAG, "Loading from remoteKey: $rke")
@@ -85,7 +85,7 @@ class CachedTimelineRemoteMediator(
remoteKeyDao.remoteKeyForKind(
activeAccount.id,
TIMELINE_ID,
- RemoteKeyKind.PREV
+ RemoteKeyKind.PREV,
)
} ?: return MediatorResult.Success(endOfPaginationReached = true)
Log.d(TAG, "Loading from remoteKey: $rke")
@@ -118,16 +118,16 @@ class CachedTimelineRemoteMediator(
activeAccount.id,
TIMELINE_ID,
RemoteKeyKind.NEXT,
- links.next
- )
+ links.next,
+ ),
)
remoteKeyDao.upsert(
RemoteKeyEntity(
activeAccount.id,
TIMELINE_ID,
RemoteKeyKind.PREV,
- links.prev
- )
+ links.prev,
+ ),
)
}
// links.prev may be null if there are no statuses, only set if non-null,
@@ -138,8 +138,8 @@ class CachedTimelineRemoteMediator(
activeAccount.id,
TIMELINE_ID,
RemoteKeyKind.PREV,
- prev
- )
+ prev,
+ ),
)
}
// links.next may be null if there are no statuses, only set if non-null,
@@ -150,8 +150,8 @@ class CachedTimelineRemoteMediator(
activeAccount.id,
TIMELINE_ID,
RemoteKeyKind.NEXT,
- next
- )
+ next,
+ ),
)
}
}
@@ -206,8 +206,8 @@ class CachedTimelineRemoteMediator(
gson = gson,
expanded = expanded,
contentShowing = contentShowing,
- contentCollapsed = contentCollapsed
- )
+ contentCollapsed = contentCollapsed,
+ ),
)
}
return overlappedStatuses
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt
index f5f0d48837..2b8a40acd2 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt
@@ -61,7 +61,7 @@ class CachedTimelineViewModel @Inject constructor(
preferences: SharedPreferences,
accountPreferenceDataStore: AccountPreferenceDataStore,
filterModel: FilterModel,
- private val gson: Gson
+ private val gson: Gson,
) : TimelineViewModel(
timelineCases,
eventHub,
@@ -69,7 +69,7 @@ class CachedTimelineViewModel @Inject constructor(
accountManager,
preferences,
accountPreferenceDataStore,
- filterModel
+ filterModel,
) {
override lateinit var statuses: Flow>
@@ -90,7 +90,7 @@ class CachedTimelineViewModel @Inject constructor(
/** @return Flow of statuses that make up the timeline of [kind] */
private fun getStatuses(
kind: TimelineKind,
- initialKey: String? = null
+ initialKey: String? = null,
): Flow> {
Log.d(TAG, "getStatuses: kind: $kind, initialKey: $initialKey")
return repository.getStatusStream(kind = kind, initialKey = initialKey)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelinePagingSource.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelinePagingSource.kt
index 5d3b27ee13..0336fc9deb 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelinePagingSource.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelinePagingSource.kt
@@ -28,7 +28,7 @@ private val INVALID = LoadResult.Invalid()
/** [PagingSource] for Mastodon Status, identified by the Status ID */
class NetworkTimelinePagingSource @Inject constructor(
- private val pageCache: PageCache
+ private val pageCache: PageCache,
) : PagingSource() {
override suspend fun load(params: LoadParams): LoadResult {
@@ -139,7 +139,7 @@ class NetworkTimelinePagingSource @Inject constructor(
nextKey = page?.nextKey,
prevKey = page?.prevKey,
itemsAfter = itemsAfter,
- itemsBefore = itemsBefore
+ itemsBefore = itemsBefore,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineRemoteMediator.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineRemoteMediator.kt
index 10f11746c2..571f7bb1dd 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineRemoteMediator.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineRemoteMediator.kt
@@ -41,7 +41,7 @@ class NetworkTimelineRemoteMediator(
accountManager: AccountManager,
private val factory: InvalidatingPagingSourceFactory,
private val pageCache: PageCache,
- private val timelineKind: TimelineKind
+ private val timelineKind: TimelineKind,
) : RemoteMediator() {
private val activeAccount = accountManager.activeAccount!!
@@ -115,7 +115,7 @@ class NetworkTimelineRemoteMediator(
pageCache.upsert(page)
Log.d(
TAG,
- " Page $loadType complete for $timelineKind, now got ${pageCache.size} pages"
+ " Page $loadType complete for $timelineKind, now got ${pageCache.size} pages",
)
pageCache.debug()
}
@@ -162,7 +162,7 @@ class NetworkTimelineRemoteMediator(
limit = loadSize,
excludeReplies = null,
onlyMedia = null,
- pinned = true
+ pinned = true,
)
is TimelineKind.User.Posts -> api.accountStatuses(
timelineKind.id,
@@ -171,7 +171,7 @@ class NetworkTimelineRemoteMediator(
limit = loadSize,
excludeReplies = true,
onlyMedia = null,
- pinned = null
+ pinned = null,
)
is TimelineKind.User.Replies -> api.accountStatuses(
timelineKind.id,
@@ -180,13 +180,13 @@ class NetworkTimelineRemoteMediator(
limit = loadSize,
excludeReplies = null,
onlyMedia = null,
- pinned = null
+ pinned = null,
)
is TimelineKind.UserList -> api.listTimeline(
timelineKind.id,
maxId = maxId,
minId = minId,
- limit = loadSize
+ limit = loadSize,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt
index c61ec58e79..613af2150e 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt
@@ -58,7 +58,7 @@ class NetworkTimelineViewModel @Inject constructor(
accountManager: AccountManager,
sharedPreferences: SharedPreferences,
accountPreferenceDataStore: AccountPreferenceDataStore,
- filterModel: FilterModel
+ filterModel: FilterModel,
) : TimelineViewModel(
timelineCases,
eventHub,
@@ -66,7 +66,7 @@ class NetworkTimelineViewModel @Inject constructor(
accountManager,
sharedPreferences,
accountPreferenceDataStore,
- filterModel
+ filterModel,
) {
private val modifiedViewData = mutableMapOf()
@@ -84,7 +84,7 @@ class NetworkTimelineViewModel @Inject constructor(
/** @return Flow of statuses that make up the timeline of [kind] */
private fun getStatuses(
kind: TimelineKind,
- initialKey: String? = null
+ initialKey: String? = null,
): Flow> {
Log.d(TAG, "getStatuses: kind: $kind, initialKey: $initialKey")
return repository.getStatusStream(viewModelScope, kind = kind, initialKey = initialKey)
@@ -93,7 +93,7 @@ class NetworkTimelineViewModel @Inject constructor(
modifiedViewData[it.id] ?: it.toViewData(
isShowingContent = statusDisplayOptions.value.showSensitiveMedia || !it.actionableStatus.sensitive,
isExpanded = statusDisplayOptions.value.openSpoiler,
- isCollapsed = true
+ isCollapsed = true,
)
}.filter {
shouldFilterStatus(it) != Filter.Action.HIDE
@@ -103,21 +103,21 @@ class NetworkTimelineViewModel @Inject constructor(
override fun updatePoll(newPoll: Poll, status: StatusViewData) {
modifiedViewData[status.id] = status.copy(
- status = status.status.copy(poll = newPoll)
+ status = status.status.copy(poll = newPoll),
)
repository.invalidate()
}
override fun changeExpanded(expanded: Boolean, status: StatusViewData) {
modifiedViewData[status.id] = status.copy(
- isExpanded = expanded
+ isExpanded = expanded,
)
repository.invalidate()
}
override fun changeContentShowing(isShowing: Boolean, status: StatusViewData) {
modifiedViewData[status.id] = status.copy(
- isShowingContent = isShowing
+ isShowingContent = isShowing,
)
repository.invalidate()
}
@@ -126,7 +126,7 @@ class NetworkTimelineViewModel @Inject constructor(
Log.d(TAG, "changeContentCollapsed: $isCollapsed")
Log.d(TAG, " " + status.content)
modifiedViewData[status.id] = status.copy(
- isCollapsed = isCollapsed
+ isCollapsed = isCollapsed,
)
repository.invalidate()
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/PageCache.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/PageCache.kt
index a34ad5a6b9..7ef7d2146d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/PageCache.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/PageCache.kt
@@ -41,7 +41,7 @@ data class Page(
* Key for next page (older results, APPEND operation) if more data can be loaded in that
* direction, `null` otherwise.
*/
- val nextKey: String? = null
+ val nextKey: String? = null,
) {
override fun toString() = "k: ${data.lastOrNull()?.id}, prev: $prevKey, next: $nextKey, size: ${"%2d".format(data.size)}, range: ${data.firstOrNull()?.id}..${data.lastOrNull()?.id}"
@@ -87,7 +87,7 @@ data class Page(
return Page(
data = d,
nextKey = next,
- prevKey = prev
+ prevKey = prev,
)
}
@@ -108,8 +108,8 @@ data class Page(
Page(
data = statuses.toMutableList(),
nextKey = links.next,
- prevKey = links.prev
- )
+ prevKey = links.prev,
+ ),
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt
index e2767203fa..a328455458 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt
@@ -83,19 +83,19 @@ data class UiState(
val showFabWhileScrolling: Boolean = true,
/** True if media previews should be shown */
- val showMediaPreview: Boolean = true
+ val showMediaPreview: Boolean = true,
)
/** Preferences the UI reacts to */
data class UiPrefs(
val showFabWhileScrolling: Boolean,
- val showMediaPreview: Boolean
+ val showMediaPreview: Boolean,
) {
companion object {
/** Relevant preference keys. Changes to any of these trigger a display update */
val prefKeys = setOf(
PrefKeys.FAB_HIDE,
- PrefKeys.MEDIA_PREVIEW_ENABLED
+ PrefKeys.MEDIA_PREVIEW_ENABLED,
)
}
}
@@ -173,7 +173,7 @@ sealed class StatusAction(open val statusViewData: StatusViewData) : FallibleUiA
data class VoteInPoll(
val poll: Poll,
val choices: List,
- override val statusViewData: StatusViewData
+ override val statusViewData: StatusViewData,
) : StatusAction(statusViewData)
}
@@ -218,30 +218,30 @@ sealed class UiError(
@StringRes val message: Int,
/** The action that failed. Can be resent to retry the action */
- open val action: UiAction? = null
+ open val action: UiAction? = null,
) {
data class Bookmark(
override val throwable: Throwable,
- override val action: StatusAction.Bookmark
+ override val action: StatusAction.Bookmark,
) : UiError(throwable, R.string.ui_error_bookmark, action)
data class Favourite(
override val throwable: Throwable,
- override val action: StatusAction.Favourite
+ override val action: StatusAction.Favourite,
) : UiError(throwable, R.string.ui_error_favourite, action)
data class Reblog(
override val throwable: Throwable,
- override val action: StatusAction.Reblog
+ override val action: StatusAction.Reblog,
) : UiError(throwable, R.string.ui_error_reblog, action)
data class VoteInPoll(
override val throwable: Throwable,
- override val action: StatusAction.VoteInPoll
+ override val action: StatusAction.VoteInPoll,
) : UiError(throwable, R.string.ui_error_vote, action)
data class GetFilters(
- override val throwable: Throwable
+ override val throwable: Throwable,
) : UiError(throwable, R.string.ui_error_filter_v1_load, null)
companion object {
@@ -262,7 +262,7 @@ abstract class TimelineViewModel(
protected val accountManager: AccountManager,
private val sharedPreferences: SharedPreferences,
private val accountPreferenceDataStore: AccountPreferenceDataStore,
- private val filterModel: FilterModel
+ private val filterModel: FilterModel,
) : ViewModel() {
val uiState: StateFlow
@@ -327,8 +327,8 @@ abstract class TimelineViewModel(
statusDisplayOptions = MutableStateFlow(
StatusDisplayOptions.from(
sharedPreferences,
- activeAccount
- )
+ activeAccount,
+ ),
)
viewModelScope.launch {
@@ -339,7 +339,7 @@ abstract class TimelineViewModel(
statusDisplayOptions.value.make(
sharedPreferences,
it.preferenceKey,
- activeAccount
+ activeAccount,
)
}
.collect {
@@ -357,23 +357,23 @@ abstract class TimelineViewModel(
is StatusAction.Bookmark ->
timelineCases.bookmark(
action.statusViewData.actionableId,
- action.state
+ action.state,
)
is StatusAction.Favourite ->
timelineCases.favourite(
action.statusViewData.actionableId,
- action.state
+ action.state,
)
is StatusAction.Reblog ->
timelineCases.reblog(
action.statusViewData.actionableId,
- action.state
+ action.state,
)
is StatusAction.VoteInPoll ->
timelineCases.voteInPoll(
action.statusViewData.actionableId,
action.poll.id,
- action.choices
+ action.choices,
)
}.getOrThrow()
uiSuccess.emit(StatusActionSuccess.from(action))
@@ -399,12 +399,12 @@ abstract class TimelineViewModel(
uiState = getUiPrefs().map { prefs ->
UiState(
showFabWhileScrolling = prefs.showFabWhileScrolling,
- showMediaPreview = prefs.showMediaPreview
+ showMediaPreview = prefs.showMediaPreview,
)
}.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(stopTimeoutMillis = 5000),
- initialValue = UiState()
+ initialValue = UiState(),
)
}
@@ -421,7 +421,7 @@ abstract class TimelineViewModel(
private fun toPrefs() = UiPrefs(
showFabWhileScrolling = !sharedPreferences.getBoolean(PrefKeys.FAB_HIDE, false),
- showMediaPreview = accountPreferenceDataStore.getBoolean(PrefKeys.MEDIA_PREVIEW_ENABLED, true)
+ showMediaPreview = accountPreferenceDataStore.getBoolean(PrefKeys.MEDIA_PREVIEW_ENABLED, true),
)
@CallSuper
@@ -566,7 +566,7 @@ abstract class TimelineViewModel(
filterModel.initWithFilters(
filters.filters.filter {
filterContextMatchesKind(timelineKind, it.context)
- }
+ },
)
invalidate()
}
@@ -650,7 +650,7 @@ abstract class TimelineViewModel(
fun filterContextMatchesKind(
timelineKind: TimelineKind,
- filterContext: List
+ filterContext: List,
): Boolean {
return filterContext.contains(Filter.Kind.from(timelineKind).kind)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingActivity.kt
index 5819984f1a..a07ab64df0 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingActivity.kt
@@ -75,7 +75,7 @@ class TrendingActivity : BottomSheetActivity(), HasAndroidInjector, MenuProvider
override fun handleOnBackPressed() {
if (binding.pager.currentItem != 0) binding.pager.currentItem = 0 else finish()
}
- }
+ },
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingDateViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingDateViewHolder.kt
index 5d9e3c3af6..6228a6fe68 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingDateViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingDateViewHolder.kt
@@ -24,7 +24,7 @@ import java.util.Locale
import java.util.TimeZone
class TrendingDateViewHolder(
- private val binding: ItemTrendingDateBinding
+ private val binding: ItemTrendingDateBinding,
) : RecyclerView.ViewHolder(binding.root) {
private val dateFormat = SimpleDateFormat("EEE dd MMM yyyy", Locale.getDefault()).apply {
@@ -35,7 +35,7 @@ class TrendingDateViewHolder(
binding.dates.text = itemView.context.getString(
R.string.date_range,
dateFormat.format(start),
- dateFormat.format(end)
+ dateFormat.format(end),
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinkViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinkViewHolder.kt
index dbe5bb244f..0da111b524 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinkViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinkViewHolder.kt
@@ -34,7 +34,7 @@ import com.keylesspalace.tusky.util.hide
class TrendingLinkViewHolder(
private val binding: ItemTrendingLinkBinding,
- private val onClick: (String) -> Unit
+ private val onClick: (String) -> Unit,
) : RecyclerView.ViewHolder(binding.root) {
private var link: TrendsLink? = null
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksAdapter.kt
index 608bd1da2f..1a7c934d1d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksAdapter.kt
@@ -28,7 +28,7 @@ import com.keylesspalace.tusky.util.StatusDisplayOptions
class TrendingLinksAdapter(
statusDisplayOptions: StatusDisplayOptions,
- private val onViewLink: (String) -> Unit
+ private val onViewLink: (String) -> Unit,
) : ListAdapter(diffCallback) {
var statusDisplayOptions = statusDisplayOptions
set(value) {
@@ -43,7 +43,7 @@ class TrendingLinksAdapter(
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TrendingLinkViewHolder {
return TrendingLinkViewHolder(
ItemTrendingLinkBinding.inflate(LayoutInflater.from(parent.context)),
- onViewLink
+ onViewLink,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksFragment.kt
index fc87714e4d..8c4fc6e75c 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksFragment.kt
@@ -81,7 +81,7 @@ class TrendingLinksFragment :
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
binding.recyclerView.layoutManager = getLayoutManager(
- requireContext().resources.getInteger(R.integer.trending_column_count)
+ requireContext().resources.getInteger(R.integer.trending_column_count),
)
}
@@ -116,7 +116,7 @@ class TrendingLinksFragment :
binding.messageView.setup(
R.drawable.elephant_friend_empty,
R.string.message_empty,
- null
+ null,
)
binding.messageView.show()
} else {
@@ -133,7 +133,7 @@ class TrendingLinksFragment :
val snackbar = Snackbar.make(
binding.root,
it.throwable.message ?: "Error",
- Snackbar.LENGTH_INDEFINITE
+ Snackbar.LENGTH_INDEFINITE,
)
if (it.throwable !is HttpException || it.throwable.code() != 404) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksRepository.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksRepository.kt
index 522e104383..e1153cb1a5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksRepository.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingLinksRepository.kt
@@ -21,7 +21,7 @@ import com.keylesspalace.tusky.network.MastodonApi
import javax.inject.Inject
class TrendingLinksRepository @Inject constructor(
- private val api: MastodonApi
+ private val api: MastodonApi,
) {
suspend fun getTrendingLinks() = api.trendingLinks()
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagViewHolder.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagViewHolder.kt
index 58aad9e842..22fe69f507 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagViewHolder.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagViewHolder.kt
@@ -22,12 +22,12 @@ import com.keylesspalace.tusky.util.formatNumber
import com.keylesspalace.tusky.viewdata.TrendingViewData
class TrendingTagViewHolder(
- private val binding: ItemTrendingCellBinding
+ private val binding: ItemTrendingCellBinding,
) : RecyclerView.ViewHolder(binding.root) {
fun setup(
tagViewData: TrendingViewData.Tag,
- onViewTag: (String) -> Unit
+ onViewTag: (String) -> Unit,
) {
binding.tag.text = binding.root.context.getString(R.string.title_tag, tagViewData.name)
@@ -51,7 +51,7 @@ class TrendingTagViewHolder(
itemView.context.getString(
R.string.accessibility_talking_about_tag,
totalAccounts,
- tagViewData.name
+ tagViewData.name,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsAdapter.kt
index 4137d200e5..6cac913b3a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsAdapter.kt
@@ -25,7 +25,7 @@ import com.keylesspalace.tusky.databinding.ItemTrendingDateBinding
import com.keylesspalace.tusky.viewdata.TrendingViewData
class TrendingTagsAdapter(
- private val onViewTag: (String) -> Unit
+ private val onViewTag: (String) -> Unit,
) : ListAdapter(TrendingDifferCallback) {
init {
@@ -76,14 +76,14 @@ class TrendingTagsAdapter(
val TrendingDifferCallback = object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(
oldItem: TrendingViewData,
- newItem: TrendingViewData
+ newItem: TrendingViewData,
): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(
oldItem: TrendingViewData,
- newItem: TrendingViewData
+ newItem: TrendingViewData,
): Boolean {
return oldItem == newItem
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsFragment.kt
index bfa5b99e1c..5c0f7ee090 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/TrendingTagsFragment.kt
@@ -91,21 +91,23 @@ class TrendingTagsFragment :
setupSwipeRefreshLayout()
setupRecyclerView()
- adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
- @SuppressLint("SyntheticAccessor")
- override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
- if (positionStart == 0 && adapter.itemCount != itemCount) {
- binding.recyclerView.post {
- if (getView() != null) {
- binding.recyclerView.scrollBy(
- 0,
- Utils.dpToPx(requireContext(), -30)
- )
+ adapter.registerAdapterDataObserver(
+ object : RecyclerView.AdapterDataObserver() {
+ @SuppressLint("SyntheticAccessor")
+ override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
+ if (positionStart == 0 && adapter.itemCount != itemCount) {
+ binding.recyclerView.post {
+ if (getView() != null) {
+ binding.recyclerView.scrollBy(
+ 0,
+ Utils.dpToPx(requireContext(), -30),
+ )
+ }
}
}
}
- }
- })
+ },
+ )
viewLifecycleOwner.lifecycleScope.launch {
viewModel.uiState.collectLatest { trendingState ->
@@ -177,8 +179,8 @@ class TrendingTagsFragment :
(requireActivity() as BaseActivity).startActivityWithSlideInAnimation(
StatusListActivity.newHashtagIntent(
requireContext(),
- tag
- )
+ tag,
+ ),
)
}
@@ -205,7 +207,7 @@ class TrendingTagsFragment :
binding.messageView.setup(
R.drawable.elephant_friend_empty,
R.string.message_empty,
- null
+ null,
)
} else {
binding.recyclerView.show()
@@ -238,7 +240,7 @@ class TrendingTagsFragment :
binding.swipeRefreshLayout.isRefreshing = false
binding.messageView.setup(
R.drawable.errorphant_offline,
- R.string.error_network
+ R.string.error_network,
) { refreshContent() }
}
@@ -250,7 +252,7 @@ class TrendingTagsFragment :
binding.swipeRefreshLayout.isRefreshing = false
binding.messageView.setup(
R.drawable.errorphant_error,
- R.string.error_generic
+ R.string.error_generic,
) { refreshContent() }
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingLinksViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingLinksViewModel.kt
index e0a6a5d71b..def4f949f4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingLinksViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingLinksViewModel.kt
@@ -61,7 +61,7 @@ class TrendingLinksViewModel @Inject constructor(
private val repository: TrendingLinksRepository,
preferences: SharedPreferences,
accountManager: AccountManager,
- private val eventHub: EventHub
+ private val eventHub: EventHub,
) : ViewModel() {
val account = accountManager.activeAccount!!
@@ -69,7 +69,7 @@ class TrendingLinksViewModel @Inject constructor(
val loadState = _loadState.asStateFlow()
private val _statusDisplayOptions = MutableStateFlow(
- StatusDisplayOptions.from(preferences, account)
+ StatusDisplayOptions.from(preferences, account),
)
val statusDisplayOptions = _statusDisplayOptions.asStateFlow()
@@ -100,7 +100,7 @@ class TrendingLinksViewModel @Inject constructor(
val response = repository.getTrendingLinks()
response.fold(
{ list -> _loadState.update { LoadState.Success(list) } },
- { throwable -> _loadState.update { LoadState.Error(throwable) } }
+ { throwable -> _loadState.update { LoadState.Error(throwable) } },
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingTagsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingTagsViewModel.kt
index 92f0a8c466..2449ebe201 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingTagsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/trending/viewmodel/TrendingTagsViewModel.kt
@@ -37,7 +37,7 @@ import javax.inject.Inject
class TrendingTagsViewModel @Inject constructor(
private val mastodonApi: MastodonApi,
- private val eventHub: EventHub
+ private val eventHub: EventHub,
) : ViewModel() {
enum class LoadingState {
INITIAL, LOADING, REFRESHING, LOADED, ERROR_NETWORK, ERROR_OTHER
@@ -45,7 +45,7 @@ class TrendingTagsViewModel @Inject constructor(
data class TrendingTagsUiState(
val trendingViewData: List,
- val loadingState: LoadingState
+ val loadingState: LoadingState,
)
val uiState: Flow get() = _uiState
@@ -110,7 +110,7 @@ class TrendingTagsViewModel @Inject constructor(
} else {
_uiState.value = TrendingTagsUiState(emptyList(), LoadingState.ERROR_OTHER)
}
- }
+ },
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ThreadAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ThreadAdapter.kt
index 7a13d47a3e..5718e5939d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ThreadAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ThreadAdapter.kt
@@ -30,7 +30,7 @@ import com.keylesspalace.tusky.viewdata.StatusViewData
class ThreadAdapter(
private val statusDisplayOptions: StatusDisplayOptions,
- private val statusActionListener: StatusActionListener
+ private val statusActionListener: StatusActionListener,
) : ListAdapter(ThreadDifferCallback) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StatusBaseViewHolder {
@@ -74,21 +74,21 @@ class ThreadAdapter(
val ThreadDifferCallback = object : DiffUtil.ItemCallback() {
override fun areItemsTheSame(
oldItem: StatusViewData,
- newItem: StatusViewData
+ newItem: StatusViewData,
): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(
oldItem: StatusViewData,
- newItem: StatusViewData
+ newItem: StatusViewData,
): Boolean {
return false // Items are different always. It allows to refresh timestamp on every view holder update
}
override fun getChangePayload(
oldItem: StatusViewData,
- newItem: StatusViewData
+ newItem: StatusViewData,
): Any? {
return if (oldItem == newItem) {
// If items are equal - update timestamp only
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadFragment.kt
index e83e72ebb0..a2fefc4c65 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadFragment.kt
@@ -114,7 +114,7 @@ class ViewThreadFragment :
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
- openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler
+ openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
)
adapter = ThreadAdapter(statusDisplayOptions, this)
}
@@ -122,7 +122,7 @@ class ViewThreadFragment :
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
- savedInstanceState: Bundle?
+ savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.fragment_view_thread, container, false)
}
@@ -138,8 +138,8 @@ class ViewThreadFragment :
binding.recyclerView.setAccessibilityDelegateCompat(
ListStatusAccessibilityDelegate(
binding.recyclerView,
- this
- ) { index -> adapter.currentList.getOrNull(index) }
+ this,
+ ) { index -> adapter.currentList.getOrNull(index) },
)
val divider = DividerItemDecoration(context, LinearLayout.VERTICAL)
binding.recyclerView.addItemDecoration(divider)
@@ -218,7 +218,7 @@ class ViewThreadFragment :
// Ensure the top of the status is visible
(binding.recyclerView.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(
uiState.detailedStatusPosition,
- 0
+ 0,
)
}
}
@@ -258,7 +258,7 @@ class ViewThreadFragment :
when (revealButtonState) {
RevealButtonState.REVEAL -> R.drawable.ic_eye_24dp
else -> R.drawable.ic_hide_media_24dp
- }
+ },
)
}
@@ -296,7 +296,7 @@ class ViewThreadFragment :
*/
@CheckResult
private fun getProgressBarJob(view: View, delayMs: Long) = viewLifecycleOwner.lifecycleScope.launch(
- start = CoroutineStart.LAZY
+ start = CoroutineStart.LAZY,
) {
try {
delay(delayMs)
@@ -339,7 +339,7 @@ class ViewThreadFragment :
super.viewMedia(
attachmentIndex,
list(status, alwaysShowSensitiveMedia),
- view
+ view,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt
index f66d3b0380..dec5a5c2f2 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/ViewThreadViewModel.kt
@@ -61,7 +61,7 @@ class ViewThreadViewModel @Inject constructor(
eventHub: EventHub,
accountManager: AccountManager,
private val db: AppDatabase,
- private val gson: Gson
+ private val gson: Gson,
) : ViewModel() {
private val _uiState: MutableStateFlow = MutableStateFlow(ThreadUiState.Loading)
@@ -113,7 +113,7 @@ class ViewThreadViewModel @Inject constructor(
Log.d(TAG, "Loaded status from local timeline")
val viewData = timelineStatus.toViewData(
gson,
- isDetailed = true
+ isDetailed = true,
)
// Return the correct status, depending on which one matched. If you do not do
@@ -136,7 +136,7 @@ class ViewThreadViewModel @Inject constructor(
_uiState.value = ThreadUiState.LoadingThread(
statusViewDatum = detailedStatus,
- revealButton = detailedStatus.getRevealButtonState()
+ revealButton = detailedStatus.getRevealButtonState(),
)
// If the detailedStatus was loaded from the database it might be out-of-date
@@ -158,16 +158,16 @@ class ViewThreadViewModel @Inject constructor(
_uiState.value = ThreadUiState.Success(
statusViewData = statuses,
detailedStatusPosition = ancestors.size,
- revealButton = statuses.getRevealButtonState()
+ revealButton = statuses.getRevealButtonState(),
)
}, { throwable ->
_errors.emit(throwable)
_uiState.value = ThreadUiState.Success(
statusViewData = listOf(detailedStatus),
detailedStatusPosition = 0,
- revealButton = RevealButtonState.NO_BUTTON
+ revealButton = RevealButtonState.NO_BUTTON,
)
- })
+ },)
}
}
@@ -244,7 +244,7 @@ class ViewThreadViewModel @Inject constructor(
fun removeStatus(statusToRemove: StatusViewData) {
updateSuccess { uiState ->
uiState.copy(
- statusViewData = uiState.statusViewData.filterNot { status -> status == statusToRemove }
+ statusViewData = uiState.statusViewData.filterNot { status -> status == statusToRemove },
)
}
}
@@ -260,7 +260,7 @@ class ViewThreadViewModel @Inject constructor(
}
uiState.copy(
statusViewData = statuses,
- revealButton = statuses.getRevealButtonState()
+ revealButton = statuses.getRevealButtonState(),
)
}
}
@@ -306,7 +306,7 @@ class ViewThreadViewModel @Inject constructor(
uiState.copy(
statusViewData = uiState.statusViewData.filter { viewData ->
viewData.status.account.id != accountId
- }
+ },
)
}
}
@@ -338,7 +338,7 @@ class ViewThreadViewModel @Inject constructor(
} else {
status
}
- }
+ },
)
}
}
@@ -348,7 +348,7 @@ class ViewThreadViewModel @Inject constructor(
uiState.copy(
statusViewData = uiState.statusViewData.filter { status ->
status.id != event.statusId
- }
+ },
)
}
}
@@ -360,13 +360,13 @@ class ViewThreadViewModel @Inject constructor(
statusViewData = uiState.statusViewData.map { viewData ->
viewData.copy(isExpanded = false)
},
- revealButton = RevealButtonState.REVEAL
+ revealButton = RevealButtonState.REVEAL,
)
RevealButtonState.REVEAL -> uiState.copy(
statusViewData = uiState.statusViewData.map { viewData ->
viewData.copy(isExpanded = true)
},
- revealButton = RevealButtonState.HIDE
+ revealButton = RevealButtonState.HIDE,
)
else -> uiState
}
@@ -427,13 +427,13 @@ class ViewThreadViewModel @Inject constructor(
}
filterModel.initWithFilters(
- filters.filter { filter -> filter.context.contains(FilterV1.THREAD) }
+ filters.filter { filter -> filter.context.contains(FilterV1.THREAD) },
)
updateStatuses()
} else {
Log.e(TAG, "Error getting filters", throwable)
}
- }
+ },
)
}
}
@@ -443,7 +443,7 @@ class ViewThreadViewModel @Inject constructor(
val statuses = uiState.statusViewData.filter()
uiState.copy(
statusViewData = statuses,
- revealButton = statuses.getRevealButtonState()
+ revealButton = statuses.getRevealButtonState(),
)
}
}
@@ -460,14 +460,14 @@ class ViewThreadViewModel @Inject constructor(
}
private fun Status.toViewData(
- isDetailed: Boolean = false
+ isDetailed: Boolean = false,
): StatusViewData {
val oldStatus = (_uiState.value as? ThreadUiState.Success)?.statusViewData?.find { it.id == this.id }
return toViewData(
isShowingContent = oldStatus?.isShowingContent ?: (alwaysShowSensitiveMedia || !actionableStatus.sensitive),
isExpanded = oldStatus?.isExpanded ?: alwaysOpenSpoiler,
isCollapsed = oldStatus?.isCollapsed ?: !isDetailed,
- isDetailed = oldStatus?.isDetailed ?: isDetailed
+ isDetailed = oldStatus?.isDetailed ?: isDetailed,
)
}
@@ -490,7 +490,7 @@ class ViewThreadViewModel @Inject constructor(
} else {
viewData
}
- }
+ },
)
}
}
@@ -498,7 +498,7 @@ class ViewThreadViewModel @Inject constructor(
private fun updateStatus(statusId: String, updater: (Status) -> Status) {
updateStatusViewData(statusId) { viewData ->
viewData.copy(
- status = updater(viewData.status)
+ status = updater(viewData.status),
)
}
}
@@ -521,7 +521,7 @@ sealed interface ThreadUiState {
/** Loading the detailed status has completed, now loading ancestors/descendants */
data class LoadingThread(
val statusViewDatum: StatusViewData?,
- val revealButton: RevealButtonState
+ val revealButton: RevealButtonState,
) : ThreadUiState
/** An error occurred at any point */
@@ -531,7 +531,7 @@ sealed interface ThreadUiState {
data class Success(
val statusViewData: List,
val revealButton: RevealButtonState,
- val detailedStatusPosition: Int
+ val detailedStatusPosition: Int,
) : ThreadUiState
/** Refreshing the thread with a swipe */
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt
index 56bf1ffc4a..d39110e584 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsAdapter.kt
@@ -45,7 +45,7 @@ class ViewEditsAdapter(
private val animateAvatars: Boolean,
private val animateEmojis: Boolean,
private val useBlurhash: Boolean,
- private val listener: LinkListener
+ private val listener: LinkListener,
) : RecyclerView.Adapter>() {
private val absoluteTimeFormatter = AbsoluteTimeFormatter()
@@ -58,7 +58,7 @@ class ViewEditsAdapter(
override fun onCreateViewHolder(
parent: ViewGroup,
- viewType: Int
+ viewType: Int,
): BindingHolder {
val binding = ItemStatusEditBinding.inflate(LayoutInflater.from(parent.context), parent, false)
@@ -112,7 +112,7 @@ class ViewEditsAdapter(
binding.statusEditContentWarningDescription.text = edit.spoilerText.emojify(
edit.emojis,
binding.statusEditContentWarningDescription,
- animateEmojis
+ animateEmojis,
)
}
@@ -149,7 +149,7 @@ class ViewEditsAdapter(
},
resultClickListener = null,
animateEmojis = animateEmojis,
- enabled = false
+ enabled = false,
)
}
@@ -240,7 +240,7 @@ class TuskyTagHandler(val context: Context) : Html.TagHandler {
end(
output as SpannableStringBuilder,
Del::class.java,
- DeletedTextSpan(context)
+ DeletedTextSpan(context),
)
}
}
@@ -251,7 +251,7 @@ class TuskyTagHandler(val context: Context) : Html.TagHandler {
end(
output as SpannableStringBuilder,
Ins::class.java,
- InsertedTextSpan(context)
+ InsertedTextSpan(context),
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsFragment.kt
index 95a0b96d13..8ff6019b72 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsFragment.kt
@@ -114,7 +114,7 @@ class ViewEditsFragment :
is ViewEditsViewModel.MissingEditsException -> {
binding.statusView.setup(
R.drawable.elephant_friend_empty,
- R.string.error_missing_edits
+ R.string.error_missing_edits,
)
}
else -> {
@@ -135,7 +135,7 @@ class ViewEditsFragment :
animateAvatars = animateAvatars,
animateEmojis = animateEmojis,
useBlurhash = useBlurhash,
- listener = this@ViewEditsFragment
+ listener = this@ViewEditsFragment,
)
// Focus on the most recent version
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt
index 059312b496..fee6e568f9 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt
@@ -91,7 +91,7 @@ class ViewEditsViewModel @Inject constructor(private val api: MastodonApi) : Vie
loader.config = DiffConfig(
false,
WhiteSpaceProcessing.PRESERVE,
- TextGranularity.SPACE_WORD
+ TextGranularity.SPACE_WORD,
)
val processor = OptimisticXMLProcessor()
processor.setCoalesce(true)
@@ -107,13 +107,13 @@ class ViewEditsViewModel @Inject constructor(private val api: MastodonApi) : Vie
for (i in 1 until sortedEdits.size) {
processor.diff(previousContent, currentContent, output)
sortedEdits[i - 1] = sortedEdits[i - 1].copy(
- content = output.xml.toString()
+ content = output.xml.toString(),
)
if (i < sortedEdits.size - 1) {
currentContent = previousContent
previousContent = loader.load(
- sortedEdits[i + 1].content.replace("
", "
")
+ sortedEdits[i + 1].content.replace("
", "
"),
)
}
}
@@ -142,7 +142,7 @@ sealed interface EditsUiState {
data object Refreshing : EditsUiState
class Error(val throwable: Throwable) : EditsUiState
data class Success(
- val edits: List
+ val edits: List,
) : EditsUiState
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/AccountEntity.kt b/app/src/main/java/com/keylesspalace/tusky/db/AccountEntity.kt
index 84c8874f5d..8a2ac118f2 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/AccountEntity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/AccountEntity.kt
@@ -29,9 +29,9 @@ import com.keylesspalace.tusky.entity.Status
indices = [
Index(
value = ["domain", "accountId"],
- unique = true
- )
- ]
+ unique = true,
+ ),
+ ],
)
@TypeConverters(Converters::class)
data class AccountEntity(
@@ -104,7 +104,7 @@ data class AccountEntity(
/** true if the connected Mastodon account is locked (has to manually approve all follow requests **/
@ColumnInfo(defaultValue = "0")
- var locked: Boolean = false
+ var locked: Boolean = false,
) {
val identifier: String
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt b/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt
index 6767de993e..8ba724f02c 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/AccountManager.kt
@@ -66,7 +66,7 @@ class AccountManager @Inject constructor(val db: AppDatabase) {
clientId: String,
clientSecret: String,
oauthScopes: String,
- newAccount: Account
+ newAccount: Account,
) {
activeAccount?.let {
it.isActive = false
@@ -84,7 +84,7 @@ class AccountManager @Inject constructor(val db: AppDatabase) {
clientId = clientId,
clientSecret = clientSecret,
oauthScopes = oauthScopes,
- isActive = true
+ isActive = true,
).also { accounts[existingAccountIndex] = it }
} else {
val maxAccountId = accounts.maxByOrNull { it.id }?.id ?: 0
@@ -97,7 +97,7 @@ class AccountManager @Inject constructor(val db: AppDatabase) {
clientSecret = clientSecret,
oauthScopes = oauthScopes,
isActive = true,
- accountId = newAccount.id
+ accountId = newAccount.id,
).also { accounts.add(it) }
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/Converters.kt b/app/src/main/java/com/keylesspalace/tusky/db/Converters.kt
index 491cd53d84..c71be37d94 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/Converters.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/Converters.kt
@@ -38,7 +38,7 @@ import javax.inject.Singleton
@ProvidedTypeConverter
@Singleton
class Converters @Inject constructor(
- private val gson: Gson
+ private val gson: Gson,
) {
@TypeConverter
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/DraftEntity.kt b/app/src/main/java/com/keylesspalace/tusky/db/DraftEntity.kt
index 2a479ab34f..7b6d2c6ea3 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/DraftEntity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/DraftEntity.kt
@@ -43,7 +43,7 @@ data class DraftEntity(
val failedToSendNew: Boolean,
val scheduledAt: String?,
val language: String?,
- val statusId: String?
+ val statusId: String?,
)
/**
@@ -56,7 +56,7 @@ data class DraftAttachment(
@SerializedName(value = "uriString", alternate = ["e", "i"]) val uriString: String,
@SerializedName(value = "description", alternate = ["f", "j"]) val description: String?,
@SerializedName(value = "focus") val focus: Attachment.Focus?,
- @SerializedName(value = "type", alternate = ["g", "k"]) val type: Type
+ @SerializedName(value = "type", alternate = ["g", "k"]) val type: Type,
) : Parcelable {
val uri: Uri
get() = uriString.toUri()
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/DraftsAlert.kt b/app/src/main/java/com/keylesspalace/tusky/db/DraftsAlert.kt
index 9d11f47d34..8d615e22fe 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/DraftsAlert.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/DraftsAlert.kt
@@ -63,7 +63,7 @@ class DraftsAlert @Inject constructor(db: AppDatabase) {
AlertDialog.Builder(context)
.setTitle(R.string.action_post_failed)
.setMessage(
- context.resources.getQuantityString(R.plurals.action_post_failed_detail, count)
+ context.resources.getQuantityString(R.plurals.action_post_failed_detail, count),
)
.setPositiveButton(R.string.action_post_failed_show_drafts) { _: DialogInterface?, _: Int ->
clearDraftsAlert(coroutineScope, activeAccountId) // User looked at drafts
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/InstanceEntity.kt b/app/src/main/java/com/keylesspalace/tusky/db/InstanceEntity.kt
index efcfe5278c..6f55d1b1ce 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/InstanceEntity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/InstanceEntity.kt
@@ -38,13 +38,13 @@ data class InstanceEntity(
val maxMediaAttachments: Int?,
val maxFields: Int?,
val maxFieldNameLength: Int?,
- val maxFieldValueLength: Int?
+ val maxFieldValueLength: Int?,
)
@TypeConverters(Converters::class)
data class EmojisEntity(
@PrimaryKey val instance: String,
- val emojiList: List?
+ val emojiList: List?,
)
data class InstanceInfoEntity(
@@ -62,5 +62,5 @@ data class InstanceInfoEntity(
val maxMediaAttachments: Int?,
val maxFields: Int?,
val maxFieldNameLength: Int?,
- val maxFieldValueLength: Int?
+ val maxFieldValueLength: Int?,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/RemoteKeyEntity.kt b/app/src/main/java/com/keylesspalace/tusky/db/RemoteKeyEntity.kt
index 1561c6aa7d..2d879faa99 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/RemoteKeyEntity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/RemoteKeyEntity.kt
@@ -24,14 +24,14 @@ enum class RemoteKeyKind {
NEXT,
/** Key to load the previous (chronologically newer) page of data for this timeline */
- PREV
+ PREV,
}
/**
* The next and previous keys for the given timeline.
*/
@Entity(
- primaryKeys = ["accountId", "timelineId", "kind"]
+ primaryKeys = ["accountId", "timelineId", "kind"],
)
data class RemoteKeyEntity(
/** User account these keys relate to. */
@@ -50,5 +50,5 @@ data class RemoteKeyEntity(
*/
val timelineId: String,
val kind: RemoteKeyKind,
- val key: String? = null
+ val key: String? = null,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt b/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt
index 80d8ffd30c..4ba39a810a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt
@@ -49,7 +49,7 @@ FROM TimelineStatusEntity s
LEFT JOIN TimelineAccountEntity a ON (s.timelineUserId = a.timelineUserId AND s.authorServerId = a.serverId)
LEFT JOIN TimelineAccountEntity rb ON (s.timelineUserId = rb.timelineUserId AND s.reblogAccountId = rb.serverId)
WHERE s.timelineUserId = :account
-ORDER BY LENGTH(s.serverId) DESC, s.serverId DESC"""
+ORDER BY LENGTH(s.serverId) DESC, s.serverId DESC""",
)
abstract fun getStatuses(account: Long): PagingSource
@@ -64,7 +64,7 @@ ORDER BY LENGTH(s.serverId) DESC, s.serverId DESC"""
SELECT serverId
FROM TimelineStatusEntity
WHERE timelineUserId = :account
- ORDER BY LENGTH(serverId) DESC, serverId DESC"""
+ ORDER BY LENGTH(serverId) DESC, serverId DESC""",
)
abstract fun getStatusRowNumber(account: Long): List
@@ -87,7 +87,7 @@ FROM TimelineStatusEntity s
LEFT JOIN TimelineAccountEntity a ON (s.timelineUserId = a.timelineUserId AND s.authorServerId = a.serverId)
LEFT JOIN TimelineAccountEntity rb ON (s.timelineUserId = rb.timelineUserId AND s.reblogAccountId = rb.serverId)
WHERE (s.serverId = :statusId OR s.reblogServerId = :statusId)
-AND s.authorServerId IS NOT NULL"""
+AND s.authorServerId IS NOT NULL""",
)
abstract suspend fun getStatus(statusId: String): TimelineStatusWithAccount?
@@ -96,31 +96,31 @@ AND s.authorServerId IS NOT NULL"""
(LENGTH(serverId) < LENGTH(:maxId) OR LENGTH(serverId) == LENGTH(:maxId) AND serverId <= :maxId)
AND
(LENGTH(serverId) > LENGTH(:minId) OR LENGTH(serverId) == LENGTH(:minId) AND serverId >= :minId)
- """
+ """,
)
abstract suspend fun deleteRange(accountId: Long, minId: String, maxId: String): Int
@Query(
"""UPDATE TimelineStatusEntity SET favourited = :favourited
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setFavourited(accountId: Long, statusId: String, favourited: Boolean)
@Query(
"""UPDATE TimelineStatusEntity SET bookmarked = :bookmarked
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setBookmarked(accountId: Long, statusId: String, bookmarked: Boolean)
@Query(
"""UPDATE TimelineStatusEntity SET reblogged = :reblogged
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setReblogged(accountId: Long, statusId: String, reblogged: Boolean)
@Query(
"""DELETE FROM TimelineStatusEntity WHERE timelineUserId = :accountId AND
-(authorServerId = :userId OR reblogAccountId = :userId)"""
+(authorServerId = :userId OR reblogAccountId = :userId)""",
)
abstract suspend fun removeAllByUser(accountId: Long, userId: String)
@@ -141,7 +141,7 @@ WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId =
@Query(
"""DELETE FROM TimelineStatusEntity WHERE timelineUserId = :accountId
-AND serverId = :statusId"""
+AND serverId = :statusId""",
)
abstract suspend fun delete(accountId: Long, statusId: String)
@@ -163,7 +163,7 @@ AND serverId = :statusId"""
@Query(
"""DELETE FROM TimelineStatusEntity WHERE timelineUserId = :accountId AND serverId NOT IN
(SELECT serverId FROM TimelineStatusEntity WHERE timelineUserId = :accountId ORDER BY LENGTH(serverId) DESC, serverId DESC LIMIT :limit)
- """
+ """,
)
abstract suspend fun cleanupStatuses(accountId: Long, limit: Int)
@@ -175,37 +175,37 @@ AND serverId = :statusId"""
"""DELETE FROM TimelineAccountEntity WHERE timelineUserId = :accountId AND serverId NOT IN
(SELECT authorServerId FROM TimelineStatusEntity WHERE timelineUserId = :accountId)
AND serverId NOT IN
- (SELECT reblogAccountId FROM TimelineStatusEntity WHERE timelineUserId = :accountId AND reblogAccountId IS NOT NULL)"""
+ (SELECT reblogAccountId FROM TimelineStatusEntity WHERE timelineUserId = :accountId AND reblogAccountId IS NOT NULL)""",
)
abstract suspend fun cleanupAccounts(accountId: Long)
@Query(
"""UPDATE TimelineStatusEntity SET poll = :poll
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setVoted(accountId: Long, statusId: String, poll: String)
@Query(
"""UPDATE TimelineStatusEntity SET expanded = :expanded
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setExpanded(accountId: Long, statusId: String, expanded: Boolean)
@Query(
"""UPDATE TimelineStatusEntity SET contentShowing = :contentShowing
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setContentShowing(accountId: Long, statusId: String, contentShowing: Boolean)
@Query(
"""UPDATE TimelineStatusEntity SET contentCollapsed = :contentCollapsed
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setContentCollapsed(accountId: Long, statusId: String, contentCollapsed: Boolean)
@Query(
"""UPDATE TimelineStatusEntity SET pinned = :pinned
-WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)"""
+WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""",
)
abstract suspend fun setPinned(accountId: Long, statusId: String, pinned: Boolean)
@@ -214,7 +214,7 @@ WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId =
WHERE timelineUserId = :accountId AND authorServerId IN (
SELECT serverId FROM TimelineAccountEntity WHERE username LIKE '%@' || :instanceDomain
AND timelineUserId = :accountId
-)"""
+)""",
)
abstract suspend fun deleteAllFromInstance(accountId: Long, instanceDomain: String)
diff --git a/app/src/main/java/com/keylesspalace/tusky/db/TimelineStatusEntity.kt b/app/src/main/java/com/keylesspalace/tusky/db/TimelineStatusEntity.kt
index cf8a3c26ac..da903a68fa 100644
--- a/app/src/main/java/com/keylesspalace/tusky/db/TimelineStatusEntity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/db/TimelineStatusEntity.kt
@@ -41,12 +41,12 @@ import com.keylesspalace.tusky.entity.Status
ForeignKey(
entity = TimelineAccountEntity::class,
parentColumns = ["serverId", "timelineUserId"],
- childColumns = ["authorServerId", "timelineUserId"]
- )
+ childColumns = ["authorServerId", "timelineUserId"],
+ ),
]
),
// Avoiding rescanning status table when accounts table changes. Recommended by Room(c).
- indices = [Index("authorServerId", "timelineUserId")]
+ indices = [Index("authorServerId", "timelineUserId")],
)
@TypeConverters(Converters::class)
data class TimelineStatusEntity(
@@ -84,11 +84,11 @@ data class TimelineStatusEntity(
val pinned: Boolean,
val card: String?,
val language: String?,
- val filtered: List?
+ val filtered: List?,
)
@Entity(
- primaryKeys = ["serverId", "timelineUserId"]
+ primaryKeys = ["serverId", "timelineUserId"],
)
data class TimelineAccountEntity(
val serverId: String,
@@ -99,7 +99,7 @@ data class TimelineAccountEntity(
val url: String,
val avatar: String,
val emojis: String,
- val bot: Boolean
+ val bot: Boolean,
)
data class TimelineStatusWithAccount(
@@ -108,5 +108,5 @@ data class TimelineStatusWithAccount(
@Embedded(prefix = "a_")
val account: TimelineAccountEntity,
@Embedded(prefix = "rb_")
- val reblogAccount: TimelineAccountEntity? = null // null when no reblog
+ val reblogAccount: TimelineAccountEntity? = null, // null when no reblog
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/AppComponent.kt b/app/src/main/java/com/keylesspalace/tusky/di/AppComponent.kt
index d922ab3700..e186c947e7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/AppComponent.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/AppComponent.kt
@@ -36,8 +36,8 @@ import javax.inject.Singleton
ServicesModule::class,
BroadcastReceiverModule::class,
ViewModelModule::class,
- WorkerModule::class
- ]
+ WorkerModule::class,
+ ],
)
interface AppComponent {
@Component.Builder
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/AppInjector.kt b/app/src/main/java/com/keylesspalace/tusky/di/AppInjector.kt
index 6446a73573..843dfb5cde 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/AppInjector.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/AppInjector.kt
@@ -36,29 +36,31 @@ object AppInjector {
DaggerAppComponent.builder().application(app)
.build().inject(app)
- app.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
- override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
- handleActivity(activity)
- }
+ app.registerActivityLifecycleCallbacks(
+ object : Application.ActivityLifecycleCallbacks {
+ override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
+ handleActivity(activity)
+ }
- override fun onActivityPaused(activity: Activity) {
- }
+ override fun onActivityPaused(activity: Activity) {
+ }
- override fun onActivityResumed(activity: Activity) {
- }
+ override fun onActivityResumed(activity: Activity) {
+ }
- override fun onActivityStarted(activity: Activity) {
- }
+ override fun onActivityStarted(activity: Activity) {
+ }
- override fun onActivityDestroyed(activity: Activity) {
- }
+ override fun onActivityDestroyed(activity: Activity) {
+ }
- override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
- }
+ override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
+ }
- override fun onActivityStopped(activity: Activity) {
- }
- })
+ override fun onActivityStopped(activity: Activity) {
+ }
+ },
+ )
}
private fun handleActivity(activity: Activity) {
@@ -74,7 +76,7 @@ object AppInjector {
}
}
},
- true
+ true,
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/AppModule.kt b/app/src/main/java/com/keylesspalace/tusky/di/AppModule.kt
index 81c50c4e37..c89799d811 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/AppModule.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/AppModule.kt
@@ -70,7 +70,7 @@ class AppModule {
AppDatabase.MIGRATION_44_45, AppDatabase.MIGRATION_45_46, AppDatabase.MIGRATION_46_47,
AppDatabase.MIGRATION_47_48, /* 48 -> 49, auto */ /* 49 -> 50, auto */
/* 50 -> 51, auto */ /* 51 -> 52, auto */ AppDatabase.MIGRATION_52_53,
- AppDatabase.MIGRATION_53_54
+ AppDatabase.MIGRATION_53_54,
)
.build()
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/NetworkModule.kt b/app/src/main/java/com/keylesspalace/tusky/di/NetworkModule.kt
index 03b4ad3943..971304d820 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/NetworkModule.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/NetworkModule.kt
@@ -68,7 +68,7 @@ class NetworkModule {
fun providesHttpClient(
accountManager: AccountManager,
context: Context,
- preferences: SharedPreferences
+ preferences: SharedPreferences,
): OkHttpClient {
val httpProxyEnabled = preferences.getBoolean(HTTP_PROXY_ENABLED, false)
val httpServer = preferences.getNonNullString(HTTP_PROXY_SERVER, "")
@@ -84,7 +84,7 @@ class NetworkModule {
val requestWithUserAgent = chain.request().newBuilder()
.header(
"User-Agent",
- "Tusky/${BuildConfig.VERSION_NAME} Android/${Build.VERSION.RELEASE} OkHttp/${OkHttp.VERSION}"
+ "Tusky/${BuildConfig.VERSION_NAME} Android/${Build.VERSION.RELEASE} OkHttp/${OkHttp.VERSION}",
)
.build()
chain.proceed(requestWithUserAgent)
@@ -114,7 +114,7 @@ class NetworkModule {
@Singleton
fun providesRetrofit(
httpClient: OkHttpClient,
- gson: Gson
+ gson: Gson,
): Retrofit {
return Retrofit.Builder().baseUrl("https://" + MastodonApi.PLACEHOLDER_DOMAIN)
.client(httpClient)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/AccessToken.kt b/app/src/main/java/com/keylesspalace/tusky/entity/AccessToken.kt
index e974ce196e..f73357659b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/AccessToken.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/AccessToken.kt
@@ -18,5 +18,5 @@ package com.keylesspalace.tusky.entity
import com.google.gson.annotations.SerializedName
data class AccessToken(
- @SerializedName("access_token") val accessToken: String
+ @SerializedName("access_token") val accessToken: String,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt
index 43b9bd9c91..56ed4d21e2 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Account.kt
@@ -36,7 +36,7 @@ data class Account(
val bot: Boolean = false,
val emojis: List? = emptyList(), // nullable for backward compatibility
val fields: List? = emptyList(), // nullable for backward compatibility
- val moved: Account? = null
+ val moved: Account? = null,
) {
@@ -55,16 +55,16 @@ data class AccountSource(
val sensitive: Boolean?,
val note: String?,
val fields: List?,
- val language: String?
+ val language: String?,
)
data class Field(
val name: String,
val value: String,
- @SerializedName("verified_at") val verifiedAt: Date?
+ @SerializedName("verified_at") val verifiedAt: Date?,
)
data class StringField(
val name: String,
- val value: String
+ val value: String,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Announcement.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Announcement.kt
index 5837815b0b..48551195dc 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Announcement.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Announcement.kt
@@ -31,7 +31,7 @@ data class Announcement(
val statuses: List,
val tags: List,
val emojis: List,
- val reactions: List
+ val reactions: List,
) {
override fun equals(other: Any?): Boolean {
@@ -51,6 +51,6 @@ data class Announcement(
val count: Int,
val me: Boolean,
val url: String?,
- @SerializedName("static_url") val staticUrl: String?
+ @SerializedName("static_url") val staticUrl: String?,
)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/AppCredentials.kt b/app/src/main/java/com/keylesspalace/tusky/entity/AppCredentials.kt
index fe6b0c3ce8..87d4a6dc1d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/AppCredentials.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/AppCredentials.kt
@@ -19,5 +19,5 @@ import com.google.gson.annotations.SerializedName
data class AppCredentials(
@SerializedName("client_id") val clientId: String,
- @SerializedName("client_secret") val clientSecret: String
+ @SerializedName("client_secret") val clientSecret: String,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Attachment.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Attachment.kt
index 0ebd9c370f..f8942fa4cf 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Attachment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Attachment.kt
@@ -32,7 +32,7 @@ data class Attachment(
val meta: MetaData?,
val type: Type,
val description: String?,
- val blurhash: String?
+ val blurhash: String?,
) : Parcelable {
@JsonAdapter(MediaTypeDeserializer::class)
@@ -50,7 +50,7 @@ data class Attachment(
AUDIO,
@SerializedName("unknown")
- UNKNOWN
+ UNKNOWN,
}
class MediaTypeDeserializer : JsonDeserializer {
@@ -74,7 +74,7 @@ data class Attachment(
val focus: Focus?,
val duration: Float?,
val original: Size?,
- val small: Size?
+ val small: Size?,
) : Parcelable
/**
@@ -86,7 +86,7 @@ data class Attachment(
@Parcelize
data class Focus(
val x: Float,
- val y: Float
+ val y: Float,
) : Parcelable {
fun toMastodonApiString(): String = "$x,$y"
}
@@ -98,6 +98,6 @@ data class Attachment(
data class Size(
val width: Int,
val height: Int,
- val aspect: Double
+ val aspect: Double,
) : Parcelable
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Card.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Card.kt
index 05cac1a0fa..65168a023e 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Card.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Card.kt
@@ -27,7 +27,7 @@ data class Card(
val width: Int,
val height: Int,
val blurhash: String?,
- @SerializedName("embed_url") val embedUrl: String?
+ @SerializedName("embed_url") val embedUrl: String?,
) {
override fun hashCode() = url.hashCode()
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Conversation.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Conversation.kt
index e5a547f11f..da46d9347b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Conversation.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Conversation.kt
@@ -21,5 +21,5 @@ data class Conversation(
val id: String,
val accounts: List,
@SerializedName("last_status") val lastStatus: Status?, // should never be null, but apparently its possible https://github.com/tuskyapp/Tusky/issues/1038
- val unread: Boolean
+ val unread: Boolean,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/DeletedStatus.kt b/app/src/main/java/com/keylesspalace/tusky/entity/DeletedStatus.kt
index c400a1af60..852e29eef7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/DeletedStatus.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/DeletedStatus.kt
@@ -27,7 +27,7 @@ data class DeletedStatus(
@SerializedName("media_attachments") val attachments: List?,
val poll: Poll?,
@SerializedName("created_at") val createdAt: Date,
- val language: String?
+ val language: String?,
) {
fun isEmpty(): Boolean {
return text == null && attachments == null
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Emoji.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Emoji.kt
index 130831a2d6..07c8d0a119 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Emoji.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Emoji.kt
@@ -24,5 +24,5 @@ data class Emoji(
val shortcode: String,
val url: String,
@SerializedName("static_url") val staticUrl: String,
- @SerializedName("visible_in_picker") val visibleInPicker: Boolean?
+ @SerializedName("visible_in_picker") val visibleInPicker: Boolean?,
) : Parcelable
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Error.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Error.kt
index 738b4499d4..2bdbf08e2b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Error.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Error.kt
@@ -20,5 +20,5 @@ package com.keylesspalace.tusky.entity
/** @see [Error](https://docs.joinmastodon.org/entities/Error/) */
data class Error(
val error: String,
- val error_description: String?
+ val error_description: String?,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Filter.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Filter.kt
index dbc5378280..3cb387b89d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Filter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Filter.kt
@@ -13,13 +13,14 @@ data class Filter(
val context: List,
@SerializedName("expires_at") val expiresAt: Date?,
@SerializedName("filter_action") private val filterAction: String,
- val keywords: List
+ val keywords: List,
// val statuses: List,
) : Parcelable {
enum class Action(val action: String) {
NONE("none"),
WARN("warn"),
- HIDE("hide");
+ HIDE("hide"),
+ ;
companion object {
fun from(action: String): Action = values().firstOrNull { it.action == action } ?: WARN
@@ -30,7 +31,8 @@ data class Filter(
NOTIFICATIONS("notifications"),
PUBLIC("public"),
THREAD("thread"),
- ACCOUNT("account");
+ ACCOUNT("account"),
+ ;
companion object {
fun from(kind: String): Kind = values().firstOrNull { it.kind == kind } ?: PUBLIC
@@ -40,7 +42,8 @@ data class Filter(
is TimelineKind.PublicFederated,
is TimelineKind.PublicLocal,
is TimelineKind.Tag,
- is TimelineKind.Favourites -> Filter.Kind.PUBLIC
+ is TimelineKind.Favourites,
+ -> Filter.Kind.PUBLIC
is TimelineKind.User -> Filter.Kind.ACCOUNT
else -> Filter.Kind.PUBLIC
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/FilterKeyword.kt b/app/src/main/java/com/keylesspalace/tusky/entity/FilterKeyword.kt
index c62ac40909..131540c146 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/FilterKeyword.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/FilterKeyword.kt
@@ -8,5 +8,5 @@ import kotlinx.parcelize.Parcelize
data class FilterKeyword(
val id: String,
val keyword: String,
- @SerializedName("whole_word") val wholeWord: Boolean
+ @SerializedName("whole_word") val wholeWord: Boolean,
) : Parcelable
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/FilterResult.kt b/app/src/main/java/com/keylesspalace/tusky/entity/FilterResult.kt
index f51af22fff..5fd10f98d4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/FilterResult.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/FilterResult.kt
@@ -5,5 +5,5 @@ import com.google.gson.annotations.SerializedName
data class FilterResult(
val filter: Filter,
@SerializedName("keyword_matches") val keywordMatches: List?,
- @SerializedName("status_matches") val statusMatches: List?
+ @SerializedName("status_matches") val statusMatches: List?,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/FilterV1.kt b/app/src/main/java/com/keylesspalace/tusky/entity/FilterV1.kt
index a93ccff5ef..c820912845 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/FilterV1.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/FilterV1.kt
@@ -24,7 +24,7 @@ data class FilterV1(
val context: List,
@SerializedName("expires_at") val expiresAt: Date?,
val irreversible: Boolean,
- @SerializedName("whole_word") val wholeWord: Boolean
+ @SerializedName("whole_word") val wholeWord: Boolean,
) {
companion object {
const val HOME = "home"
@@ -57,9 +57,9 @@ data class FilterV1(
FilterKeyword(
id = id,
keyword = phrase,
- wholeWord = wholeWord
- )
- )
+ wholeWord = wholeWord,
+ ),
+ ),
)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Instance.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Instance.kt
index 77864cfebb..ba9c2351a5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Instance.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Instance.kt
@@ -34,7 +34,7 @@ data class Instance(
@SerializedName("max_media_attachments") val maxMediaAttachments: Int?,
val pleroma: PleromaConfiguration?,
@SerializedName("upload_limit") val uploadLimit: Int?,
- val rules: List?
+ val rules: List?,
) {
override fun hashCode(): Int {
return uri.hashCode()
@@ -54,19 +54,19 @@ data class PollConfiguration(
@SerializedName("max_option_chars") val maxOptionChars: Int?,
@SerializedName("max_characters_per_option") val maxCharactersPerOption: Int?,
@SerializedName("min_expiration") val minExpiration: Int?,
- @SerializedName("max_expiration") val maxExpiration: Int?
+ @SerializedName("max_expiration") val maxExpiration: Int?,
)
data class InstanceConfiguration(
val statuses: StatusConfiguration?,
@SerializedName("media_attachments") val mediaAttachments: MediaAttachmentConfiguration?,
- val polls: PollConfiguration?
+ val polls: PollConfiguration?,
)
data class StatusConfiguration(
@SerializedName("max_characters") val maxCharacters: Int?,
@SerializedName("max_media_attachments") val maxMediaAttachments: Int?,
- @SerializedName("characters_reserved_per_url") val charactersReservedPerUrl: Int?
+ @SerializedName("characters_reserved_per_url") val charactersReservedPerUrl: Int?,
)
data class MediaAttachmentConfiguration(
@@ -75,24 +75,24 @@ data class MediaAttachmentConfiguration(
@SerializedName("image_matrix_limit") val imageMatrixLimit: Int?,
@SerializedName("video_size_limit") val videoSizeLimit: Int?,
@SerializedName("video_frame_rate_limit") val videoFrameRateLimit: Int?,
- @SerializedName("video_matrix_limit") val videoMatrixLimit: Int?
+ @SerializedName("video_matrix_limit") val videoMatrixLimit: Int?,
)
data class PleromaConfiguration(
- val metadata: PleromaMetadata?
+ val metadata: PleromaMetadata?,
)
data class PleromaMetadata(
- @SerializedName("fields_limits") val fieldLimits: PleromaFieldLimits
+ @SerializedName("fields_limits") val fieldLimits: PleromaFieldLimits,
)
data class PleromaFieldLimits(
@SerializedName("max_fields") val maxFields: Int?,
@SerializedName("name_length") val nameLength: Int?,
- @SerializedName("value_length") val valueLength: Int?
+ @SerializedName("value_length") val valueLength: Int?,
)
data class InstanceRules(
val id: String,
- val text: String
+ val text: String,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Marker.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Marker.kt
index 78572054df..3a623c6bce 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Marker.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Marker.kt
@@ -11,5 +11,5 @@ data class Marker(
val lastReadId: String,
val version: Int,
@SerializedName("updated_at")
- val updatedAt: Date
+ val updatedAt: Date,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/MastoList.kt b/app/src/main/java/com/keylesspalace/tusky/entity/MastoList.kt
index a74337ef5a..69ad597d2d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/MastoList.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/MastoList.kt
@@ -23,5 +23,5 @@ package com.keylesspalace.tusky.entity
data class MastoList(
val id: String,
val title: String,
- val exclusive: Boolean?
+ val exclusive: Boolean?,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/MediaUploadResult.kt b/app/src/main/java/com/keylesspalace/tusky/entity/MediaUploadResult.kt
index 15910f6216..052f689a54 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/MediaUploadResult.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/MediaUploadResult.kt
@@ -5,5 +5,5 @@ package com.keylesspalace.tusky.entity
* We are only interested in the id, so other attributes are omitted
*/
data class MediaUploadResult(
- val id: String
+ val id: String,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/NewStatus.kt b/app/src/main/java/com/keylesspalace/tusky/entity/NewStatus.kt
index 1a353eadf5..1d202bef65 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/NewStatus.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/NewStatus.kt
@@ -29,14 +29,14 @@ data class NewStatus(
@SerializedName("media_attributes") val mediaAttributes: List?,
@SerializedName("scheduled_at") val scheduledAt: String?,
val poll: NewPoll?,
- val language: String?
+ val language: String?,
)
@Parcelize
data class NewPoll(
val options: List,
@SerializedName("expires_in") val expiresIn: Int,
- val multiple: Boolean
+ val multiple: Boolean,
) : Parcelable
// It would be nice if we could reuse MediaToSend,
@@ -46,5 +46,5 @@ data class MediaAttribute(
val id: String,
val description: String?,
val focus: String?,
- val thumbnail: String?
+ val thumbnail: String?,
) : Parcelable
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Notification.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Notification.kt
index a7007e57c4..224c792a6d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Notification.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Notification.kt
@@ -28,7 +28,7 @@ data class Notification(
val id: String,
val account: TimelineAccount,
val status: Status?,
- val report: Report?
+ val report: Report?,
) {
/** From https://docs.joinmastodon.org/entities/Notification/#type */
@@ -64,7 +64,8 @@ data class Notification(
UPDATE("update", R.string.notification_update_name),
/** A new report has been filed */
- REPORT("admin.report", R.string.notification_report_name);
+ REPORT("admin.report", R.string.notification_report_name),
+ ;
companion object {
@JvmStatic
@@ -104,7 +105,7 @@ data class Notification(
override fun deserialize(
json: JsonElement,
typeOfT: java.lang.reflect.Type,
- context: JsonDeserializationContext
+ context: JsonDeserializationContext,
): Type {
return Type.byString(json.asString)
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/NotificationSubscribeResult.kt b/app/src/main/java/com/keylesspalace/tusky/entity/NotificationSubscribeResult.kt
index 6bdaa14388..c6eb09becf 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/NotificationSubscribeResult.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/NotificationSubscribeResult.kt
@@ -20,5 +20,5 @@ import com.google.gson.annotations.SerializedName
data class NotificationSubscribeResult(
val id: Int,
val endpoint: String,
- @SerializedName("server_key") val serverKey: String
+ @SerializedName("server_key") val serverKey: String,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt
index 584b76f8cd..fcf1d161c9 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt
@@ -12,7 +12,7 @@ data class Poll(
@SerializedName("voters_count") val votersCount: Int?, // nullable for compatibility with Pleroma
val options: List,
val voted: Boolean,
- @SerializedName("own_votes") val ownVotes: List?
+ @SerializedName("own_votes") val ownVotes: List?,
) {
fun votedCopy(choices: List): Poll {
@@ -28,7 +28,7 @@ data class Poll(
options = newOptions,
votesCount = votesCount + choices.size,
votersCount = votersCount?.plus(1),
- voted = true
+ voted = true,
)
}
@@ -37,11 +37,11 @@ data class Poll(
expiresAt?.let {
((it.time - creationDate.time) / 1000).toInt() + 1
} ?: 3600,
- multiple
+ multiple,
)
}
data class PollOption(
val title: String,
- @SerializedName("votes_count") val votesCount: Int
+ @SerializedName("votes_count") val votesCount: Int,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Relationship.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Relationship.kt
index e99bcce6dc..16aaa1c571 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Relationship.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Relationship.kt
@@ -35,5 +35,5 @@ data class Relationship(
@JsonAdapter(GuardedBooleanAdapter::class) val subscribing: Boolean? = null,
@SerializedName("domain_blocking") val blockingDomain: Boolean,
val note: String?, // nullable for backward compatibility / feature detection
- val notifying: Boolean? // since 3.3.0rc
+ val notifying: Boolean?, // since 3.3.0rc
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Report.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Report.kt
index 8de7b957d6..0330c102c4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/Report.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/Report.kt
@@ -8,5 +8,5 @@ data class Report(
val category: String,
val status_ids: List?,
@SerializedName("created_at") val createdAt: Date,
- @SerializedName("target_account") val targetAccount: TimelineAccount
+ @SerializedName("target_account") val targetAccount: TimelineAccount,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt b/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt
index dfaeb499c7..800b45517c 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/ScheduledStatus.kt
@@ -21,5 +21,5 @@ data class ScheduledStatus(
val id: String,
@SerializedName("scheduled_at") val scheduledAt: String,
val params: StatusParams,
- @SerializedName("media_attachments") val mediaAttachments: ArrayList
+ @SerializedName("media_attachments") val mediaAttachments: ArrayList,
)
diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/SearchResult.kt b/app/src/main/java/com/keylesspalace/tusky/entity/SearchResult.kt
index 5bc78cf72f..5653a77de0 100644
--- a/app/src/main/java/com/keylesspalace/tusky/entity/SearchResult.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/entity/SearchResult.kt
@@ -18,5 +18,5 @@ package com.keylesspalace.tusky.entity
data class SearchResult(
val accounts: List,
val statuses: List,
- val hashtags: List