mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-16 19:05:27 -04:00
#2303 Impossible to surf on 3D printing SE ZIM file - minor refactor
This commit is contained in:
parent
2372ecda94
commit
f8c9c5b151
@ -746,6 +746,12 @@ public abstract class CoreReaderFragment extends BaseFragment
|
|||||||
AttributeSet attrs = StyleUtils.getAttributes(requireActivity(), R.xml.webview);
|
AttributeSet attrs = StyleUtils.getAttributes(requireActivity(), R.xml.webview);
|
||||||
KiwixWebView webView = createWebView(attrs);
|
KiwixWebView webView = createWebView(attrs);
|
||||||
loadUrl(url, webView);
|
loadUrl(url, webView);
|
||||||
|
setUpWebViewWithTextToSpeech();
|
||||||
|
documentParser.initInterface(webView);
|
||||||
|
new ServiceWorkerUninitialiser(() -> {
|
||||||
|
openMainPage();
|
||||||
|
return Unit.INSTANCE;
|
||||||
|
}).initInterface(webView);
|
||||||
return webView;
|
return webView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -761,26 +767,22 @@ public abstract class CoreReaderFragment extends BaseFragment
|
|||||||
return newTab(contentUrl(zimReaderContainer.getMainPage()));
|
return newTab(contentUrl(zimReaderContainer.getMainPage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected KiwixWebView newTab(String url) {
|
private KiwixWebView newTab(String url) {
|
||||||
KiwixWebView webView = initalizeWebView(url);
|
return newTab(url, true);
|
||||||
webViewList.add(webView);
|
|
||||||
selectTab(webViewList.size() - 1);
|
|
||||||
tabsAdapter.notifyDataSetChanged();
|
|
||||||
setUpWebViewWithTextToSpeech();
|
|
||||||
documentParser.initInterface(webView);
|
|
||||||
new ServiceWorkerUninitialiser(() -> {
|
|
||||||
openMainPage();
|
|
||||||
return Unit.INSTANCE;
|
|
||||||
}).initInterface(webView);
|
|
||||||
return webView;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void newTabInBackground(String url) {
|
private void newTabInBackground(String url) {
|
||||||
|
newTab(url, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private KiwixWebView newTab(String url, boolean selectTab) {
|
||||||
KiwixWebView webView = initalizeWebView(url);
|
KiwixWebView webView = initalizeWebView(url);
|
||||||
webViewList.add(webView);
|
webViewList.add(webView);
|
||||||
|
if(selectTab) {
|
||||||
|
selectTab(webViewList.size() - 1);
|
||||||
|
}
|
||||||
tabsAdapter.notifyDataSetChanged();
|
tabsAdapter.notifyDataSetChanged();
|
||||||
setUpWebViewWithTextToSpeech();
|
return webView;
|
||||||
documentParser.initInterface(webView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void closeTab(int index) {
|
private void closeTab(int index) {
|
||||||
@ -1047,7 +1049,7 @@ public abstract class CoreReaderFragment extends BaseFragment
|
|||||||
if (mainMenu != null) {
|
if (mainMenu != null) {
|
||||||
mainMenu.onFileOpened(urlIsValid());
|
mainMenu.onFileOpened(urlIsValid());
|
||||||
}
|
}
|
||||||
openUninitialiserPage();
|
openArticle(UNINITIALISER_ADDRESS);
|
||||||
safeDispose();
|
safeDispose();
|
||||||
bookmarkingDisposable = Flowable.combineLatest(
|
bookmarkingDisposable = Flowable.combineLatest(
|
||||||
newBookmarksDao.bookmarkUrlsForCurrentBook(zimFileReader),
|
newBookmarksDao.bookmarkUrlsForCurrentBook(zimFileReader),
|
||||||
@ -1067,10 +1069,6 @@ public abstract class CoreReaderFragment extends BaseFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openUninitialiserPage() {
|
|
||||||
openArticle(UNINITIALISER_ADDRESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void safeDispose() {
|
private void safeDispose() {
|
||||||
if (bookmarkingDisposable != null) {
|
if (bookmarkingDisposable != null) {
|
||||||
bookmarkingDisposable.dispose();
|
bookmarkingDisposable.dispose();
|
||||||
|
@ -24,13 +24,14 @@ import android.webkit.JavascriptInterface
|
|||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
|
|
||||||
const val UNINITIALISER_ADDRESS = "A/remove_service_workers.html"
|
const val UNINITIALISER_ADDRESS = "A/remove_service_workers.html"
|
||||||
|
private const val UNINITIALISER_INTERFACE = "ServiceWorkerUninitialiser"
|
||||||
const val UNINITIALISE_HTML = """
|
const val UNINITIALISE_HTML = """
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function do_unregister() {
|
function do_unregister() {
|
||||||
if (!navigator.serviceWorker) {
|
if (!navigator.serviceWorker) {
|
||||||
ServiceWorkerUninitialiser.onUninitialised();
|
$UNINITIALISER_INTERFACE.onUninitialised();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
navigator.serviceWorker.getRegistrations().then(async function (registrations) {
|
navigator.serviceWorker.getRegistrations().then(async function (registrations) {
|
||||||
@ -38,11 +39,11 @@ const val UNINITIALISE_HTML = """
|
|||||||
console.debug('we do have ' + registrations.length + ' registration(s)');
|
console.debug('we do have ' + registrations.length + ' registration(s)');
|
||||||
var registration = registrations[0];
|
var registration = registrations[0];
|
||||||
registration.unregister()
|
registration.unregister()
|
||||||
.then(function (success) { ServiceWorkerUninitialiser.onUninitialised();})
|
.then(function (success) { $UNINITIALISER_INTERFACE.onUninitialised();})
|
||||||
.catch(function (e) {alert("ERR:" + e)});
|
.catch(function (e) {alert("ERR:" + e)});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ServiceWorkerUninitialiser.onUninitialised();
|
$UNINITIALISER_INTERFACE.onUninitialised();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -74,13 +75,11 @@ const val UNINITIALISE_HTML = """
|
|||||||
class ServiceWorkerUninitialiser(val onUninitialisedAction: () -> Unit) {
|
class ServiceWorkerUninitialiser(val onUninitialisedAction: () -> Unit) {
|
||||||
|
|
||||||
fun initInterface(webView: WebView) {
|
fun initInterface(webView: WebView) {
|
||||||
webView.addJavascriptInterface(this, "ServiceWorkerUninitialiser")
|
webView.addJavascriptInterface(this, UNINITIALISER_INTERFACE)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JavascriptInterface
|
@JavascriptInterface
|
||||||
fun onUninitialised() {
|
fun onUninitialised() {
|
||||||
Handler(Looper.getMainLooper()).post {
|
Handler(Looper.getMainLooper()).post { onUninitialisedAction() }
|
||||||
onUninitialisedAction()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user