taro-hooks
Version:
为 Taro 而设计的 Hooks Library
75 lines (74 loc) • 2.9 kB
JavaScript
var _excluded = ["progress", "headersReceive", "afterSend"],
_excluded2 = ["afterSend"];
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
Object.defineProperty(exports, "__esModule", {
value: true
});
var taro_1 = require("@tarojs/taro");
var tool_1 = require("../utils/tool");
function useFile() {
var upload = function upload(option) {
return new Promise(function (resolve, reject) {
try {
var _filterOptions = filterOptions(option),
uploadOption = _filterOptions[0],
listenOptions = _filterOptions[1];
var uploadTask = (0, taro_1.uploadFile)(_extends({}, uploadOption || {}, {
success: resolve,
fail: reject
}));
autoListenWithTask(uploadTask, listenOptions);
} catch (e) {
reject((0, tool_1.generateGeneralFail)('uploadFile', e.message));
}
});
};
var download = function download(option) {
return new Promise(function (resolve, reject) {
try {
var _filterOptions2 = filterOptions(option),
downloadOption = _filterOptions2[0],
listenOptions = _filterOptions2[1];
var downloadTask = (0, taro_1.downloadFile)(_extends({}, downloadOption || {}, {
success: resolve,
fail: reject
}));
autoListenWithTask(downloadTask, listenOptions);
} catch (e) {
reject((0, tool_1.generateGeneralFail)('downloadFile', e.message));
}
});
};
return {
upload: upload,
download: download
};
}
exports["default"] = useFile;
function filterOptions(options) {
var progress = options.progress,
headersReceive = options.headersReceive,
afterSend = options.afterSend,
normalOption = _objectWithoutPropertiesLoose(options, _excluded);
var listenOptions = {
progress: progress,
headersReceive: headersReceive,
afterSend: afterSend
};
return [normalOption, listenOptions];
}
function autoListenWithTask(task, listenOptions) {
var afterSend = listenOptions.afterSend,
eventListener = _objectWithoutPropertiesLoose(listenOptions, _excluded2);
afterSend == null ? void 0 : afterSend(task);
Object.entries(eventListener).filter(function (v) {
return v[1];
}).forEach(function (_ref) {
var _task$eventName;
var eventName = _ref[0],
eventHandler = _ref[1];
return task == null ? void 0 : (_task$eventName = task[eventName]) == null ? void 0 : _task$eventName.call(task, eventHandler);
});
}
;