feat(career): 未保存時の離脱確認(× 閉じ/リロード)を追加#313
Conversation
ログイン済みで未保存の変更がある状態で × 閉じ・リロードした際、 ブラウザ標準の離脱確認ダイアログを出して編集内容の消失を防ぐ。 formCache は redux-persist の blacklist のためリロードで消えることへの対策。 - useUnsavedChangesWarning フックを追加(beforeunload ガード) - CareerResumeForm で isAuthenticated && dirty.any のとき有効化 - 未ログインは sessionStorage 退避で対象外、アプリ内遷移は Redux 保持で対象外 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThis PR adds an unsaved changes warning feature to the frontend. A new React hook conditionally registers a ChangesUnsaved changes warning
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
概要
ログイン済みユーザーが職務経歴書を未保存のまま × 閉じ / リロード した際に、ブラウザ標準の離脱確認ダイアログを出して編集内容の消失を防ぎます。
formCacheは redux-persist の blacklist(PII 保護)のためリロードで消える設計です。そのためログイン済み未保存編集はリロード/× 閉じで失われるため、その経路をガードします。変更内容
useUnsavedChangesWarningフックを追加:whenが true の間だけbeforeunloadリスナを登録し、preventDefault()でブラウザ標準確認を発火する汎用フック。CareerResumeForm: 既存のdirty.any(useCareerDirty)を再利用し、useUnsavedChangesWarning(isAuthenticated && dirty.any)を追加。仕様上の制約(設計判断)
ブラウザ仕様上
beforeunloadではカスタム UI・保存処理・文言上書きができないため、ブラウザ標準ダイアログのみ(保存する/保存しない の選択や保存後離脱は不可)。表示文言はブラウザ管理のためmessages.ts追加なし。対象外(データ消失が起きない経路)
sessionStorageに自動退避されリロードで復元されるため対象外(baseline=nullでdirty.anyも常に false)。beforeunloadも発火しない)。検証
make test-frontend… 293 passmake lint-frontend/make lint-frontend-messages… cleanmake build-frontend… 型エラーなしbeforeunloadネイティブダイアログは Playwright で安定検証できないため新規 E2E は追加なし。🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Tests