pop web reader when un/archive or delete action is selected from the reader view

This commit is contained in:
Satindar Dhillon 2023-01-17 13:24:56 -08:00
parent 7d20c6ca91
commit 23f1ccde1e
2 changed files with 19 additions and 6 deletions

View file

@ -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...")

View file

@ -43,6 +43,7 @@ class WebReaderViewModel @Inject constructor(
val webReaderParamsLiveData = MutableLiveData<WebReaderParams?>(null)
val annotationLiveData = MutableLiveData<String?>(null)
val javascriptActionLoopUUIDLiveData = MutableLiveData(lastJavascriptActionLoopUUID)
val shouldPopViewLiveData = MutableLiveData<Boolean>(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)