diff --git a/src/common/model/matter/Matter.ts b/src/common/model/matter/Matter.ts index 1001e98..e4f760e 100644 --- a/src/common/model/matter/Matter.ts +++ b/src/common/model/matter/Matter.ts @@ -183,20 +183,22 @@ export default class Matter extends BaseEntity { //预览文件 在分享的预览中才主动传入previewUrl. preview(previewUrl?: string | null) { - let that = this; - let shareMode = true; if (previewUrl) { shareMode = true; } else { shareMode = false; - previewUrl = that.getPreviewUrl(); + previewUrl = this.getPreviewUrl(); } - if (that.isImage()) { + if (this.isImage()) { ImagePreviewer.showSinglePhoto(previewUrl); } else { - PreviewerHelper.preview(this); + if(shareMode) { + PreviewerHelper.preview(this, previewUrl); + } else { + PreviewerHelper.preview(this); + } } } @@ -562,7 +564,7 @@ export default class Matter extends BaseEntity { getSharePreviewUrl( shareUuid: string, shareCode: string, - shareRootUuid: String + shareRootUuid: string ): string { return `${EnvUtil.currentHost()}/api/alien/preview/${this.uuid}/${ this.name diff --git a/src/pages/share/widget/ShareMatterPanel.tsx b/src/pages/share/widget/ShareMatterPanel.tsx index f1a3e4f..1d6daa5 100644 --- a/src/pages/share/widget/ShareMatterPanel.tsx +++ b/src/pages/share/widget/ShareMatterPanel.tsx @@ -34,7 +34,7 @@ export default class ShareMatterPanel extends TankComponent { } clickRow = () => { - const { matter, onGoToDirectory, onPreviewImage } = this.props; + const { matter, share, onGoToDirectory, onPreviewImage } = this.props; if (matter.dir) { onGoToDirectory(matter.uuid!); @@ -43,7 +43,7 @@ export default class ShareMatterPanel extends TankComponent { if (matter.isImage()) { onPreviewImage(matter); } else { - matter.preview(); + matter.preview(matter.getSharePreviewUrl(share.uuid!, share.code!, share.rootUuid)); } } }; diff --git a/src/pages/widget/previewer/PreviewerHelper.ts b/src/pages/widget/previewer/PreviewerHelper.ts index 21210d1..60aeb7a 100644 --- a/src/pages/widget/previewer/PreviewerHelper.ts +++ b/src/pages/widget/previewer/PreviewerHelper.ts @@ -35,8 +35,9 @@ export default class PreviewerHelper { /** * 对一个文件进行预览,自动选择预览引擎 * @param matter 文件 + * @param previewUrl 文件预览url,分享文件预览需从外部把previewUrl传入 */ - static preview(matter: Matter) { + static preview(matter: Matter, previewUrl?: string) { let fileName: string = matter.name; let extension: string = MimeUtil.getExtensionWithoutDot(fileName); if (!extension) { @@ -74,19 +75,30 @@ export default class PreviewerHelper { let targetUrl = previewEngine.url; const engine: PreviewEngine = previewEngine; - const needToken: boolean = - matter.privacy && targetUrl.indexOf("{url}") !== -1; - - PreviewerHelper.prepareMatterUrl(matter, needToken, function (url) { - targetUrl = targetUrl.replace("{originUrl}", matter.getPreviewUrl()); - targetUrl = targetUrl.replace("{url}", encodeURIComponent(url)); + if(previewUrl) { + targetUrl = targetUrl.replace("{originUrl}", previewUrl); + targetUrl = targetUrl.replace("{url}", previewUrl); if (engine.previewInSite) { BrowserPreviewer.show(fileName, targetUrl, matter.size); } else { window.open(targetUrl); } - }); + } else { + const needToken = matter.privacy && targetUrl.indexOf("{url}") !== -1; + + PreviewerHelper.prepareMatterUrl(matter, needToken, function (url) { + targetUrl = targetUrl.replace("{originUrl}", matter.getPreviewUrl()); + targetUrl = targetUrl.replace("{url}", encodeURIComponent(url)); + + if (engine.previewInSite) { + BrowserPreviewer.show(fileName, targetUrl, matter.size); + } else { + window.open(targetUrl); + } + }); + } + } } }