diff --git a/src/fileUtilities.js b/src/fileUtilities.js new file mode 100644 index 0000000..db98ed2 --- /dev/null +++ b/src/fileUtilities.js @@ -0,0 +1,17 @@ +export default { + exportToFile (str, fileName, type = 'octet/stream') { + // Create downloader + const downloader = document.createElement('a') + const blob = new Blob([str], { type }) + const url = URL.createObjectURL(blob) + downloader.href = url + downloader.download = fileName + + // Trigger click + downloader.click() + + // Clean up + URL.revokeObjectURL(url) + downloader.remove() + } +} diff --git a/src/storedQueries.js b/src/storedQueries.js index 34291d9..7fde521 100644 --- a/src/storedQueries.js +++ b/src/storedQueries.js @@ -65,24 +65,6 @@ export default { return JSON.stringify(preparedData, null, 4) }, - exportQueries (str, fileName, type = 'octet/stream') { - // Create downloader - const downloader = document.createElement('a') - - // const name = data.name || 'My sqlitevis queries' - const blob = new Blob([str], { type }) - const url = URL.createObjectURL(blob) - downloader.href = url - downloader.download = fileName - - // Trigger click - downloader.click() - - // Clean up - URL.revokeObjectURL(url) - downloader.remove() - }, - /** * It calls onSuccess with imported queries as argument when * file read. We can't use Promises here because we can't diff --git a/src/views/MyQueries.vue b/src/views/MyQueries.vue index 0a92c3c..f254270 100644 --- a/src/views/MyQueries.vue +++ b/src/views/MyQueries.vue @@ -157,6 +157,7 @@ import TextField from '@/components/TextField' import CheckBox from '@/components/CheckBox' import tooltipMixin from '@/mixins/tooltips' import storedQueries from '@/storedQueries' +import fu from '@/fileUtilities' export default { name: 'MyQueries', @@ -350,7 +351,7 @@ export default { }, exportToFile (queryList, fileName) { const jsonStr = storedQueries.serialiseQueries(queryList) - storedQueries.exportQueries(jsonStr, fileName) + fu.exportToFile(jsonStr, fileName) }, exportSelectedQueries () { const queryList = this.selectAll