Repository navigation
fix(frontend): 存在しない/権限のないチャットを開いたときにエラーを表示するように - #18065
kakkokari-gtyih merged 3 commits into
Conversation
- ルームの取得に失敗した場合、ダイアログを出したあと「まだメッセージがありません」と 表示していたのをやめ、ページ内に見つからない/エラーの結果表示を出す - ユーザーとのチャットで取得に失敗した場合、ロード中表示のままになっていたのを修正 Fix misskey-dev#16120 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VyH5iDXHDUwSpDhjuPGC9W
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01VyH5iDXHDUwSpDhjuPGC9W
|
No actionable comments were generated in the recent review.
|
| レイヤー / ファイル | 概要 |
|---|---|
エラー状態の分類と表示 packages/frontend/src/pages/chat/room.vue |
fetchError とエラーコードの分類処理を追加しました。初期化中の表示に続けて、notFound または error の結果を表示します。 |
取得失敗時の初期化中断 packages/frontend/src/pages/chat/room.vue |
ユーザー情報またはタイムラインの取得失敗を捕捉し、初期化を中断します。ルーム情報とルームタイムラインの取得失敗でもエラー状態を設定し、後続処理を中断します。 |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix · Severity of issue fixed: Low
Suggested reviewers: syuilo
Merge Risk: 
Minimal · up to 37a3d
-
No merge-blocking defect was established in the changed chat error-handling flow.
Pre-merge checks: 
4
-
Full details: Linked Issues check
-
Explanation
直接リンクされた
#16120は、存在しない、またはアクセス権のないチャットルームでロード中表示が続く問題の解消を求めています。packages/frontend/src/pages/chat/room.vueは、ルーム情報の取得失敗とタイムライン取得失敗をエラー状態で処理します。NO_SUCH_ROOMはnotFoundとしてMkResultに表示し、その他の失敗はerrorとして表示します。これにより、対象のルームでロード中表示が継続する問題を解消します。PR説明には、存在しないルーム、非メンバーのルーム、通信エラー、および正常系の確認も記載されています。
Full details: Out of Scope Changes check
-
Explanation
変更は
packages/frontend/src/pages/chat/room.vueの取得失敗処理に限定されています。ユーザーとのチャットでのユーザー情報取得失敗とタイムライン取得失敗への対応、および通信エラーをerrorとして表示する処理は、同じチャット画面の失敗時表示を一貫させる関連変更です。独立した機能変更や、目的と無関係なファイル変更は、提示された差分概要から確認されません。
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
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 @coderabbitai help to get the list of available commands.
| <MkLoading/> | ||
| </div> | ||
|
|
||
| <MkResult v-else-if="fetchError != null" :type="fetchError"/> |
There was a problem hiding this comment.
他のページ(role.vue・list.vue など)と同じく、
グローバルコンポーネントの MkResult で結果を出しています。
ロード中の次・「まだメッセージがありません」の前に置いたので、
取得に失敗したときに空の状態と取り違えることはありません。
入力欄(XForm)は initialized が true のときだけ出るので、失敗時は表示されません。
Generated by Claude Code
| function toFetchError(err: unknown): 'notFound' | 'error' { | ||
| const code = (err as { code?: string } | null)?.code; | ||
| return code === 'NO_SUCH_ROOM' || code === 'NO_SUCH_USER' ? 'notFound' : 'error'; | ||
| } |
There was a problem hiding this comment.
バックエンドは、存在しないルームも権限のないルームも同じ NO_SUCH_ROOM を返します
(chat/rooms/show・chat/messages/room-timeline)。
存在の有無を漏らさないための作りなので、
画面側も区別せず「見つかりません」にしています。
ユーザーとのチャットは users/show・chat/messages/user-timeline の
NO_SUCH_USER を同じ扱いにしました。
それ以外のエラー(通信エラーなど)は「問題が発生しました」です。
Generated by Claude Code
| const result = await Promise.all([ | ||
| misskeyApi('users/show', { userId: props.userId }), | ||
| misskeyApi('chat/messages/user-timeline', { userId: props.userId, limit: LIMIT }), | ||
| ]); | ||
| ]).catch(err => { | ||
| fetchError.value = toFetchError(err); | ||
| return null; | ||
| }); | ||
|
|
||
| if (result == null) { | ||
| initializing.value = false; | ||
| return; | ||
| } | ||
|
|
||
| const [u, m] = result; |
There was a problem hiding this comment.
ユーザーとのチャットは Promise.all を await しているだけで失敗を扱っていなかったため、
reject されると initializing が true のまま残り、ロード中表示が続いていました。
.catch() で null に寄せる形にしたのは、u / m の型を推論のまま使えるようにするためです
(try/catch だと変数を外で宣言して型を書く必要がある)。
Generated by Claude Code
| if (rResult.status === 'rejected') { | ||
| os.alert({ | ||
| type: 'error', | ||
| text: i18n.ts.somethingHappened, | ||
| }); | ||
| fetchError.value = toFetchError(rResult.reason); | ||
| initializing.value = false; | ||
| return; | ||
| } |
There was a problem hiding this comment.
これまではエラーダイアログ(os.alert)を出したあと、
何も取得できていない状態で「まだメッセージがありません」が見えていました。
ページ内の表示に一本化し、ダイアログは出さないようにしています(同じ失敗を2回伝えないため)。
Generated by Claude Code
| // ルーム情報は取れても、タイムラインの取得だけ失敗することがある(通信エラーなど) | ||
| if (mResult.status === 'rejected') { | ||
| fetchError.value = toFetchError(mResult.reason); | ||
| initializing.value = false; | ||
| return; | ||
| } | ||
|
|
||
| const m = mResult.value as Misskey.entities.ChatMessagesRoomTimelineResponse; |
There was a problem hiding this comment.
以前はタイムラインの取得に失敗すると空配列として扱い、
メッセージ 0 件と区別がつきませんでした。
ルーム情報が見られる人(オーナー・メンバー・招待中・モデレーター)のうち、
招待中の人は直前の分岐で処理済みで、残りはタイムラインも見られる権限があります(ChatService.hasPermissionToViewRoomTimeline)。
なので、ここで失敗するのは通信エラーなどの場合だけで、エラー表示にするのが妥当と判断しました。
Generated by Claude Code
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #18065 +/- ##
============================================
- Coverage 26.73% 12.81% -13.93%
============================================
Files 1162 227 -935
Lines 39864 11129 -28735
Branches 10977 3685 -7292
============================================
- Hits 10658 1426 -9232
+ Misses 23432 7625 -15807
+ Partials 5774 2078 -3696 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🖥 Frontend Diagnostics Report(No significant changes) Requests by resource type
V8 heap snapshot statistics
📦 Bundle StatsChunk size diff (1 updated, 0 added, 0 removed)
Startup chunk size (0 updated, 0 added, 0 removed)
Startup chunks are the Vite entry for
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
🙏 |
* fix(frontend): 存在しない/権限のないチャットを開いたときにエラーを表示するように - ルームの取得に失敗した場合、ダイアログを出したあと「まだメッセージがありません」と 表示していたのをやめ、ページ内に見つからない/エラーの結果表示を出す - ユーザーとのチャットで取得に失敗した場合、ロード中表示のままになっていたのを修正 Fix misskey-dev#16120 * chore: CHANGELOG を更新
* [skip ci] Update CHANGELOG.md (prepend template) * chore(deps): update dependency undici [security] (misskey-dev#18055) * chore(deps): update dependency undici@^6 to v6.29.1 [security] * chore(deps): update dependency undici@^7 to v7.30.1 [security] --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency nodemailer to v10.1.4 [security] (misskey-dev#18046) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(devcontainer): install the pnpm version from packageManager (misskey-dev#18060) The pnpm devcontainer feature installs pnpm 10.10.0, so pnpm switches to the packageManager version (pnpm 12) at runtime. pnpm 10 installs it with pnpm's own install script blocked, which leaves the shebang-less placeholder in place of the native binary. With shellEmulator enabled, pnpm 12 then fails to launch nested pnpm calls in scripts, and `pnpm build` in init.sh exits with "Error launching 'pnpm': Exec format error (os error 8)". Install the packageManager version globally before running pnpm, as the Dockerfile already does, so the native binary is installed and no version switch happens. * Mastodon等の Quote Note で RE: URL が付与される問題を修正 (misskey-dev#18063) * refactor: make HTML to MFM functions take options object * feat: remove quote-inline part if the Note has quote * docs: Mastodon など、Misskey以外のソフトウェアによる引用ノートの表示改善 * chore: remove only one quote-inline element * fix(frontend): プライバシー設定が検索候補から消える問題を修正 (misskey-dev#18058) * fix(frontend): プライバシー設定が検索候補から消える問題を修正 設定検索の索引生成がv-for内のsetting.captionをビルド時に評価し、未定義変数として失敗するとprivacyページ全体の索引が空になっていた。グループ見出しもページ名を上書きしていた。 検索マーカーには既存localeの静的な参照を渡し、ページ名と各項目の検索語句を保持する。画面の入力と保存の動作は変えない。 * Update Changelog * fix --------- Co-authored-by: KanariKanaru <[email protected]> * fix(frontend): horizontal scrolling of sticky note avatars (misskey-dev#18073) * Initial plan * Fix sticky note avatars on horizontal scroll Co-authored-by: anatawa12 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: anatawa12 <[email protected]> * deps: update dependencies (misskey-dev#18074) * deps: update dependencies * deps: update dependencies * fix(frontend): 存在しない/権限のないチャットを開いたときにエラーを表示するように (misskey-dev#18065) * fix(frontend): 存在しない/権限のないチャットを開いたときにエラーを表示するように - ルームの取得に失敗した場合、ダイアログを出したあと「まだメッセージがありません」と 表示していたのをやめ、ページ内に見つからない/エラーの結果表示を出す - ユーザーとのチャットで取得に失敗した場合、ロード中表示のままになっていたのを修正 Fix misskey-dev#16120 * chore: CHANGELOG を更新 * refactor(frontend): propsのリアクティビティを引き継ぐように (misskey-dev#17954) * fix(frontend): MFMでカスタム絵文字の再描画が走る問題を修正 * Update changelog * refactor(frontend): propsのリアクティビティを引き継ぐように * fix * fix(frontend-embed): apply mfm-related refactors to embed components * fix * fix review * fix * Update CHANGELOG.md * fix(frontend): Unicode絵文字とカスタム絵文字の名前が重複したときにカスタム絵文字がオートコンプリートにサジェストされない問題を修正 (misskey-dev#13817) * fix(frontend): Unicode絵文字とカスタム絵文字の名前が重複したときにカスタム絵文字がオートコンプリートにサジェストされない問題を修正 * fix changelog * fix review --------- Co-authored-by: kakkokari-gtyih <[email protected]> * fix(frontend/aiscript): AiScriptインタープリターのリソース解放漏れを修正 (misskey-dev#18076) * fix(frontend/aiscript): AiScriptインタープリターのリソース解放漏れを修正 * Update Changelog * fix(backend): アンテナで投票済みのアンケートが未投票になる問題を修正 (misskey-dev#18056) * fix(backend): アンテナで投票済みのアンケートが未投票になる問題を修正 アンテナ新着の配信では閲覧者の投票済み状態を補完しておらず、同じノートをnotes/showで取得した場合と表示が食い違っていた。 ノート自身と引用・返信先のアンケートへ閲覧者の状態を補完する。共有payloadを変更せず、アンケートがない箇所のDB再取得と再packを避ける。 * Update Changelog --------- Co-authored-by: KanariKanaru <[email protected]> * fix(backend): キューの同時実行数が不正な値の場合は起動時に停止するように (misskey-dev#18081) * fix(backend): キューの同時実行数が不正な値の場合は起動時に停止するように * Update Changelog --------- Co-authored-by: syuilo <[email protected]> * fix(frontend): クリップ切替前の取得結果が現在の選択を上書きする問題を修正 (misskey-dev#18057) * fix(frontend): クリップ切替前の取得結果が現在の選択を上書きする問題を修正 クリップAからBへ切り替えた後にAの取得が完了すると、Bの表示に対してAがノート操作の対象になったり、Aの失敗でBが取得失敗として表示されたりしていた。 要求ごとに有効性を管理し、切替・選択解除・破棄の後は古い成功も失敗も適用しない。同じクリップへ戻る場合も以前の要求と区別する。 * Update Changelog --------- Co-authored-by: KanariKanaru <[email protected]> Co-authored-by: syuilo <[email protected]> * revert(backend): revert compile-config (misskey-dev#17411) * Revert "refactor(backend): 変換後.config.jsonに統一するように+修正など (misskey-dev#16929)" This reverts commit 24bd150. * Revert "enhance(backend): 起動前にconfigをjson化 (misskey-dev#16923)" This reverts commit 1facca1. * fix * fix * fix: update ai documents * migrate * update yaml to v5 * fix * fix * clean up * fix * deps: update minimatch [security] (misskey-dev#18083) * Bump version to 2026.10.2-alpha.0 * fix(sw): fix types (misskey-dev#18089) * fix(sw): fix types * fix * perf(frontend): フロントエンドの起動速度改善 (misskey-dev#18064) * perf(frontend): split JSON5 parser from boot chunk Co-authored-by: しろは <[email protected]> * perf(frontend): optimistic fetching for custom emojis on boot Co-authored-by: しろは <[email protected]> * perf(frontend): use native BroadcastChannel * fix * fix * fix/refactor * fix lint * fix review * perf(frontend): lazy-load visitor components to reduce chunk size for narrow screens Co-authored-by: しろは <[email protected]> * fix * revert: move optimistic custom emoji fetching to a separate branch This reverts commits d9844e1, 4173ab2 and a010612. MkCustomEmoji.vue is restored to the develop version to keep the existing url watcher. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: しろは <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]> * fix(backend): UserLiteにpackする時にもUserDetailedに必要なデータが無駄に取得されている問題を修正 (misskey-dev#18093) * fix(backend): UserLiteにpackする時にもUserDetailedに必要なデータが取得されている問題を修正 * Update Changelog * fix * chore(frontend): devモード時、言語リソースをno-cacheで取得するように (misskey-dev#18094) * chore(frontend): devモード時、言語リソースをno-cacheで取得するように * fix review * fix(frontend): use yes/no labels for cancel follow request confirmation (misskey-dev#18097) * fix(backend): delete webpush subscription on 404 (misskey-dev#18104) * Update CHANGELOG.md * Update CHANGELOG.md [ci skip] * Update CHANGELOG.md [ci skip] * refactor(frontend): 定義がないCSS Modulesクラスを削除 (misskey-dev#18107) * docs: CONTRIBUTING.mdの分割 (misskey-dev#18108) * docs: reorganize CONTRIBUTING by audience and task * security周りをSECURITY.mdに寄せる * Revert "security周りをSECURITY.mdに寄せる" This reverts commit ce23579. * perf(backend): 本番起動時にpnpmがバックグラウンドで起動したままにならないように (misskey-dev#18103) * perf(docker): 本番起動時にpnpmがバックグラウンドで起動したままにならないように * Update Changelog * fix * fix * perf(backend): identicon生成処理のパフォーマンス向上 (misskey-dev#18099) * perf(backend): identicon生成処理のパフォーマンス向上 * perf(backend): 描画アルゴリズムを変更してPNGを軽量化・処理高速化 * Update Changelog * perf(sw): アセットなどへのリクエストはService Workerを通さないように (misskey-dev#18088) Co-authored-by: しろは <[email protected]> * docs: CONTRIBUTING.mdの表記をブラッシュアップ+一部不備を修正 (misskey-dev#18110) * docs: CONTRIBUTING.mdの表記をブラッシュアップ+一部不備を修正 * docs: フォローアップの差分を貢献ガイドに限定 * docs: 貢献ガイドの脆弱性報告案内をSECURITY.mdに集約 * docs: 事前相談と翻訳の案内を補足 * chore(frontend): remove unused style * Bump version to 2026.11.0-alpha.0 * fix(sw): チャットのプッシュ通知をクリックしても自分に対するチャットが開いてしまう問題を修正 (misskey-dev#18119) fix(sw): チャットのプッシュ通知クリックで送信者のDMを開くように Fix misskey-dev#18118 * fix(backend): withReplies: false のローカルタイムラインのストリーミングに返信が含まれる問題を修正 (misskey-dev#18086) * fix(backend): withReplies: false のローカルタイムラインのストリーミングに返信が含まれる問題を修正 * fix(tests): 返信が含まれない場合のストリーミングテストにレスポンスステータスの検証を追加 * Update Changelog --------- Co-authored-by: kakkokari-gtyih <[email protected]> * fix(frontend): メールサーバー設定に未保存の変更がある場合は配信テストを押せないように (misskey-dev#18067) * fix(frontend): メールサーバー設定に未保存の変更がある場合は配信テストを押せないように 配信テストは保存済みの設定で送信されるため、入力途中の値でテストすると 原因の分かりにくいエラー (ECONNREFUSED 等) になっていた。 Fix misskey-dev#10307 Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(frontend): SMTP サーバーが保存されていない間も配信テストを押せないように - 保存済みの SMTP ホストが空の間はボタンを無効にする(初期状態・設定を消して保存した場合) - null / 空文字 / 数値欄を空にしたときの NaN を同じ値として比べ、 入力して消しただけで未保存扱いになるのを防ぐ Co-Authored-By: Claude Opus 5.5 <[email protected]> * chore: CHANGELOG を更新 Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(frontend): メール配信が無効な間も配信テストを押せないように メール配信が無効だと EmailService.sendEmail は送信せずに正常終了するため、 SMTP ホストが保存済みでも配信テストが成功したように見えていた。 Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: 菅野谷省吾 <[email protected]> Co-authored-by: かっこかり <[email protected]> * enhance(frontend): チャンネルタイムライン上部に投稿フォームを表示する設定をデッキのチャンネルカラムにも反映 (misskey-dev#17247) * enhance(frontend): チャンネルタイムライン上部に投稿フォームを表示する設定をデッキのチャンネルカラムにも反映 * fix * Update Changelog * Update CHANGELOG.md * fix review * fix * fix * fix --------- Co-authored-by: syuilo <[email protected]> * deps: update dependencies (misskey-dev#18116) * deps: update dependencies * chore(misskey-js): API Extractor レポートの再生成 * update deps * fix(frontend): 絵文字管理画面βの行に色が付かない問題を修正 (misskey-dev#18105) * fix(frontend): 管理画面の絵文字の一覧で、変更した行とエラーのある行に色が付かない (Elythia-Network/elythia#3958) Co-authored-by: しろは <[email protected]> * Update Changelog --------- Co-authored-by: しろは <[email protected]> Co-authored-by: syuilo <[email protected]> * fix(gh): 差分計測系ワークフローで PR 自身の変更だけを比較するように (misskey-dev#18121) * feat(frontend): URLプレビューの埋め込みプレイヤーを自動再生するかどうか設定できるように (misskey-dev#18112) * feat(frontend): URLプレビューの埋め込みプレイヤーを自動再生するかどうか設定できるように * Fix frontend autoplay unit test setup Co-authored-by: syuilo <[email protected]> * Update CHANGELOG.md * fix(frontend): Explicitly disable URL preview player autoplay when the preference is off <!-- coderabbit-ai-generated:v1 --> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Bump version to 2026.11.0-alpha.1 * refactor(frontend): 不要な追加fetchを削減 (misskey-dev#18120) * enhance: バックエンドからQRコード生成処理を削除 (misskey-dev#18100) * enhance: バックエンドからQRコード生成処理を削除 * 🎨 * fix * fix: remove support for node 22 * fix: regenerate lockfile * perf * fix * fix changelog * Update CHANGELOG.md * Bump version to 2026.11.0-beta.0 * fix(i18n): Update locale.ts * deps: update dependencies (misskey-dev#18125) * deps: update dependencies * ✌️ * reorganize dependencies * update deps * perf(backend): バックエンドのビルドを調整 (misskey-dev#18126) * perf(backend): バックエンドのビルドを調整 * ✌️ * perf(backend): バンドルをASCIIのみで出力してソース文字列のメモリを削減 * add comment * Bump version to 2026.11.0-beta.1 * perf(backend): 開発時にしか使わないモジュールを遅延ロード (misskey-dev#18128) * fix(backend): 特定の条件下でドライブがタイムアウトして開けない問題を修正 (misskey-dev#18129) * fix(backend): 特定の条件下でドライブがタイムアウトして開けない問題を修正 * Update Changelog * docs: CHANGELOG の Note に起動スクリプト変更に伴う NODE_OPTIONS の注意を追記 (misskey-dev#18130) `pnpm start` / `pnpm migrateandstart` / Docker も内部で scripts/start.mjs を使うようになり、 NODE_OPTIONS の --require / --import などの相対パスやパッケージ名の解決基準が packages/backend から起動ディレクトリに変わったため、独自の起動スクリプト等で NODE_OPTIONS を設定しているサーバー管理者向けに告知する。 あわせて、タブでインデントされていたため --migrate の項目の子として表示されていた 2 項目のインデントを揃える。 Co-authored-by: Claude Opus 5.5 <[email protected]> * docs(ai): migration 作成手順の Backend ガイドとの比較文を実態に合わせる (misskey-dev#18131) misskey-dev#18110 で Backend ガイドの Migration作成方法が `pnpm --filter backend exec typeorm` に 書き換わり、`pnpm dlx typeorm` の記述は無くなったため、存在しない差異を説明していた。 Co-authored-by: Claude Opus 5.5 <[email protected]> * fix(devcontainer): devcontainer の Node.js バージョンを更新 (misskey-dev#18135) fix(devcontainer): devcontainer の Node.js バージョンを .node-version に合わせる Node.js v22 のままだと pnpm install が ERR_PNPM_UNSUPPORTED_ENGINE で失敗し、 devcontainer の構築が完了しない。 Co-authored-by: Claude Opus 5.5 <[email protected]> * fix(docs): follow-up of misskey-dev#18103 (misskey-dev#18132) * fix: fix changelog * fix indent * chore(deps): update [github actions] update dependencies (misskey-dev#18139) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(backend): スキーマのデフォルト値をそろえる (misskey-dev#18140) fix(backend): スキーマのデフォルト値がconfigの値によって書き換えられる問題を修正 * deps: update minimum node version (misskey-dev#18141) * Bump version to 2026.11.0-rc.0 * Release: 2026.11.0 --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: かっこかり <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: ZerglingGo <[email protected]> Co-authored-by: KanariKanaru <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: anatawa12 <[email protected]> Co-authored-by: Syogo-Suganoya <[email protected]> Co-authored-by: takaion <[email protected]> Co-authored-by: syuilo <[email protected]> Co-authored-by: しろは <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]> Co-authored-by: おさむのひと <[email protected]> Co-authored-by: poppingmoon <[email protected]> Co-authored-by: S1m <[email protected]> Co-authored-by: tamaina <[email protected]> Co-authored-by: Asuka <[email protected]> Co-authored-by: 菅野谷省吾 <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
What
チャットページ(
pages/chat/room.vue)で、ルームやユーザーの取得に失敗したとき、
ページ内に
MkResultで結果を表示するようにした。NO_SUCH_ROOM/NO_SUCH_USERのときは「見つかりません」(notFound)error)Why
Fix #16120
存在しない・アクセス権のないチャットを開いたときに、開けなかったことがユーザーに伝わらないため。
原因は
room.vueが取得の失敗を扱っていないこと。ルーム情報の取得失敗はダイアログを出した後に通常表示へ戻り、
タイムラインの取得失敗はメッセージ 0 件として扱われる。
ユーザーとのチャットは
Promise.allの失敗を捕まえていないため、ロード中のまま終わらない。存在しない場合とアクセス権がない場合は、バックエンドが同じエラーを返すので画面上も区別しない。
Additional info (optional)
ローカル環境で確認した。
存在しないルーム
存在しないユーザーとのチャット
そのほかの確認
メンバーではないルーム(一般ユーザーで他人のルームを開いた)
通信エラー(
chat/rooms/showを失敗させた): 「問題が発生しました」存在するルーム・ユーザーとのチャット: 従来どおり開ける
Checklist
🤖 Generated with Claude Code