Skip to content

fix(frontend): quest write hooks show success toast on failure #522

@yu23ki14

Description

@yu23ki14

One-liner

Quest 書き込み系フック(承認/完了申請/拒否/取り下げ/キャンセル)が revert/wallet reject しても UI は「成功しました」 toast を出し、オペレータが失敗に気付かない。

Description

pkgs/frontend/hooks/useHatsQuestModule.ts の以下のフックは try/catchconsole.error するだけで、エラーを再 throw せず undefined を返している:

  • useSubmitQuestCompletion(L82-)
  • useApproveQuest(L183-、特に L204-208 の catch)
  • useRejectQuestSubmission(L150-)
  • useCancelQuest
  • useWithdrawQuestSubmission

$treeId_.quest.$questId.tsx のハンドラ(onApprove 等)は await foo() の後に無条件で toast.success(...) + refetch を呼ぶため、失敗が成功として表示される。

失敗シナリオ

  1. オペレータが「承認」ボタンを押す
  2. wallet で reject する/contract が WorkspaceMemberOnly 等で revert する/RPC タイムアウトする
  3. フックは catch でログを吐いて undefined を resolve
  4. UI は「承認しました」 toast を表示 + refetch
  5. subgraph は変わらないので Kanban の列はそのまま
  6. オペレータは「承認したはずだが反映されていない」と困惑

Requirements

  • 各 quest 書き込みフックの catch を削除し、エラーを呼び出し元まで伝播させる(または re-throw)
  • ルート側のハンドラで try { await foo(); toast.success(...) } catch (e) { toast.error(...) } パターンに統一
  • 同様のパターンが他のフック(useScheduledDistributor, useHats の一部)にも無いか確認

Supplements

関連ファイル:

  • pkgs/frontend/hooks/useHatsQuestModule.ts (L70, L103, L138, L171, L206, L237)
  • pkgs/frontend/app/routes/$treeId_.quest.$questId.tsx

出典: v3 code-review (/code-review ultra-high effort, 2026-05-27)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    HighPriority HighbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions