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;
}
}