App crashes when trying to add feeds with "null" in their title
Checklist
- [x] I have used the search function for OPEN issues to see if someone else has already submitted the same bug report.
- [x] I have also used the search function for CLOSED issues to see if the problem is already solved and just waiting to be released.
- [x] I will describe the problem with as much detail as possible.
- [x] If the bug only to occurs with a certain feed, I will include the URL of that feed.
App version
2.9.0
Where did you get the app from
F-Droid
Are you using the "Parse full article" feature?
No
Android version
Graphene OS / Android 15
Device model
Google Pixel 6a
First occurred
Tuesday 18 February 2025
Steps to reproduce
- Open menu to add feed
- Enter https://blog.filen.io/rss/ into the URL field
- Select "search"
- Select the feed that shows up
Expected behaviour
I am trying to add the RSS feed of the Filen blog (Blog, RSS Feed). The blog uses Ghost, which also automatically provides the RSS feature for the blog.
Current behaviour
The app displays a preview containing "null" two times, instead of a Feed title etc after selecting "search".
Selecting the feed causes the app to close and Android shows the home screen.
It appears to be an issue with the RSS feed (as it shouldn't use "null" in their title...), but it might be beneficial to add a check for this issue. Other feeds from Ghost might also be affected due to similar issues.
I've tried contacting Filen, and are currently waiting for a response. Either Filen configured their RSS feed incorrectly, or its an issue with Ghost, as titles should not be "null".
EDIT: Filen fixed their RSS feed, it is not returning feeds with "null" in the title.
Logs
type: crash
osVersion: google/bluejay/bluejay:15/AP4A.250105.002/2025020300:user/release-keys
package: com.nononsenseapps.feeder:326, targetSdk 35
process: com.nononsenseapps.feeder
processUptime: 10248 + 197 ms
installer: org.fdroid.fdroid
java.lang.IllegalArgumentException: Wrong argument type for 'feedTitle' in argument bundle. string expected.
at androidx.navigation.NavDestination.addInDefaultArgs(SourceFile:167)
at androidx.navigation.NavController.navigate(SourceFile:102)
at com.nononsenseapps.feeder.ui.compose.navigation.AddFeedDestination.navigate(SourceFile:69)
at com.nononsenseapps.feeder.ui.compose.navigation.SearchFeedDestination.RegisterScreen$lambda$6$lambda$5(SourceFile:20)
at com.nononsenseapps.feeder.ui.compose.navigation.SearchFeedDestination.$r8$lambda$TdcUeNgoX6wgfmf4KSDzCVi6n88(SourceFile:1)
at com.nononsenseapps.feeder.ui.compose.navigation.FeedDestination$$ExternalSyntheticLambda1.invoke(SourceFile:1)
at com.nononsenseapps.feeder.ui.compose.searchfeed.SearchFeedScreenKt.rightContent$lambda$58$lambda$57(SourceFile:1)
at com.nononsenseapps.feeder.ui.compose.searchfeed.SearchFeedScreenKt.$r8$lambda$LWhRQvP786FX22jiLVVm-Yk0DYM(SourceFile:1)
at io.ktor.http.Url$$ExternalSyntheticLambda1.invoke(SourceFile:314)
at androidx.collection.ObjectList$toString$1.invoke(SourceFile:1201)
at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(SourceFile:131)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:9)
at kotlinx.coroutines.JobKt.resume(SourceFile:81)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(SourceFile:101)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$kotlinx_coroutines_core(SourceFile:33)
at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(SourceFile:17)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SourceFile:51)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SourceFile:32)
at androidx.compose.foundation.AbstractClickableNode.onPointerEvent-H0pRuoY(SourceFile:111)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(SourceFile:157)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(SourceFile:136)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(SourceFile:136)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(SourceFile:136)
at com.caverock.androidsvg.SVG.dispatchChanges(SourceFile:36)
at okhttp3.Cache$RealCacheRequest.process-BIzXfog(SourceFile:141)
at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(SourceFile:81)
at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(SourceFile:381)
at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(SourceFile:76)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2817)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2817)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2817)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2817)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:467)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1981)
at android.app.Activity.dispatchTouchEvent(Activity.java:4547)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:425)
at android.view.View.dispatchPointerEvent(View.java:16743)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8031)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7791)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7180)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7237)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7203)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7369)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7211)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7426)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7184)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7237)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7203)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7211)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7184)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:10319)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10270)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10238)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:10461)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:295)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:358)
at android.os.Looper.loopOnce(Looper.java:189)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8826)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:591)
at com.android.internal.os.ExecInit.main(ExecInit.java:50)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:369)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@3305a1d, androidx.compose.runtime.BroadcastFrameClock@6796492, StandaloneCoroutine{Cancelling}@9407e63, AndroidUiDispatcher@a8a2a60]
The feed is definitely wrong but Feeder still shouldn't crash.
Thanks for the info