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

授業追加時の重複チェックを実装 #665

Merged
merged 3 commits into from
Apr 2, 2023

Conversation

HosokawaR
Copy link
Member

@HosokawaR HosokawaR commented Apr 1, 2023

Resolves #664

変更点

この PR の変更点は以下です。

  1. 重複スケジュール検知のロジックがバグっていたので修正しました ( 7c9c727 )
    Promise を待たずに .filter を適応しているなどのミスで、常に重複スケジュールがないと判断されていました。
    このロジックは今回の機能追加と関連がある領域だったので、この PR で直しました。
    ↓が出てくるように修正した
    image

  2. すでに登録した講義がある場合に Toast でエラーを通知するようにしました ( 45fb9e3 )
    1. はあくまで重複スケジュールがあったときの警告で、さらに通常講義のみに限定されます。したがって 1 とは別に同じ講義を追加しようとしたらエラー Toast を出現させる仕組みが必要です。これをこのコミットで追加しました。
    また Toast の表示時間も調整しました。
    image

  3. 前述の 2. のエラーに遭遇したユーザ数を数えるための Tracking を追加しました ( 75b20cb )
    Sentry を見ると同様のエラーに遭遇したユーザは多く、そもそも重複した講義を登録しようとさせない UX が必要かもしれません(登録済みの講義はチェックボックスが押せないなど)
    今回は暫定的な対応で修正しますが、今後上記のような改善をする場合、どれぐらいのユーザがこのエラー Toast を見たのかを知るために、Tracking を追加しました。

@vercel
Copy link

vercel bot commented Apr 1, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
twinte-front-staging ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 2, 2023 2:46am

Comment on lines -476 to -480
await Promise.all(
selectedSearchResults.filter(
({ schedules }) =>
!Usecase.checkScheduleDuplicate(ports)(year.value, schedules)
)
Copy link
Member Author

Choose a reason for hiding this comment

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

以下の理由で常に !Usecase.checkScheduleDuplicate が false になっていました

await Promise.all(
  selectedSearchResults.filter(
    ({ schedules }) =>
      !Usecase.checkScheduleDuplicate(ports)(year.value, schedules)  // !Boolean(Promise<T>) なので常に false になる
  )
)

@HosokawaR HosokawaR requested a review from hayato24s April 2, 2023 03:19
Comment on lines +482 to +489
const duplicatedCourses = selectedSearchResults
.filter(({ course: { code: selectedCourseCode } }) => {
return registeredCourse.some(
({ code: registeredCourseCode }) =>
registeredCourseCode === selectedCourseCode
);
})
.map(({ course }) => course);
Copy link
Member Author

Choose a reason for hiding this comment

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

ここらへんを checkScheduleDuplicate のように Usecase にするべきかどうかは迷ったので意見があればぜひ!

Copy link
Contributor

Choose a reason for hiding this comment

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

Usecaseにした方がいいかなと思いました。

Copy link
Member Author

@HosokawaR HosokawaR Apr 2, 2023

Choose a reason for hiding this comment

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

ありがとうございます!エラー数が増えてきたので一旦これで Merge しますが、後ほど UseCase に直します。

Ref: #666

Copy link
Contributor

@hayato24s hayato24s left a comment

Choose a reason for hiding this comment

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

修正ありがとうございます!
去年の夏からずっとバグってたと思うと恐ろしいですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

登録済みの講義を登録しようとしてエラー画面が出現する
2 participants