import { t } from "../../services/i18n.js"; import utils from '../../services/utils.js'; import treeService from "../../services/tree.js"; import importService from "../../services/import.js"; import options from "../../services/options.js"; import BasicWidget from "../basic_widget.js"; const TPL = ` `; export default class UploadAttachmentsDialog extends BasicWidget { constructor() { super(); this.parentNoteId = null; } doRender() { this.$widget = $(TPL); this.modal = bootstrap.Modal.getOrCreateInstance(this.$widget); this.$form = this.$widget.find(".upload-attachment-form"); this.$noteTitle = this.$widget.find(".upload-attachment-note-title"); this.$fileUploadInput = this.$widget.find(".upload-attachment-file-upload-input"); this.$uploadButton = this.$widget.find(".upload-attachment-button"); this.$shrinkImagesCheckbox = this.$widget.find(".shrink-images-checkbox"); this.$form.on('submit', () => { // disabling so that import is not triggered again. this.$uploadButton.attr("disabled", "disabled"); this.uploadAttachments(this.parentNoteId); return false; }); this.$fileUploadInput.on('change', () => { if (this.$fileUploadInput.val()) { this.$uploadButton.removeAttr("disabled"); } else { this.$uploadButton.attr("disabled", "disabled"); } }); bootstrap.Tooltip.getOrCreateInstance(this.$widget.find('[data-bs-toggle="tooltip"]'), { html: true }); } async showUploadAttachmentsDialogEvent({ noteId }) { this.parentNoteId = noteId; this.$fileUploadInput.val('').trigger('change'); // to trigger upload button disabling listener below this.$shrinkImagesCheckbox.prop("checked", options.is('compressImages')); this.$noteTitle.text(await treeService.getNoteTitle(this.parentNoteId)); utils.openDialog(this.$widget); } async uploadAttachments(parentNoteId) { const files = Array.from(this.$fileUploadInput[0].files); // shallow copy since we're resetting the upload button below const boolToString = $el => $el.is(":checked") ? "true" : "false"; const options = { shrinkImages: boolToString(this.$shrinkImagesCheckbox), }; this.modal.hide(); await importService.uploadFiles('attachments', parentNoteId, files, options); } }