import { importSettingsFromJSON, exportSettingsToJSON } from '../scripts/settings.js'; export default class ImportExport extends FormApplication { static get defaultOptions() { return mergeObject(super.defaultOptions, { id: 'token-variants-import-export', classes: ['sheet'], template: 'modules/token-variants/templates/importExport.html', resizable: false, minimizable: false, title: 'Import/Export', width: 250, }); } /** * @param {JQuery} html */ activateListeners(html) { super.activateListeners(html); html.find('.import').click(this._importFromJSONDialog.bind(this)); html.find('.export').click(() => { exportSettingsToJSON(); this.close(); }); } async _importFromJSONDialog() { const content = await renderTemplate('templates/apps/import-data.html', { entity: 'token-variants', name: 'settings', }); let dialog = new Promise((resolve, reject) => { new Dialog( { title: game.i18n.localize('token-variants.settings.import-export.window.import-dialog'), content: content, buttons: { import: { icon: '', label: game.i18n.localize('token-variants.common.import'), callback: (html) => { const form = html.find('form')[0]; if (!form.data.files.length) return ui.notifications?.error('You did not upload a data file!'); readTextFromFile(form.data.files[0]).then((json) => { importSettingsFromJSON(json); resolve(true); }); }, }, no: { icon: '', label: 'Cancel', callback: (html) => resolve(false), }, }, default: 'import', }, { width: 400, } ).render(true); }); this.close(); return await dialog; } }