From 6858b32f2b3f7d191f807a609a04e6d074705ed2 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Fri, 6 Sep 2024 15:17:35 +0200 Subject: [PATCH] fix NPE when baseUrl is missing no idea how this happens, however this was reported via gplay pre launch report for 20.0.0RC1 ("Detected on 10 devices during testing"): Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.nextcloud.talk.data.user.model.User.getBaseUrl()' on a null object reference at com.nextcloud.talk.activities.BaseActivity.startActivity (BaseActivity.kt:240) at com.nextcloud.talk.account.ServerSelectionActivity.showVisitProvidersInfo$lambda$5 (ServerSelectionActivity.kt:206) at com.nextcloud.talk.account.ServerSelectionActivity.$r8$lambda$pjpPT-LQbGLSCJPXeRE8IJvpLIE at com.nextcloud.talk.account.ServerSelectionActivity$$ExternalSyntheticLambda0.onClick (D8$$SyntheticClass) at android.view.View.performClick (View.java:7506) at android.view.View.performClickInternal (View.java:7483) at android.view.View.-$$Nest$mperformClickInternal at android.view.View$PerformClick.run (View.java:29335) at android.os.Handler.handleCallback (Handler.java:942) at android.os.Handler.dispatchMessage (Handler.java:99) at androidx.test.espresso.base.Interrogator.loopAndInterrogate (Interrogator.java:10) at androidx.test.espresso.base.UiControllerImpl.loopUntil (UiControllerImpl.java:7) at androidx.test.espresso.base.UiControllerImpl.loopUntil (UiControllerImpl.java:1) at androidx.test.espresso.base.UiControllerImpl.injectMotionEvent (UiControllerImpl.java:5) at androidx.test.espresso.action.MotionEvents.sendUp (MotionEvents.java:6) at androidx.test.espresso.action.MotionEvents.sendUp (MotionEvents.java:1) at androidx.test.espresso.action.Tap.sendSingleTap (Tap.java:5) at androidx.test.espresso.action.Tap.-$$Nest$smsendSingleTap at androidx.test.espresso.action.Tap$1.sendTap (Tap.java:1) at androidx.test.espresso.action.GeneralClickAction.perform (GeneralClickAction.java:4) at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform (ViewInteraction.java:2) at androidx.test.espresso.ViewInteraction.doPerform (ViewInteraction.java:23) at androidx.test.espresso.ViewInteraction.-$$Nest$mdoPerform at androidx.test.espresso.ViewInteraction$1.call (ViewInteraction.java:6) at androidx.test.espresso.ViewInteraction$1.call (ViewInteraction.java:1) at java.util.concurrent.FutureTask.run (FutureTask.java:264) at android.os.Handler.handleCallback (Handler.java:942) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:201) at android.os.Looper.loop (Looper.java:288) at android.app.ActivityThread.main (ActivityThread.java:7898) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936) If baseUrl is really missing this may lead to followup issues, however this maybe only 'happens' in gplay pre launch report without any real world scenario. A best solution may be to make baseUrl not nullable, but don't want to do this on short term before release.. Signed-off-by: Marcel Hibbe --- app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt index 0f16bd5027..1f8d2916a2 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt @@ -237,7 +237,7 @@ open class BaseActivity : AppCompatActivity() { val user = currentUserProvider.currentUser.blockingGet() if (intent.data != null && TextUtils.equals(intent.action, Intent.ACTION_VIEW)) { val uri = intent.data.toString() - if (uri.startsWith(user.baseUrl!!)) { + if (user?.baseUrl != null && uri.startsWith(user.baseUrl!!)) { if (UriUtils.isInstanceInternalFileShareUrl(user.baseUrl!!, uri)) { // https://cloud.nextcloud.com/f/41 val fileViewerUtils = FileViewerUtils(applicationContext, user)