refactor: delegate media asset upload runtime
This commit is contained in:
@@ -298,6 +298,66 @@ async function insertUploadedAssetIntoEditor(asset, targetRoot, deps) {
|
||||
return false;
|
||||
}
|
||||
|
||||
async function uploadFileToMediaAsset(file, plan, options, deps) {
|
||||
deps = deps || {};
|
||||
options = options || {};
|
||||
var getCurrentSourceKind = typeof deps.currentSourceKind === 'function' ? deps.currentSourceKind : function() { return ''; };
|
||||
var getCurrentRootUri = typeof deps.currentRootUri === 'function' ? deps.currentRootUri : currentRootUri;
|
||||
var getCurrentDocumentId = typeof deps.currentDocumentId === 'function' ? deps.currentDocumentId : function() { return ''; };
|
||||
var resolveEditorRoot = typeof deps.editorRootFromUploadOptions === 'function'
|
||||
? deps.editorRootFromUploadOptions
|
||||
: function(nextOptions) { return editorRootFromUploadOptions(nextOptions, deps); };
|
||||
var insertIntoEditor = typeof deps.insertUploadedAssetIntoEditor === 'function'
|
||||
? deps.insertUploadedAssetIntoEditor
|
||||
: function(asset, targetRoot) { return insertUploadedAssetIntoEditor(asset, targetRoot, deps); };
|
||||
var dispatch = typeof deps.dispatchEvent === 'function'
|
||||
? deps.dispatchEvent
|
||||
: function(event) { return window.dispatchEvent(event); };
|
||||
var EventCtor = typeof deps.CustomEvent === 'function' ? deps.CustomEvent : window.CustomEvent;
|
||||
if (getCurrentSourceKind() === 'local_folder') {
|
||||
var rootUri = getCurrentRootUri();
|
||||
var documentId = String(plan && plan.targetDocumentId || getCurrentDocumentId() || '').trim();
|
||||
var localResult = await uploadLocalFolderAsset(file, plan, {
|
||||
rootUri: rootUri,
|
||||
documentId: documentId,
|
||||
timeoutMs: 15000
|
||||
});
|
||||
var localAsset = localResult && localResult.asset ? localResult.asset : null;
|
||||
if (!localAsset) {
|
||||
throw new Error('上传失败');
|
||||
}
|
||||
if (options.insertIntoEditor) {
|
||||
await insertIntoEditor(localAsset, resolveEditorRoot(options));
|
||||
}
|
||||
if (typeof deps.refreshLocalFolderSidebarSnapshot === 'function') {
|
||||
void deps.refreshLocalFolderSidebarSnapshot();
|
||||
}
|
||||
dispatch(new EventCtor('wolai:local-assets-changed', {
|
||||
detail: { docId: documentId, asset: localAsset, assetIds: [localAsset.id] }
|
||||
}));
|
||||
return localAsset;
|
||||
}
|
||||
var mediaResult = await uploadMediaAsset(file, plan, { timeoutMs: 15000 });
|
||||
var mediaAsset = mediaResult && mediaResult.asset ? mediaResult.asset : null;
|
||||
if (!mediaAsset) {
|
||||
throw new Error('上传失败');
|
||||
}
|
||||
if (typeof deps.appendUploadedAssetRow === 'function') {
|
||||
deps.appendUploadedAssetRow(mediaAsset, plan && plan.targetDocumentId);
|
||||
}
|
||||
if (options.insertIntoEditor) {
|
||||
await insertIntoEditor(mediaAsset, resolveEditorRoot(options));
|
||||
}
|
||||
dispatch(new EventCtor('wolai:assets-changed', {
|
||||
detail: {
|
||||
docId: plan && plan.targetDocumentId,
|
||||
asset: mediaAsset,
|
||||
assetIds: [mediaAsset.id]
|
||||
}
|
||||
}));
|
||||
return mediaAsset;
|
||||
}
|
||||
|
||||
async function uploadFilesWithResolvedTarget(files, detail, options, deps) {
|
||||
deps = deps || {};
|
||||
var resolveFileTreeUploadTarget = typeof deps.resolveFileTreeUploadTarget === 'function' ? deps.resolveFileTreeUploadTarget : null;
|
||||
@@ -460,6 +520,7 @@ window.__mnoteLocalUploadRuntime = {
|
||||
uploadLocalFolderAsset: uploadLocalFolderAsset,
|
||||
uploadMediaAsset: uploadMediaAsset,
|
||||
insertUploadedAssetIntoEditor: insertUploadedAssetIntoEditor,
|
||||
uploadFileToMediaAsset: uploadFileToMediaAsset,
|
||||
uploadFilesWithResolvedTarget: uploadFilesWithResolvedTarget,
|
||||
localAssetOpenUrl: localAssetOpenUrl,
|
||||
uploadedAssetType: uploadedAssetType,
|
||||
|
||||
Reference in New Issue
Block a user