From 5af0ce00ddfc0b83c81826aa171182f3b8acb559 Mon Sep 17 00:00:00 2001 From: Dima Date: Fri, 19 Apr 2024 18:04:56 +0900 Subject: [PATCH] Fix for the app starting from Share Screen on some devices when launched from home screen. Upping versionCode to 57. --- .../org/zotero/android/screens/root/RootActivity.kt | 2 +- .../org/zotero/android/screens/root/RootViewModel.kt | 10 +++++----- .../android/screens/share/ShareRawAttachmentLoader.kt | 9 +++++++++ buildSrc/src/main/kotlin/BuildConfig.kt | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/zotero/android/screens/root/RootActivity.kt b/app/src/main/java/org/zotero/android/screens/root/RootActivity.kt index a3292b0c..a0eff88a 100644 --- a/app/src/main/java/org/zotero/android/screens/root/RootActivity.kt +++ b/app/src/main/java/org/zotero/android/screens/root/RootActivity.kt @@ -18,7 +18,7 @@ class RootActivity : BaseActivity(), Screen { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - viewModel.init() + viewModel.init(this.intent.extras) viewModel.observeViewChanges(this) } diff --git a/app/src/main/java/org/zotero/android/screens/root/RootViewModel.kt b/app/src/main/java/org/zotero/android/screens/root/RootViewModel.kt index 8c0f6e9f..020b391a 100644 --- a/app/src/main/java/org/zotero/android/screens/root/RootViewModel.kt +++ b/app/src/main/java/org/zotero/android/screens/root/RootViewModel.kt @@ -1,26 +1,26 @@ package org.zotero.android.screens.root -import androidx.lifecycle.SavedStateHandle +import android.os.Bundle import dagger.hilt.android.lifecycle.HiltViewModel import org.zotero.android.architecture.BaseViewModel2 import org.zotero.android.architecture.ViewEffect import org.zotero.android.architecture.ViewState +import org.zotero.android.screens.share.ShareRawAttachmentLoader import org.zotero.android.sync.SessionController import javax.inject.Inject @HiltViewModel class RootViewModel @Inject constructor( private val sessionController: SessionController, - private val stateHandle: SavedStateHandle, - + private val shareRawAttachmentLoader: ShareRawAttachmentLoader ) : BaseViewModel2< RootViewState, RootViewEffect>(initialState = RootViewState()) { - fun init() { + fun init(extras: Bundle?) { if (!sessionController.isLoggedIn) { triggerEffect(RootViewEffect.NavigateToSignIn) - } else if (stateHandle.keys().isNotEmpty()) { + } else if (shareRawAttachmentLoader.doesBundleContainShareData(extras)) { triggerEffect(RootViewEffect.NavigateToShare) } else { triggerEffect(RootViewEffect.NavigateToDashboard) diff --git a/app/src/main/java/org/zotero/android/screens/share/ShareRawAttachmentLoader.kt b/app/src/main/java/org/zotero/android/screens/share/ShareRawAttachmentLoader.kt index b52651e0..11627925 100644 --- a/app/src/main/java/org/zotero/android/screens/share/ShareRawAttachmentLoader.kt +++ b/app/src/main/java/org/zotero/android/screens/share/ShareRawAttachmentLoader.kt @@ -49,4 +49,13 @@ class ShareRawAttachmentLoader @Inject constructor() { } } + fun doesBundleContainShareData(bundleExtras: Bundle?): Boolean { + if (bundleExtras == null) { + return false + } + val urlPath = bundleExtras.getString(Intent.EXTRA_TEXT) + val fileContentUri = bundleExtras.getSupportParcelable(Intent.EXTRA_STREAM, Uri::class.java) + return urlPath != null || fileContentUri != null + } + } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/BuildConfig.kt b/buildSrc/src/main/kotlin/BuildConfig.kt index ab8770f4..1f2aa645 100644 --- a/buildSrc/src/main/kotlin/BuildConfig.kt +++ b/buildSrc/src/main/kotlin/BuildConfig.kt @@ -4,7 +4,7 @@ object BuildConfig { const val compileSdkVersion = 34 const val targetSdk = 33 - val versionCode = 56 // Must be updated on every build + val versionCode = 57 // Must be updated on every build val version = Version( major = 1, minor = 0,