refactor: delegate upload files orchestration
This commit is contained in:
@@ -298,6 +298,36 @@ async function insertUploadedAssetIntoEditor(asset, targetRoot, deps) {
|
||||
return false;
|
||||
}
|
||||
|
||||
async function uploadFilesWithResolvedTarget(files, detail, options, deps) {
|
||||
deps = deps || {};
|
||||
var resolveFileTreeUploadTarget = typeof deps.resolveFileTreeUploadTarget === 'function' ? deps.resolveFileTreeUploadTarget : null;
|
||||
var uploadFileToMediaAsset = typeof deps.uploadFileToMediaAsset === 'function' ? deps.uploadFileToMediaAsset : null;
|
||||
if (!resolveFileTreeUploadTarget || !uploadFileToMediaAsset) {
|
||||
throw new Error('上传运行时缺少目标解析或上传函数');
|
||||
}
|
||||
var list = Array.from(files || []).filter(Boolean);
|
||||
if (!list.length) return [];
|
||||
var plan = await resolveFileTreeUploadTarget(detail || {});
|
||||
var uploaded = [];
|
||||
var errors = [];
|
||||
for (var i = 0; i < list.length; i += 1) {
|
||||
try {
|
||||
uploaded.push(await uploadFileToMediaAsset(list[i], plan, options || {}));
|
||||
} catch (error) {
|
||||
errors.push(list[i].name + ': ' + (error && error.message ? error.message : '上传失败'));
|
||||
}
|
||||
}
|
||||
if (errors.length) {
|
||||
var message = '部分文件上传失败:\n' + errors.slice(0, 6).join('\n') + (errors.length > 6 ? '\n...' : '');
|
||||
if (typeof deps.alert === 'function') {
|
||||
deps.alert(message);
|
||||
} else {
|
||||
window.alert(message);
|
||||
}
|
||||
}
|
||||
return uploaded;
|
||||
}
|
||||
|
||||
function localAssetOpenUrl(asset, download, context) {
|
||||
if (!isLocalUploadedAsset(asset)) return '';
|
||||
var rootUri = String(context && context.rootUri || asset && (asset.rootUri || asset.root_uri) || '').trim() || currentRootUri();
|
||||
@@ -430,6 +460,7 @@ window.__mnoteLocalUploadRuntime = {
|
||||
uploadLocalFolderAsset: uploadLocalFolderAsset,
|
||||
uploadMediaAsset: uploadMediaAsset,
|
||||
insertUploadedAssetIntoEditor: insertUploadedAssetIntoEditor,
|
||||
uploadFilesWithResolvedTarget: uploadFilesWithResolvedTarget,
|
||||
localAssetOpenUrl: localAssetOpenUrl,
|
||||
uploadedAssetType: uploadedAssetType,
|
||||
fileTreeIconKindForFileName: fileTreeIconKindForFileName,
|
||||
|
||||
Reference in New Issue
Block a user