51cb05f418
Project CI / AI game creator shell Rust crates (push) Successful in 5m56s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 6m36s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 7m37s
Project CI / Backend tests (push) Successful in 9m22s
Project CI / Frontend tests (push) Successful in 4m40s
Project CI / AI game creator shell web tests (push) Successful in 3m50s
Project CI / Repository checks (push) Successful in 6m30s
Project CI / Native shell tests (push) Successful in 8m32s
本 PR 补齐创作者主页与关注粉丝功能的产品合同和工程设计,供后续按里程碑实施;本次只修改文档。 桌面导航第四项进入自己的创作者主页,“我的”移到第五项。游戏详情可进入作者主页并关注/取消关注;自己或他人的关注、粉丝列表均公开可查看,点击用户头像或昵称可进入其主页。本人支持取消/重新关注、回关和移除粉丝,并明确两个关注方向独立。 工程设计包含关系表与 DTO、认证和事务边界、跨页状态同步、共享组件、深链及验收要求,拆分关系查询和页面交互两个里程碑。按用户要求,游戏列表沿用最多 48 项的现有限制,不增加游戏目录分页改造。 验证: - 已合入最新 origin/master(21c79f54a);共享决策记录冲突保留双方新增内容。 - npm run check:encoding 通过。 - npm run check:doc-index 通过。 - git diff --check 与暂存差异检查通过。 - 相对 master 仅六份文档发生变化;没有业务代码或 schema 修改,未执行业务测试或部署。 Reviewed-on: #638 Co-authored-by: Linghong <ink29535@proton.me> Co-committed-by: Linghong <ink29535@proton.me>
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import type { SelectionStage } from '../components/platform-entry/platformEntryActiveTypes';
|
|
import { setHostAppTitle } from './host-bridge/hostBridge';
|
|
|
|
const APP_TITLE_BRAND = '陶泥儿';
|
|
export const APP_HOME_TITLE = '陶泥儿 Genarrative|美术编辑器与项目工作台';
|
|
|
|
const APP_TITLE_BY_SELECTION_STAGE: Record<SelectionStage, string> = {
|
|
platform: APP_HOME_TITLE,
|
|
'creation-home': APP_HOME_TITLE,
|
|
project: '项目 - 陶泥儿',
|
|
'creator-home': '创作者主页 - 陶泥儿',
|
|
'creator-connections': '关注与粉丝 - 陶泥儿',
|
|
profile: '我的 - 陶泥儿',
|
|
'profile-payment': '支付服务 - 陶泥儿',
|
|
'payment-checkout': '扫码支付 - 陶泥儿',
|
|
'image-editor': '美术编辑器 - 陶泥儿',
|
|
games: '游戏 - 陶泥儿',
|
|
'game-detail': '游戏详情 - 陶泥儿',
|
|
'game-play': '正在游玩 - 陶泥儿',
|
|
'game-mine': '我的游戏 - 陶泥儿',
|
|
'game-publish': '发布游戏 - 陶泥儿',
|
|
};
|
|
|
|
export function resolveAppTitleForSelectionStage(stage: SelectionStage) {
|
|
return APP_TITLE_BY_SELECTION_STAGE[stage];
|
|
}
|
|
|
|
export function syncAppTitle(title: string) {
|
|
const normalizedTitle = title.trim() || APP_TITLE_BRAND;
|
|
if (typeof document !== 'undefined') {
|
|
document.title = normalizedTitle;
|
|
}
|
|
|
|
void setHostAppTitle({ title: normalizedTitle });
|
|
}
|