refactor: delegate upload files orchestration

This commit is contained in:
lix-2026
2026-05-25 02:00:34 +08:00
parent 00ce8568b0
commit fda2224b6f
3 changed files with 50 additions and 2 deletions
@@ -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,