mirror of
https://github.com/comatory/fb2iCal
synced 2025-06-05 22:09:25 +02:00
91 lines
2.5 KiB
JavaScript
91 lines
2.5 KiB
JavaScript
import { uuidv4, parseStartTimeFromiCalString } from './app/utils'
|
|
import {
|
|
getConfigStorage,
|
|
getStorageContents,
|
|
saveRecord,
|
|
} from './app/storage'
|
|
import logger from './app/logger'
|
|
import { extractEventDataFromHTML } from '../../lib/services/ics-retriever'
|
|
import generateICS from '../../lib/services/ics-generator'
|
|
|
|
import boot from '../frontend'
|
|
import { requestStore } from '../frontend/stores'
|
|
import { Request } from '../frontend/records'
|
|
|
|
(() => {
|
|
let request = null
|
|
|
|
requestStore.subscribe((updatedRequest) => {
|
|
request = updatedRequest
|
|
})
|
|
|
|
document.addEventListener('DOMContentLoaded', boot)
|
|
|
|
const configureLogger = (logger) => {
|
|
if (!logger) {
|
|
return
|
|
}
|
|
|
|
const prevStorage = getConfigStorage()
|
|
const storageContents = getStorageContents(prevStorage)
|
|
|
|
const shouldTrack = Boolean(storageContents.track)
|
|
|
|
logger.setRemoteLogging(shouldTrack)
|
|
}
|
|
|
|
const clearStatuses = () => {
|
|
document.querySelectorAll('.status-item').forEach((item) => {
|
|
item.classList.remove('show')
|
|
})
|
|
}
|
|
|
|
const setServiceWorkerStatus = (status) => {
|
|
clearStatuses()
|
|
const sw = document.querySelector('#service-worker')
|
|
sw.innerText = status
|
|
status ? sw.classList.add('show') : sw.classList.remove('show')
|
|
}
|
|
|
|
const form = document.querySelector('form')
|
|
const submitButton = document.querySelector("#submit")
|
|
const input = document.querySelector("#url")
|
|
const link = document.querySelector("#current-download")
|
|
|
|
if (window.navigator && window.navigator.serviceWorker) {
|
|
const serviceWorker = window.navigator.serviceWorker
|
|
serviceWorker.register('sw.js', {
|
|
scope: './',
|
|
}).then((registration) => {
|
|
setServiceWorkerStatus(`Service worker registered with scope ${registration.scope}`)
|
|
setTimeout(() => {
|
|
setServiceWorkerStatus('')
|
|
}, 4500)
|
|
|
|
registration.addEventListener('updatefound', () => {
|
|
console.info('Service worker will be updated...')
|
|
const newWorker = registration.installing
|
|
|
|
newWorker.addEventListener('statechange', () => {
|
|
if (newWorker.state === 'installed') {
|
|
newWorker.postMessage({ action: 'skipWaiting' })
|
|
}
|
|
})
|
|
})
|
|
}).catch((err) => {
|
|
setServiceWorkerStatus(`Service worker error: ${err.toString()}`)
|
|
})
|
|
|
|
let refreshing
|
|
serviceWorker.addEventListener('controllerchange', () => {
|
|
if (refreshing) {
|
|
return
|
|
}
|
|
window.location.reload()
|
|
refreshing = true
|
|
})
|
|
}
|
|
|
|
configureLogger(logger)
|
|
})()
|