diff --git a/lib/frontend/actions/events.js b/lib/frontend/actions/events.js index ea00ac6..f89bcfa 100644 --- a/lib/frontend/actions/events.js +++ b/lib/frontend/actions/events.js @@ -1,7 +1,7 @@ import { postURL } from '../services' import { eventStore, parseStatusStore, requestStore } from '../stores' import { Request } from '../records' -import { uuidv4, parseStartTimeFromiCalString } from '../utils' +import { uuidv4, parseStartTimeFromiCalString, promptDownload } from '../utils' import { extractEventDataFromHTML } from '../../../lib/services/ics-retriever' import generateICS from '../../../lib/services/ics-generator' @@ -38,13 +38,6 @@ const createICS = async (html, url, { logger }) => { const dataUri = encodeURIComponent(text) const uri = `data:text/calendar;charset=utf-8,${dataUri}` - // TODO: create download link - // link.setAttribute('href', uri) - // link.setAttribute('download', 'download.ics') - // link.click() - - // input.value = '' - const summaryMatch = text.match(/SUMMARY:.*/)[0] const summary = summaryMatch ? summaryMatch.replace(/SUMMARY:/, '') : '' const startTimeMatches = text.match(/DTSTART:.*/) @@ -62,6 +55,8 @@ const createICS = async (html, url, { logger }) => { }) parseStatusStore.set(null) + + promptDownload(uri) } catch (err) { parseStatusStore.set(err) } diff --git a/lib/frontend/utils.js b/lib/frontend/utils.js index c9de08a..c396211 100644 --- a/lib/frontend/utils.js +++ b/lib/frontend/utils.js @@ -46,3 +46,12 @@ export const parseStartTimeFromiCalString = (text = '') => { return parsedDate.toString() } +export const promptDownload = (uri) => { + const link = document.getElementById('current-download') + + link.setAttribute('href', uri) + link.setAttribute('download', 'download.ics') + link.click() + + link.setAttribute('href', '') +}