Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

通知が1回のみ表示されるようにした #107

Merged
merged 4 commits into from
Oct 31, 2024

Conversation

kimurash
Copy link
Member

やったこと

タイトル参照

確認した方法

目視で確認

pnpm run dev

スクリーンショット

2024-10-29.23.32.41.mov
  • ログイン後の通知
  • 書籍削除後の通知
  • ログアウト後の通知

自動生成したコード

なし

@kimurash kimurash added the frontend frontend development label Oct 29, 2024
@kimurash kimurash requested a review from Kosei805 October 29, 2024 14:49
@kimurash kimurash self-assigned this Oct 29, 2024
@kimurash kimurash changed the title 通知が1回のみ表示されるようにする 通知が1回のみ表示されるようにした Oct 30, 2024
Copy link
Contributor

@Kosei805 Kosei805 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビューしました。
質問に回答してくれたらマージしてオーケーよ
LGTMです!!

@@ -28,7 +28,7 @@ export const loader = async ({ request }: LoaderFunctionArgs) => {

// 未ログインの場合
// エラーメッセージを取得
const data = { error: session.get('loginError') };
const data = { error: session.get('error') };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sessionは一律errorにしたんか

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

異なるrouteが同じflashを読み出さないように、flashの種類を分けてたんだけど、エラーメッセージの増加に伴って管理コストが増大するので、1つに絞ることにした

session.set('userId', response.data.id.toString());
session.set('sessionToken', response.data.sessionToken!);
// FIXME: homeのloaderで読み出してもCookieが削除されない
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これはまだ解決してないの?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そのコメントは消しておかねば

if (error) {
errorNotification(error);
}
}, [error]);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

結局このやり方にしたんか
このやり方やと、同じエラーが連発した時に通知が一回しか出ない問題があったけど解決したん?
flashで入れてるから一回undefinedに変換されて良い感じにuseEffectが呼ばれるようになるとか

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ログイン画面ではerrorではなくnavigation.stateを依存関係にしているので、エラーが発生した回数だけ通知が表示される

Copy link
Contributor

@Kosei805 Kosei805 Oct 31, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他の画面ではおなじerrorは連続で呼ばれないだろってイメージ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど、ログイン画面以外で同じエラーが連続して発生したときにちゃんと通知がでるんか?ってことだね

通知がでてから一度loaderが走れば、errorがundefinedになるので、同じエラーでも通知が出てくれると思う

手元の環境で試してみる。エラーは再現が難しいので、本の削除を2回繰り返したときに、成功の通知が2回とも出るか?を確かめてみる。

Copy link
Member Author

@kimurash kimurash Oct 31, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2回は出なかった

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useRevalidator を使ってsuccessとerrorの値を再検証することで解決した

https://remix.run/docs/en/main/hooks/use-revalidator

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ならマージして良いよ!

@kimurash kimurash merged commit b14abaf into main Oct 31, 2024
3 checks passed
@kimurash kimurash deleted the 105-show-ntf-only-once branch November 2, 2024 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
frontend frontend development
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

通知が1回のみ表示されるようにする
2 participants