Refactor scripts
This commit is contained in:
@ -1,66 +1,25 @@
|
||||
import AnimeNotifier from "./AnimeNotifier"
|
||||
|
||||
export default class ServiceWorkerManager {
|
||||
arn: AnimeNotifier
|
||||
uri: string
|
||||
private arn: AnimeNotifier
|
||||
private uri: string
|
||||
|
||||
constructor(arn: AnimeNotifier, uri: string) {
|
||||
this.arn = arn
|
||||
this.uri = uri
|
||||
}
|
||||
|
||||
register() {
|
||||
public register() {
|
||||
if(!("serviceWorker" in navigator)) {
|
||||
console.warn("service worker not supported, skipping registration")
|
||||
return
|
||||
}
|
||||
|
||||
navigator.serviceWorker.register(this.uri)
|
||||
|
||||
navigator.serviceWorker.addEventListener("message", evt => {
|
||||
this.onMessage(evt)
|
||||
})
|
||||
|
||||
// This will send a message to the service worker that the DOM has been loaded
|
||||
const sendContentLoadedEvent = () => {
|
||||
if(!navigator.serviceWorker.controller) {
|
||||
return
|
||||
}
|
||||
|
||||
// A reloadContent call should never trigger another reload
|
||||
if(this.arn.app.currentPath === this.arn.lastReloadContentPath) {
|
||||
this.arn.lastReloadContentPath = ""
|
||||
return
|
||||
}
|
||||
|
||||
let url = ""
|
||||
|
||||
// If mainPageLoaded is set, it means every single request is now an AJAX request for the /_/ prefixed page
|
||||
if(this.arn.mainPageLoaded) {
|
||||
url = window.location.origin + "/_" + window.location.pathname
|
||||
} else {
|
||||
this.arn.mainPageLoaded = true
|
||||
url = window.location.href
|
||||
}
|
||||
|
||||
// console.log("checking for updates:", message.url)
|
||||
|
||||
this.postMessage({
|
||||
type: "loaded",
|
||||
url
|
||||
})
|
||||
}
|
||||
|
||||
// For future loaded events
|
||||
document.addEventListener("DOMContentLoaded", sendContentLoadedEvent)
|
||||
|
||||
// If the page is loaded already, send the loaded event right now.
|
||||
if(document.readyState !== "loading") {
|
||||
sendContentLoadedEvent()
|
||||
}
|
||||
navigator.serviceWorker.addEventListener("message", evt => this.onMessage(evt))
|
||||
}
|
||||
|
||||
postMessage(message: any) {
|
||||
public postMessage(message: any) {
|
||||
const controller = navigator.serviceWorker.controller
|
||||
|
||||
if(!controller) {
|
||||
@ -70,7 +29,7 @@ export default class ServiceWorkerManager {
|
||||
controller.postMessage(JSON.stringify(message))
|
||||
}
|
||||
|
||||
onMessage(evt: MessageEvent) {
|
||||
private onMessage(evt: MessageEvent) {
|
||||
const message = JSON.parse(evt.data)
|
||||
|
||||
switch(message.type) {
|
||||
@ -80,25 +39,6 @@ export default class ServiceWorkerManager {
|
||||
}
|
||||
|
||||
break
|
||||
|
||||
// case "new content":
|
||||
// if(message.url.includes("/_/")) {
|
||||
// // Content reload
|
||||
// this.arn.contentLoadedActions.then(() => {
|
||||
// this.arn.reloadContent(true)
|
||||
// })
|
||||
// } else {
|
||||
// // Full page reload
|
||||
// this.arn.contentLoadedActions.then(() => {
|
||||
// this.arn.reloadPage()
|
||||
// })
|
||||
// }
|
||||
|
||||
// break
|
||||
|
||||
// case "offline":
|
||||
// this.arn.statusMessage.showError("You are viewing an offline version of the site now.")
|
||||
// break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user