123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import browser from 'webextension-polyfill';
- import { default as dataExporter, files } from '@/utils/dataExporter';
- async function exportData({ data, id }, { refData }) {
- const dataToExport = data.dataToExport || 'data-columns';
- let payload = refData.table;
- if (dataToExport === 'google-sheets') {
- payload = refData.googleSheets[data.refKey] || [];
- } else if (dataToExport === 'variable') {
- payload = refData.variables[data.variableName] || [];
- if (!Array.isArray(payload)) {
- payload = [payload];
- if (data.type === 'csv' && typeof payload[0] !== 'object')
- payload = [payload];
- }
- }
- const hasDownloadAccess = await browser.permissions.contains({
- permissions: ['downloads'],
- });
- const blobUrl = dataExporter(payload, {
- ...data,
- csvOptions: {
- delimiter: data.csvDelimiter || ',',
- },
- returnUrl: hasDownloadAccess,
- });
- if (hasDownloadAccess) {
- const filename = `${data.name || 'unnamed'}${files[data.type].ext}`;
- const options = {
- filename,
- conflictAction: data.onConflict || 'uniquify',
- };
- await browser.downloads.download({
- ...options,
- url: blobUrl,
- });
- }
- return {
- data: '',
- nextBlockId: this.getBlockConnections(id),
- };
- }
- export default exportData;
|