Skip to content

階段 27-5|UI 狀態機與錯誤處理#40

Merged
VagrantPi merged 1 commit intomainfrom
feature/step27-5
Sep 19, 2025
Merged

階段 27-5|UI 狀態機與錯誤處理#40
VagrantPi merged 1 commit intomainfrom
feature/step27-5

Conversation

@VagrantPi
Copy link
Copy Markdown
Owner

階段 27-5|UI 狀態機與錯誤處理

目標

統一商店按鈕狀態、錯誤彈窗、成功提示,不嵌到業務層。

規格

  • 定義按鈕狀態列舉(UI 層使用):
    idle, loadingPrice, ready, purchasing, verifying, owned, soldOut, limitedReached, disabled
  • 狀態轉換規則:
    • 進入頁面 → loadingPrice → 有價 → ready
    • purchase 按下 → purchasingverifyingsuccess(toast)→ 根據限購進入 owned/limitedReached
  • 錯誤對應(顯示文案 key,不寫死文字):
    • store_unavailable, network_error, verify_failed, sku_not_allowed, limit_reached

驗收實例化需求

  1. 價格載入
    • Given:preloadCatalogPrices 完成
    • Then:所有可售商品顯示官方/Mock 價格,狀態為 ready
  2. 購買流
    • Given:點擊可售商品
    • When:模擬成功
    • Then:按鈕依序顯示 purchasing → verifying → owned/limitedReached,並彈出 success 提示
  3. 錯誤流
    • Given:驗證返回 ok=false, reason='sku_not_allowed'
    • Then:顯示錯誤(對應 key),保留按鈕在 ready(可重試)或 disabled(依規則)

@VagrantPi VagrantPi merged commit 8e7fdbd into main Sep 19, 2025
4 checks passed
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