Skip to content

feat(user): 添加玩家聊天框静音与解除静音 - #129

Open
yourmoln wants to merge 1 commit into
vrcm-team:newuifrom
yourmoln:codex/feat-player-chatbox-mute
Open

feat(user): 添加玩家聊天框静音与解除静音#129
yourmoln wants to merge 1 commit into
vrcm-team:newuifrom
yourmoln:codex/feat-player-chatbox-mute

Conversation

@yourmoln

Copy link
Copy Markdown
Member

功能说明

  • 在他人用户资料操作面板显示当前玩家的聊天框覆盖状态,并提供静音、解除静音与读取失败重试操作。
  • 新增玩家聊天框覆盖 API 封装,所有请求复用现有 Ktor 客户端、认证续期和 Koin 装配。
  • 将状态绑定到目标用户与账号会话,丢弃目标切换、账号切换或令牌续期前的过期响应。
  • 写入失败或仅完成部分步骤时重新读取远端状态,避免本地界面保留推测结果。
  • 补齐英语、日语、简体中文和繁体中文文案。

实现假设清单

  • 服务端通过 muteChatunmuteChat 表示成对的玩家聊天框覆盖项,切换时应先移除目标已有的成对覆盖项,再创建唯一的目标覆盖项。
  • 未返回匹配覆盖项时,界面按“当前没有玩家级静音覆盖”展示,并允许用户创建 muteChat 覆盖项。
  • 同时返回冲突覆盖项时,以可解析的 created 时间中最新一项为当前状态;时间不可解析时保持服务端响应顺序并取最后一项。
  • 用户、目标或会话令牌在请求期间发生变化时,旧请求结果不得更新当前页面,也不得触发当前页面的成功或失败提示。
  • 不依赖移除与创建之间的事务能力;任何写入失败都通过后续 GET 收敛到服务端权威状态。

代码逻辑图

flowchart TD
    A[打开他人资料操作面板] --> B[按目标用户与当前会话读取覆盖项]
    B --> C{读取结果}
    C -->|失败| D[显示重试入口]
    C -->|成功| E[解析成对覆盖项的最新状态]
    E --> F[用户切换状态]
    F --> G[锁定重复操作]
    G --> H[移除目标已有成对覆盖项]
    H --> I[创建唯一目标覆盖项]
    I --> J{写入与上下文校验}
    J -->|成功且上下文有效| K[更新状态并显示成功提示]
    J -->|失败或上下文变化| L[重新读取远端权威状态]
    D --> B
    L --> B
Loading

验证

  • :composeApp:desktopTest 定向运行 API 契约、控制器状态转换与本地化测试:通过。
  • :composeApp:compileKotlinDesktop:通过。
  • :composeApp:desktopTest 完整套件:功能分支 813 项中 1 项既有 Meetup 协程清理测试失败;干净 upstream/newui 对照运行在同一用例以相同异常失败。
  • git diff --check:通过。

@yourmoln yourmoln changed the title feat: 添加玩家聊天框静音与解除静音 feat(user): 添加玩家聊天框静音与解除静音 Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant