From c16c5e4ca291f58b17defb70b8b13a48930612f9 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 10 May 2023 21:39:59 +0800 Subject: [PATCH] Special handling of the Open Original button --- .../omnivore/omnivore/ui/reader/WebReader.kt | 2 +- .../ui/reader/WebReaderLoadingContainer.kt | 6 ++--- .../omnivore/ui/reader/WebReaderViewModel.kt | 22 +++++++++++++------ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReader.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReader.kt index 7e2eb5cac..216942a75 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReader.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReader.kt @@ -71,7 +71,7 @@ fun WebReader( var handled: Boolean? = null request?.let { if ((request?.isForMainFrame == true) && (request?.hasGesture() == true) && viewModel != null) { - viewModel?.showOpenLinkSheet(request.url) + viewModel?.showOpenLinkSheet(context, request.url) handled = true } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderLoadingContainer.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderLoadingContainer.kt index e1bcccf68..44581b1bd 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderLoadingContainer.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderLoadingContainer.kt @@ -160,9 +160,9 @@ fun WebReaderLoadingContainer(slug: String? = null, requestID: String? = null, val modalBottomSheetState = rememberModalBottomSheetState( initialValue = ModalBottomSheetValue.Hidden, confirmStateChange = { -// if (it == ModalBottomSheetValue.Hidden) { -// webReaderViewModel.resetBottomSheet() -// } + if (it == ModalBottomSheetValue.Hidden) { + webReaderViewModel.resetBottomSheet() + } true } ) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt index 5ca0c49d2..ce81b62ff 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt @@ -7,8 +7,6 @@ import android.content.Intent import android.net.Uri import android.util.Log import android.widget.Toast -import androidx.compose.runtime.Composable -import androidx.compose.ui.platform.LocalContext import androidx.core.content.ContextCompat.startActivity import androidx.lifecycle.* import app.omnivore.omnivore.DatastoreKeys @@ -99,19 +97,29 @@ class WebReaderViewModel @Inject constructor( bottomSheetStateLiveData.postValue(BottomSheetState.NONE) } - fun showOpenLinkSheet(uri: Uri) { - currentLink = uri - bottomSheetStateLiveData.postValue(BottomSheetState.LINK) + fun showOpenLinkSheet(context: Context, uri: Uri) { + webReaderParamsLiveData.value?.let { + if (it.item.pageURLString == uri.toString()) { + openLink(context, uri) + } else { + currentLink = uri + bottomSheetStateLiveData.postValue(BottomSheetState.LINK) + } + } } fun openCurrentLink(context: Context) { currentLink?.let { - val browserIntent = Intent(Intent.ACTION_VIEW, it) - startActivity(context, browserIntent, null) + openLink(context, it) } bottomSheetStateLiveData.postValue(BottomSheetState.NONE) } + fun openLink(context: Context, uri: Uri) { + val browserIntent = Intent(Intent.ACTION_VIEW, uri) + startActivity(context, browserIntent, null) + } + fun saveCurrentLink(context: Context) { currentLink?.let { viewModelScope.launch {