feat: add public page view action

This commit is contained in:
john
2026-07-27 18:35:29 +08:00
parent 77be18d340
commit 7002007128
+30 -7
View File
@@ -46,6 +46,7 @@ import { MindSpaceSpaceChat } from './MindSpaceSpaceChat';
import {
assetIcon,
assetSourceLabel,
buildAbsoluteAssetDownloadUrl,
buildAssetImageUrl,
buildAssetPreviewFrameConfig,
isImageAsset,
@@ -1705,6 +1706,17 @@ export function MindSpaceView({
);
const previewAssetFrame = previewAsset ? buildAssetPreviewFrameConfig(previewAsset) : null;
const openAssetViewInNewTab = (asset: MindSpaceAsset) => {
if (previewMode) {
setError('预览模式下暂不支持打开页面');
return;
}
const viewUrl = asset.publicUrl
? resolvePublicPageUrl(asset.publicUrl)
: buildAbsoluteAssetDownloadUrl(asset);
window.open(viewUrl, '_blank', 'noopener,noreferrer');
};
const renderAssetActions = (asset: MindSpaceAsset) => {
const shareReady = asset.status === 'ready' && asset.scanStatus !== 'blocked';
const menuOpen = openAssetMenuId === asset.id;
@@ -1733,13 +1745,24 @@ export function MindSpaceView({
)}
{shareReady ? (
<button
type="button"
className="mindspace-asset-share mindspace-item-action"
onClick={() => setSharePayload(buildAssetSharePayload(asset, selectedCategory?.code))}
>
</button>
<>
<button
type="button"
className="mindspace-asset-share mindspace-item-action"
onClick={() => setSharePayload(buildAssetSharePayload(asset, selectedCategory?.code))}
>
</button>
{selectedCategory?.code === 'public' && isWorkAsset(asset) && (
<button
type="button"
className="mindspace-item-action"
onClick={() => openAssetViewInNewTab(asset)}
>
</button>
)}
</>
) : (
<span className="mindspace-asset-blocked"></span>
)}