Skip to content

Commit cf90e04

Browse files
Merge pull request #13359 from woocommerce/issue/13358-handle-no-position
Handle crash in Bulk Order Update when item position is -1
2 parents 438ecaf + 2d4a970 commit cf90e04

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/DefaultOrderListItemLookup.kt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.woocommerce.android.ui.orders
22

33
import android.view.MotionEvent
4+
import android.view.View
45
import androidx.recyclerview.selection.ItemDetailsLookup
56
import androidx.recyclerview.widget.RecyclerView
67
import com.woocommerce.android.ui.orders.list.OrderListAdapter
@@ -10,17 +11,24 @@ class DefaultOrderListItemLookup(private val recyclerView: RecyclerView) : ItemD
1011
override fun getItemDetails(event: MotionEvent): ItemDetails<Long>? =
1112
recyclerView
1213
.findChildViewUnder(event.x, event.y)
13-
?.let { view ->
14-
recyclerView.getChildViewHolder(view)?.let { viewHolder ->
15-
val position = viewHolder.bindingAdapterPosition
16-
val item = (recyclerView.adapter as? OrderListAdapter)?.currentList?.get(position)
17-
if (item is OrderListItemUI) {
18-
DefaultOrderItemDetailsLookup(position, item.orderId)
19-
} else {
20-
null
21-
}
14+
?.let { view -> getDetailsFromView(view) }
15+
16+
private fun getDetailsFromView(view: View): ItemDetails<Long>? {
17+
val viewHolder = recyclerView.getChildViewHolder(view) ?: return null
18+
val position = viewHolder.bindingAdapterPosition
19+
20+
return when {
21+
position == RecyclerView.NO_POSITION -> null
22+
else -> {
23+
val item = (recyclerView.adapter as? OrderListAdapter)?.currentList?.get(position)
24+
if (item is OrderListItemUI) {
25+
DefaultOrderItemDetailsLookup(position, item.orderId)
26+
} else {
27+
null
2228
}
2329
}
30+
}
31+
}
2432
}
2533

2634
class DefaultOrderItemDetailsLookup(

0 commit comments

Comments
 (0)