diff --git a/build.gradle b/build.gradle
index 1212dc3b1..b3e5b0810 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,8 +17,8 @@ buildscript {
allprojects {
ext {
projectGroupId = 'org.mariotaku.twidere'
- projectVersionCode = 515
- projectVersionName = '4.1.6'
+ projectVersionCode = 517
+ projectVersionName = '4.1.8'
globalCompileSdkVersion = 30
globalBuildToolsVersion = "30.0.3"
diff --git a/twidere/src/main/AndroidManifest.xml b/twidere/src/main/AndroidManifest.xml
index c310bf191..7a0f27b07 100644
--- a/twidere/src/main/AndroidManifest.xml
+++ b/twidere/src/main/AndroidManifest.xml
@@ -703,6 +703,7 @@
{
data?.let { data ->
var idx = position - getIndexStart(ITEM_IDX_CONVERSATION)
- if (data[idx].is_filtered) idx++
- return data[idx]
+ if (idx in data.indices) {
+ if (data[idx].is_filtered) {
+ idx++
+ }
+ return data[idx]
+ }
}
}
ITEM_IDX_REPLY -> {
@@ -137,8 +141,12 @@ class StatusDetailsAdapter(
var idx = position - getIndexStart(ITEM_IDX_CONVERSATION) -
getTypeCount(ITEM_IDX_CONVERSATION) - getTypeCount(ITEM_IDX_STATUS) +
replyStart
- if (data[idx].is_filtered) idx++
- return data[idx]
+ if (idx in data.indices) {
+ if (data[idx].is_filtered) {
+ idx++
+ }
+ return data[idx]
+ }
}
}
ITEM_IDX_STATUS -> {
diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsContentListViewFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsContentListViewFragment.kt
index 45d6ffc1d..92c0cb91d 100644
--- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsContentListViewFragment.kt
+++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsContentListViewFragment.kt
@@ -213,7 +213,9 @@ abstract class AbsContentListViewFragment : BaseFragment(),
val density = resources.displayMetrics.density
val progressCircleDiameter = swipeLayout.progressCircleDiameter
val controlBarOffsetPixels =
- (activity.controlBarHeight * (1 - activity.controlBarOffset)).roundToInt()
+ ((activity.controlBarHeight * (1 - activity.controlBarOffset)).takeIf { !it.isNaN() }
+ ?: 0f)
+ .roundToInt()
val swipeStart = systemWindowsInsets.top - controlBarOffsetPixels - progressCircleDiameter
// 64: SwipeRefreshLayout.DEFAULT_CIRCLE_TARGET
val swipeDistance = (64 * density).roundToInt()