AtCoderProblems
AtCoderProblems copied to clipboard
react-refetch を置き換える
フロントエンドとバックエンドの通信にはかつては react-refetch を使っていましたが、react-refetch がメンテされなそうということと、一部の swr による置き換えがうまくいっているので、残った react-refetch の実装も swr を中心としたものに置き換えていきます。
Progress
- [x] TablePage by @Atsuyoshi-N (#951, #958)
- [x] ListPage #1040
- [x] RecentContestList by @yb173 #1063
- [x] RecentSubmissions by @yb173 #1065
- [x] ContestUpdatePage by @atsuya02 #1074
- [x] SingleProblemList by @atsuya02 #1076
- [x] ResetProgress @atsuya02 #1080
- [ ] MyAccountPage
- [ ] UserProblemListPage
フロントエンドの開発環境をセットアップする方法
https://github.com/kenkoooo/AtCoderProblems/tree/master/atcoder-problems-frontend
- yarn をインストールする
- yarn する
- yarn start する
私がこのissueを担当する予定です。
まずは、kenkooooさんとのやり取りで、TablePageのsubmissionsをuseMultipleUserSubmissionsに変更するところから着手します。
@Atsuyoshi-N ではまずは TablePage をお願いしますね
分からないことがあればいつでもここに書いてください
Webアプリ開発初心者ですが、参加させていただきます。よろしくお願いします!
@knagakura お願いします。まずは RecentContestList をお願いします。環境構築については上の方に書いてありますが、分からなければ聞いてください。やることは以下のとおりです。
- InternalAPIClient.ts に最近のコンテストをreact-hookで取得する関数
useRecentContests()を追加する。 - https://github.com/kenkoooo/AtCoderProblems/blob/0282bbde17f6b5628f3bb366fef2ac8cb2fca5f0/atcoder-problems-frontend/src/pages/Internal/VirtualContest/RecentContestList.tsx#L16
ここの部分を
useRecentContestsで置き換える。
わからないことがあれば、どんなレベルでも構いませんので聞いてください。
@kenkoooo お疲れ様です。大きく3点質問があります。
質問事項 useMultipleUserSubmissions(userId, rivals)を作成するにあたって、
- useSWRDataを使用することになると思いますが、第一引数のURLをuserIdごとに指定するにはどうしたら良いですか?
- PromiseでuseSWRDataを囲もうと思ったのですが、それだと、レスポンスが返ってきたかが判断できなさそうだと思い混乱しています。
- fetcherには、既存の fetchUserSubmissions を使用すれば良いですか?
- こちらの関数の中でfetchするURLを指定できればuseSWRDataの第一引数は特に気にしなくても良いですか?
- yarn start(react-scripts start)をしてブラウザで挙動を確認する時、コンソールにinternal server errorが出たときのエラーログの確認方法を教えていただきたいです。
@Atsuyoshi-N
useMultipleUserSubmissionsは既にあるのでそれを使ってください。上の方にある検索ボックスから検索できますのでご活用ください。- バックエンドのログはAWSコンソールに入れば確認することは出来ますが、基本的にはフロントエンドで不正な引数でAPIを叩いていることが原因なので、まずはどのURLでどんな引数で叩いているかを教えてください。もしコードを読めるようでしたら実装は全てこのリポジトリにありますので探していただいても構いませんが、聞いていただくのが手っ取り早いかと思います。
ありがとうございます。
useMultipleUserSubmissions を独自実装しようとしてつまづいていたのでアドバイス非常に助かりました。
TablePageを実装し、draft PRにしたのでお手隙で確認していただきたいです。
他のPageでも追加で実装が発生すると思ったのでdraft PRにしています。 TablePageで1 PRということであれば普通のPRに変更します。
@Atsuyoshi-N TablePage で 1PRにしましょう
@kenkoooo 1PRにしてdraftを外しました。お手隙で確認よろしくお願いします。
@knagakura 調子はどうでしょう?とりあえずローカルで実行できましたか?
@kenkoooo お疲れ様です。 もし次に取り組むタスクがあれば頂きたいです。
@Atsuyoshi-N
TablePage の react-refetch を置き換える作業をやっていただいても良いですか?まだ少し残っているかと思います。
@kenkoooo
かしこまりました。 progressResetList が残っていそうなのでそちらを置き換えます。
@kenkoooo
progressResetList を置き換えるのに際して質問です。
前回のsubmissionsを取得するための関数は用意されていましたが、今回は、APIClient.tsに新たに足して対応するという理解で正しいですか?
はい、たしかInternalAPIClient.tsみたいなのがあって、AtCoder Problems独自のデータに関してはこちらを使っているので、今回もこのファイルに足していただければと思います。
@knagakura 連絡がつかないので一旦 unassign しておきますが、やりたくなったらいつでも言ってください!
@kenkoooo
初めまして。
RecentContestList を担当してもよろしいでしょうか?
@yb173 ぜひ!分からないことがあればいつでも聞いてください!
@kenkoooo
順番前後しますが、次は RecentSubmissions を担当してもよろしいですか?
@yb173 ぜひ〜〜〜
@kenkoooo
初めまして!
ContestUpdatePageを担当してもよろしいですか?
@atsuya02 ぜひお願いします!
@kenkoooo
ContestUpdatePageの動作確認方法を教えていただきたいです。
@atsuya02 yarn start でローカルで走るのはできていますか?
@kenkoooo
yarn startでローカルで走るのはできています。
ログインをしておらず、Create New Contestボタンが表示されていませんでした。
解決しました、申し訳ありません!
良かったです!
@kenkoooo
SingleProblemListを担当してもよろしいでしょうか?
@atsuya02 ぜひ!
@kenkoooo
ResetProgressを担当してもよろしいでしょうか?