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 { import {
assetIcon, assetIcon,
assetSourceLabel, assetSourceLabel,
buildAbsoluteAssetDownloadUrl,
buildAssetImageUrl, buildAssetImageUrl,
buildAssetPreviewFrameConfig, buildAssetPreviewFrameConfig,
isImageAsset, isImageAsset,
@@ -1705,6 +1706,17 @@ export function MindSpaceView({
); );
const previewAssetFrame = previewAsset ? buildAssetPreviewFrameConfig(previewAsset) : null; 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 renderAssetActions = (asset: MindSpaceAsset) => {
const shareReady = asset.status === 'ready' && asset.scanStatus !== 'blocked'; const shareReady = asset.status === 'ready' && asset.scanStatus !== 'blocked';
const menuOpen = openAssetMenuId === asset.id; const menuOpen = openAssetMenuId === asset.id;
@@ -1733,13 +1745,24 @@ export function MindSpaceView({
)} )}
{shareReady ? ( {shareReady ? (
<button <>
type="button" <button
className="mindspace-asset-share mindspace-item-action" type="button"
onClick={() => setSharePayload(buildAssetSharePayload(asset, selectedCategory?.code))} className="mindspace-asset-share mindspace-item-action"
> onClick={() => setSharePayload(buildAssetSharePayload(asset, selectedCategory?.code))}
>
</button>
</button>
{selectedCategory?.code === 'public' && isWorkAsset(asset) && (
<button
type="button"
className="mindspace-item-action"
onClick={() => openAssetViewInNewTab(asset)}
>
</button>
)}
</>
) : ( ) : (
<span className="mindspace-asset-blocked"></span> <span className="mindspace-asset-blocked"></span>
)} )}