MainActivity: fix issue with going back
This commit is contained in:
parent
6a65df0f4e
commit
9743fea7d5
|
@ -35,9 +35,6 @@ class MainActivity : AppCompatActivity(), ContentAdapter.ContentAdapterListen {
|
||||||
/** A non-saved list of visited URLs. Not an history, just used for going back. */
|
/** A non-saved list of visited URLs. Not an history, just used for going back. */
|
||||||
private val visitedUrls = mutableListOf<String>()
|
private val visitedUrls = mutableListOf<String>()
|
||||||
|
|
||||||
/** Are we going back? */
|
|
||||||
private var goingBack = false
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
@ -71,15 +68,13 @@ class MainActivity : AppCompatActivity(), ContentAdapter.ContentAdapterListen {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
if (visitedUrls.isNotEmpty()) {
|
visitedUrls.removeLastOrNull() // Always remove current page first.
|
||||||
if (visitedUrls.size > 1)
|
val previousUrl = visitedUrls.removeLastOrNull()
|
||||||
visitedUrls.removeLast()
|
if (previousUrl != null)
|
||||||
goingBack = true
|
openUrl(previousUrl)
|
||||||
openUrl(visitedUrls.removeLast())
|
else
|
||||||
} else {
|
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onLinkClick(url: String) {
|
override fun onLinkClick(url: String) {
|
||||||
openUrl(url, base = if (currentUrl.isNotEmpty()) currentUrl else null)
|
openUrl(url, base = if (currentUrl.isNotEmpty()) currentUrl else null)
|
||||||
|
@ -126,9 +121,6 @@ class MainActivity : AppCompatActivity(), ContentAdapter.ContentAdapterListen {
|
||||||
if (!event.handled) {
|
if (!event.handled) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is PageViewModel.SuccessEvent -> {
|
is PageViewModel.SuccessEvent -> {
|
||||||
if (goingBack)
|
|
||||||
goingBack = false
|
|
||||||
else
|
|
||||||
visitedUrls.add(event.uri)
|
visitedUrls.add(event.uri)
|
||||||
}
|
}
|
||||||
is PageViewModel.FailureEvent -> {
|
is PageViewModel.FailureEvent -> {
|
||||||
|
@ -243,6 +235,8 @@ class MainActivity : AppCompatActivity(), ContentAdapter.ContentAdapterListen {
|
||||||
}
|
}
|
||||||
lines.postValue(linesList)
|
lines.postValue(linesList)
|
||||||
|
|
||||||
|
// We record the history entry here: it's nice because we have the main title available
|
||||||
|
// and we're already in a coroutine for database access.
|
||||||
History.record(uri.toString(), mainTitle)
|
History.record(uri.toString(), mainTitle)
|
||||||
event.postValue(SuccessEvent(uri.toString()))
|
event.postValue(SuccessEvent(uri.toString()))
|
||||||
state.postValue(State.IDLE)
|
state.postValue(State.IDLE)
|
||||||
|
|
Reference in a new issue