⚠️ Before posting ⚠️
Steps to reproduce
- Open the app (I'm already logged in, so log in if needed)
- Tap Favorites.
- Scroll down.
- It will crash after 2-3 seconds.
Expected behaviour
It should not crash.
Actual behaviour
It shows the files, but crashes after scrolling to the bottom.
Android version
16
Device brand and model
Pixel 7a
Stock or custom OS?
Stock
Nextcloud android app version
34.0.0
Nextcloud server version
33.0.5
Using a reverse proxy?
No
Android logs
No response
Server error logs
Additional information
Here's the stack trace, my 2 cents is that there's a listOf() that should be a mutableListOf() somewhere, so it used EmptyList instead of MutableList and blew up.
Cause of error
Exception in thread "main" java.lang.UnsupportedOperationException: Operation is not supported for read-only collection
at kotlin.collections.EmptyList.add(Unknown Source:4)
at com.owncloud.android.ui.adapter.OCFileListAdapter.bindListItemViewHolder(OCFileListAdapter.java:610)
at com.owncloud.android.ui.adapter.OCFileListAdapter.bindHolder(OCFileListAdapter.java:502)
at com.owncloud.android.ui.adapter.OCFileListAdapter.onBindViewHolder(OCFileListAdapter.java:490)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7747)
at com.owncloud.android.ui.adapter.OCFileListAdapter.onBindViewHolder(OCFileListAdapter.java:1089)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7847)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6646)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6917)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6757)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6753)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2362)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1662)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4645)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4348)
at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:2076)
at androidx.recyclerview.widget.RecyclerView.scrollByInternal(RecyclerView.java:2145)
at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3867)
at android.view.View.performOnTouchCallback(View.java:16906)
at android.view.View.dispatchTouchEvent(View.java:16859)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3137)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2811)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:503)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:2017)
at android.app.Activity.dispatchTouchEvent(Activity.java:4666)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:441)
at android.view.View.dispatchPointerEvent(View.java:17196)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8585)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:8335)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7702)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7759)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7725)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7896)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7733)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7953)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7706)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7759)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7725)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7733)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7706)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:11033)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10973)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10941)
at android.view.ViewRootImpl.processRawInputEvent(ViewRootImpl.java:11377)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:11161)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:284)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:260)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:11132)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:11226)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1647)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1656)
at android.view.Choreographer.doCallbacks(Choreographer.java:1252)
at android.view.Choreographer.doFrame(Choreographer.java:1174)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1630)
at android.os.Handler.handleCallback(Handler.java:1095)
at android.os.Handler.dispatchMessageImpl(Handler.java:135)
at android.os.Handler.dispatchMessage(Handler.java:125)
at android.os.Looper.loopOnce(Looper.java:269)
at android.os.Looper.loop(Looper.java:367)
at android.app.ActivityThread.main(ActivityThread.java:9333)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
App information
- ID:
com.nextcloud.client
- Version:
340000090
- Build flavor:
gplay
Device information
- Brand:
google
- Device:
lynx
- Model:
Pixel 7a
- Id:
CP1A.260505.005
- Product:
lynx
Firmware
- SDK:
36
- Release:
16
- Incremental:
15081906
Steps to reproduce
Expected behaviour
It should not crash.
Actual behaviour
It shows the files, but crashes after scrolling to the bottom.
Android version
16
Device brand and model
Pixel 7a
Stock or custom OS?
Stock
Nextcloud android app version
34.0.0
Nextcloud server version
33.0.5
Using a reverse proxy?
No
Android logs
No response
Server error logs
Additional information
Here's the stack trace, my 2 cents is that there's a listOf() that should be a mutableListOf() somewhere, so it used EmptyList instead of MutableList and blew up.
Cause of error
App information
com.nextcloud.client340000090gplayDevice information
googlelynxPixel 7aCP1A.260505.005lynxFirmware
361615081906