diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/ServiceWorkerInitialiser.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/ServiceWorkerInitialiser.kt index 707dd32d6..4d44fafd1 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/ServiceWorkerInitialiser.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/ServiceWorkerInitialiser.kt @@ -26,6 +26,29 @@ import androidx.webkit.WebViewFeature import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer import javax.inject.Inject +const val UNREGISTER_SERVICE_WORKER_JS = + """ + console.log('Commencing deregistration'); + navigator.serviceWorker.getRegistrations().then(function (registrations) { + if (!registrations.length) { + console.log('No serviceWorker registrations found.') + return + } + for(let registration of registrations) { + alert('Attempting to unregister Service Worker' + registration.index); + registration.unregister().then(function (boolean) { + console.log( + (boolean ? 'Successfully unregistered' : 'Failed to unregister'), 'ServiceWorkerRegistration\n' + + (registration.installing ? ' .installing.scriptURL = ' + registration.installing.scriptURL + '\n' : '') + + (registration.waiting ? ' .waiting.scriptURL = ' + registration.waiting.scriptURL + '\n' : '') + + (registration.active ? ' .active.scriptURL = ' + registration.active.scriptURL + '\n' : '') + + ' .scope: ' + registration.scope + '\n' + ) + }) + } + }).catch(function(err) { console.error(err); }); + """ + class ServiceWorkerInitialiser @Inject constructor(zimReaderContainer: ZimReaderContainer) { init { if (WebViewFeature.isFeatureSupported(WebViewFeature.SERVICE_WORKER_BASIC_USAGE)) { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java index 40f3254f9..670967501 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java @@ -124,6 +124,7 @@ import org.kiwix.kiwixmobile.core.utils.files.FileUtils; import static android.app.Activity.RESULT_CANCELED; import static android.app.Activity.RESULT_OK; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static org.kiwix.kiwixmobile.core.ServiceWorkerInitialiserKt.UNREGISTER_SERVICE_WORKER_JS; import static org.kiwix.kiwixmobile.core.downloader.fetch.FetchDownloadNotificationManagerKt.DOWNLOAD_NOTIFICATION_TITLE; import static org.kiwix.kiwixmobile.core.page.history.HistoryFragmentKt.USER_CLEARED_HISTORY; import static org.kiwix.kiwixmobile.core.page.history.adapter.HistoryListItem.HistoryItem; @@ -729,6 +730,11 @@ public abstract class CoreReaderFragment extends BaseFragment tabCallback = null; hideBackToTopTimer.cancel(); hideBackToTopTimer = null; + for (KiwixWebView kiwixWebView : webViewList) { + kiwixWebView.evaluateJavascript(UNREGISTER_SERVICE_WORKER_JS, + value -> Log.e("SERVICE_WORKER_UNREGISTER", value)); + kiwixWebView.loadUrl("javascript:"+UNREGISTER_SERVICE_WORKER_JS); + } webViewList.clear(); actionBar = null; mainMenu = null;