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 fbb10bfdf..ededf42ad 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 @@ -10,9 +10,11 @@ import android.view.* import android.webkit.JavascriptInterface import android.webkit.WebView import android.webkit.WebViewClient +import androidx.activity.compose.LocalOnBackPressedDispatcherOwner import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.* import androidx.compose.foundation.verticalScroll +import androidx.compose.material.ModalBottomSheetValue import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Menu @@ -30,6 +32,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import app.omnivore.omnivore.R +import app.omnivore.omnivore.ui.save.SaveSheetActivityBase import app.omnivore.omnivore.ui.savedItemViews.SavedItemContextMenu import com.google.gson.Gson import kotlinx.coroutines.CoroutineScope @@ -41,11 +44,14 @@ import kotlin.math.roundToInt @Composable fun WebReaderLoadingContainer(slug: String, webReaderViewModel: WebReaderViewModel) { + val onBackPressedDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher + var isMenuExpanded by remember { mutableStateOf(false) } var showWebPreferencesDialog by remember { mutableStateOf(false ) } val webReaderParams: WebReaderParams? by webReaderViewModel.webReaderParamsLiveData.observeAsState(null) val annotation: String? by webReaderViewModel.annotationLiveData.observeAsState(null) + val shouldPopView: Boolean by webReaderViewModel.shouldPopViewLiveData.observeAsState(false) val maxToolbarHeight = 48.dp val maxToolbarHeightPx = with(LocalDensity.current) { maxToolbarHeight.roundToPx().toFloat() } @@ -140,6 +146,12 @@ fun WebReaderLoadingContainer(slug: String, webReaderViewModel: WebReaderViewMod ) } } + + LaunchedEffect(shouldPopView) { + if (shouldPopView) { + onBackPressedDispatcher?.onBackPressed() + } + } } else { // TODO: add a proper loading view Text("Loading...") 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 ac9fc7f21..3cde695de 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 @@ -43,6 +43,7 @@ class WebReaderViewModel @Inject constructor( val webReaderParamsLiveData = MutableLiveData(null) val annotationLiveData = MutableLiveData(null) val javascriptActionLoopUUIDLiveData = MutableLiveData(lastJavascriptActionLoopUUID) + val shouldPopViewLiveData = MutableLiveData(false) var hasTappedExistingHighlight = false var lastTapCoordinates: TapCoordinates? = null @@ -95,28 +96,27 @@ class WebReaderViewModel @Inject constructor( SavedItemAction.Delete -> { viewModelScope.launch { dataService.deleteSavedItem(itemID) - popToLibraryView(itemID) + popToLibraryView() } } SavedItemAction.Archive -> { viewModelScope.launch { dataService.archiveSavedItem(itemID) - popToLibraryView(itemID) + popToLibraryView() } } SavedItemAction.Unarchive -> { viewModelScope.launch { dataService.unarchiveSavedItem(itemID) - popToLibraryView(itemID) + popToLibraryView() } } } } - private fun popToLibraryView(itemID: String) { + private fun popToLibraryView() { CoroutineScope(Dispatchers.Main).launch { - // TODO: pop to library - Log.d("maxx", "should pop to library and remove item with ID: $itemID") + shouldPopViewLiveData.postValue(true) } } @@ -172,6 +172,7 @@ class WebReaderViewModel @Inject constructor( } fun reset() { + shouldPopViewLiveData.postValue(false) webReaderParamsLiveData.value = null annotationLiveData.value = null scrollState = ScrollState(0)