diff --git a/lib/frontend/records/index.js b/lib/frontend/records/index.js new file mode 100644 index 0000000..5903ca9 --- /dev/null +++ b/lib/frontend/records/index.js @@ -0,0 +1,5 @@ +import Request from './request' + +export { + Request, +} diff --git a/lib/frontend/records/request.js b/lib/frontend/records/request.js new file mode 100644 index 0000000..92f38a0 --- /dev/null +++ b/lib/frontend/records/request.js @@ -0,0 +1,9 @@ +export default class Request { + constructor({ + id, + error, + }) { + this.id = id + this.error = error + } +} diff --git a/lib/frontend/stores/index.js b/lib/frontend/stores/index.js index b9c77fa..86dbb6c 100644 --- a/lib/frontend/stores/index.js +++ b/lib/frontend/stores/index.js @@ -1,7 +1,9 @@ import configStore from './configStore' import eventStore from './eventStore' +import requestStore from './requestStore' export { configStore, eventStore, + requestStore, } diff --git a/lib/frontend/stores/requestStore.js b/lib/frontend/stores/requestStore.js new file mode 100644 index 0000000..8a3735d --- /dev/null +++ b/lib/frontend/stores/requestStore.js @@ -0,0 +1,3 @@ +import { writable } from 'svelte/store' + +export default writable(null) diff --git a/lib/static/index.js b/lib/static/index.js index c86de65..73c44e6 100644 --- a/lib/static/index.js +++ b/lib/static/index.js @@ -9,8 +9,16 @@ 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 createRecord = (uri, summary, startTime) => { @@ -73,17 +81,29 @@ import boot from '../frontend' input.disabled = true submitButton.disabled = true setStatusDownloading() + + requestStore.set(new Request({ + id: uuidv4(), + error: null, + })) } const finishedRequest = () => { input.disabled = false submitButton.disabled = false clearStatuses() + + requestStore.set(null) } const handleError = (error) => { finishedRequest() setStatusError(error) + + requestStore.update((prevRequest) => { + prevRequest.error = error + return prevRequest + }) } const postURL = (data) => {