#2303 Impossible to surf on 3D printing SE ZIM file - minor refactor

This commit is contained in:
Sean Mac Gillicuddy 2020-11-23 10:17:09 +00:00
parent 2372ecda94
commit f8c9c5b151
2 changed files with 23 additions and 26 deletions

View File

@ -746,6 +746,12 @@ public abstract class CoreReaderFragment extends BaseFragment
AttributeSet attrs = StyleUtils.getAttributes(requireActivity(), R.xml.webview);
KiwixWebView webView = createWebView(attrs);
loadUrl(url, webView);
setUpWebViewWithTextToSpeech();
documentParser.initInterface(webView);
new ServiceWorkerUninitialiser(() -> {
openMainPage();
return Unit.INSTANCE;
}).initInterface(webView);
return webView;
}
@ -761,26 +767,22 @@ public abstract class CoreReaderFragment extends BaseFragment
return newTab(contentUrl(zimReaderContainer.getMainPage()));
}
protected KiwixWebView newTab(String url) {
KiwixWebView webView = initalizeWebView(url);
webViewList.add(webView);
selectTab(webViewList.size() - 1);
tabsAdapter.notifyDataSetChanged();
setUpWebViewWithTextToSpeech();
documentParser.initInterface(webView);
new ServiceWorkerUninitialiser(() -> {
openMainPage();
return Unit.INSTANCE;
}).initInterface(webView);
return webView;
private KiwixWebView newTab(String url) {
return newTab(url, true);
}
private void newTabInBackground(String url) {
newTab(url, false);
}
private KiwixWebView newTab(String url, boolean selectTab) {
KiwixWebView webView = initalizeWebView(url);
webViewList.add(webView);
if(selectTab) {
selectTab(webViewList.size() - 1);
}
tabsAdapter.notifyDataSetChanged();
setUpWebViewWithTextToSpeech();
documentParser.initInterface(webView);
return webView;
}
private void closeTab(int index) {
@ -1047,7 +1049,7 @@ public abstract class CoreReaderFragment extends BaseFragment
if (mainMenu != null) {
mainMenu.onFileOpened(urlIsValid());
}
openUninitialiserPage();
openArticle(UNINITIALISER_ADDRESS);
safeDispose();
bookmarkingDisposable = Flowable.combineLatest(
newBookmarksDao.bookmarkUrlsForCurrentBook(zimFileReader),
@ -1067,10 +1069,6 @@ public abstract class CoreReaderFragment extends BaseFragment
}
}
private void openUninitialiserPage() {
openArticle(UNINITIALISER_ADDRESS);
}
private void safeDispose() {
if (bookmarkingDisposable != null) {
bookmarkingDisposable.dispose();

View File

@ -24,13 +24,14 @@ import android.webkit.JavascriptInterface
import android.webkit.WebView
const val UNINITIALISER_ADDRESS = "A/remove_service_workers.html"
private const val UNINITIALISER_INTERFACE = "ServiceWorkerUninitialiser"
const val UNINITIALISE_HTML = """
<html>
<head>
<script type="text/javascript">
function do_unregister() {
if (!navigator.serviceWorker) {
ServiceWorkerUninitialiser.onUninitialised();
$UNINITIALISER_INTERFACE.onUninitialised();
return;
}
navigator.serviceWorker.getRegistrations().then(async function (registrations) {
@ -38,11 +39,11 @@ const val UNINITIALISE_HTML = """
console.debug('we do have ' + registrations.length + ' registration(s)');
var registration = registrations[0];
registration.unregister()
.then(function (success) { ServiceWorkerUninitialiser.onUninitialised();})
.then(function (success) { $UNINITIALISER_INTERFACE.onUninitialised();})
.catch(function (e) {alert("ERR:" + e)});
}
else {
ServiceWorkerUninitialiser.onUninitialised();
$UNINITIALISER_INTERFACE.onUninitialised();
}
});
}
@ -74,13 +75,11 @@ const val UNINITIALISE_HTML = """
class ServiceWorkerUninitialiser(val onUninitialisedAction: () -> Unit) {
fun initInterface(webView: WebView) {
webView.addJavascriptInterface(this, "ServiceWorkerUninitialiser")
webView.addJavascriptInterface(this, UNINITIALISER_INTERFACE)
}
@JavascriptInterface
fun onUninitialised() {
Handler(Looper.getMainLooper()).post {
onUninitialisedAction()
}
Handler(Looper.getMainLooper()).post { onUninitialisedAction() }
}
}