1
0
mirror of https://github.com/comatory/fb2iCal synced 2025-06-05 22:09:25 +02:00

refactor: replace event list table with Svelte version

This commit is contained in:
Ondřej Synáček
2020-12-15 22:56:39 +01:00
parent 978662b55c
commit 0f21613e39
7 changed files with 34 additions and 174 deletions

View File

@@ -1,13 +1,8 @@
import { uuidv4, parseStartTimeFromiCalString } from './app/utils'
import {
migrateRecord,
getStorage,
getConfigStorage,
getStorageContents,
updateStorage,
updateConfigStorage,
saveRecord,
deleteRecord,
} from './app/storage'
import logger from './app/logger'
import { extractEventDataFromHTML } from '../../lib/services/ics-retriever'
@@ -18,53 +13,6 @@ import boot from '../frontend'
(() => {
document.addEventListener('DOMContentLoaded', boot)
const showTable = () => {
list.classList.remove('hidden')
}
const deleteTableRow = (id, row) => {
deleteRecord(id)
row.remove()
}
const insertTableRow = ({ id, link, createdAt, startTime, title }) => {
showTable()
const newRow = document.createElement('tr')
const startTimeCol = document.createElement('td')
startTimeCol.innerText = startTime ?
new Date(startTime).toLocaleString() :
'N/A\xa0\xa0\xa0\xa0\xa0'
const downloadEl = document.createElement('a')
downloadEl.setAttribute('href', link)
downloadEl.innerText = title
const titleCol = document.createElement('td')
titleCol.appendChild(downloadEl)
const deleteEl = document.createElement('a')
deleteEl.setAttribute('href', 'javascript:void(0)')
deleteEl.innerText = '✖︎'
deleteEl.classList.add('delete-record')
deleteEl.addEventListener('click', (event) => {
event.preventDefault()
deleteTableRow(id, newRow)
})
const actionCol = document.createElement('td')
actionCol.classList.add('actions')
actionCol.appendChild(deleteEl)
newRow.appendChild(startTimeCol)
newRow.appendChild(titleCol)
newRow.appendChild(actionCol)
tableBody.prepend(newRow)
}
const createRecord = (uri, summary, startTime) => {
const id = uuidv4()
const createdAt = new Date()
@@ -76,43 +24,6 @@ import boot from '../frontend'
startTime,
title: summary,
})
insertTableRow({
id,
link: uri,
createdAt,
title: summary,
startTime
})
}
const hydrateList = () => {
const prevStorage = getStorage()
const migratedStorageContents = getStorageContents(prevStorage).map((record) => {
return migrateRecord(record)
})
updateStorage(migratedStorageContents)
const storage = getStorage()
const storageContents = getStorageContents(storage)
if (storageContents.length > 0) {
showTable()
}
storageContents
.sort((a, b) => {
const aDate = new Date(a.createdAt)
const bDate = new Date(b.createdAt)
if (aDate < bDate) {
return -1
}
if (aDate > bDate) {
return 1
}
return 0
})
.forEach((record) => {
insertTableRow(record)
})
}
const configureLogger = (logger) => {
@@ -203,8 +114,6 @@ import boot from '../frontend'
const submitButton = document.querySelector("#submit")
const input = document.querySelector("#url")
const link = document.querySelector("#current-download")
const table = document.querySelector('#list')
const tableBody = table.querySelector('tbody')
if (window.navigator && window.navigator.serviceWorker) {
const serviceWorker = window.navigator.serviceWorker
@@ -240,7 +149,6 @@ import boot from '../frontend'
})
}
hydrateList()
configureLogger(logger)
const handleHTMLResponse = (html, url) => {