1
0
mirror of https://github.com/comatory/fb2iCal synced 2025-06-05 22:09:25 +02:00
Files
Facebook-Events-iCal-Converter/lib/static/index.js
Ondřej Synáček b28995aa1e feature: convert form input to Svelte component and create module for
fetching event data & parsing it
2020-12-20 13:50:12 +01:00

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)
})()