cloudcmd/client/modules/cloud.js
2018-06-22 11:22:42 +03:00

69 lines
1.4 KiB
JavaScript

/* global CloudCmd, filepicker */
'use strict';
const exec = require('execon');
const currify = require('currify/legacy');
const {promisify} = require('es6-promisify');
const {log} = CloudCmd;
const load = require('../dom/load');
const Files = require('../dom/files');
const Images = require('../dom/images');
const upload = currify(_upload);
const Name = 'Cloud';
CloudCmd[Name] = module.exports;
module.exports.init = async () => {
await loadFiles();
};
module.exports.uploadFile = (filename, data) => {
const mimetype = '';
filepicker.store(data, {
mimetype,
filename,
}, (fpFile) => {
filepicker.exportFile(fpFile, log, log);
});
};
module.exports.saveFile = (callback) => {
filepicker.pick(upload(callback));
};
function _upload(callback, file) {
const {
url,
filename,
} = file;
const responseType = 'arraybuffer';
const success = exec.with(callback, filename);
load.ajax({
url,
responseType,
success,
});
}
const loadFiles = promisify((callback) => {
const js = '//api.filepicker.io/v2/filepicker.js';
load.js(js, () => {
Files.get('modules', (error, modules) => {
const {key} = modules.data.FilePicker;
filepicker.setKey(key);
Images.hide();
exec(callback);
});
});
});