31 lines
869 B
TypeScript
31 lines
869 B
TypeScript
import { buildPublicWorkStagePath } from '../../routing/appPageRoutes';
|
||
import type { SelectionStage } from '../platform-entry/platformEntryTypes';
|
||
|
||
export type PublishShareModalPayload = {
|
||
title: string;
|
||
publicWorkCode: string;
|
||
stage: SelectionStage;
|
||
};
|
||
|
||
function buildShareUrl(payload: PublishShareModalPayload) {
|
||
const sharePath = buildPublicWorkStagePath(
|
||
payload.stage,
|
||
payload.publicWorkCode,
|
||
);
|
||
|
||
return typeof window === 'undefined'
|
||
? sharePath
|
||
: new URL(sharePath, window.location.origin).href;
|
||
}
|
||
|
||
export function buildPublishShareText(payload: PublishShareModalPayload) {
|
||
const publicWorkCode = payload.publicWorkCode.trim();
|
||
const title = payload.title.trim() || '我的作品';
|
||
|
||
return `邀请你来玩《${title}》\n作品号:${publicWorkCode}\n${buildShareUrl({
|
||
...payload,
|
||
publicWorkCode,
|
||
title,
|
||
})}`;
|
||
}
|