-
Notifications
You must be signed in to change notification settings - Fork 4
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
ログアウト状態で作成した視聴予定がログインすると消えてしまう #131
Comments
設計としては意図した挙動です。ですが、期待する挙動ではないと感じられるのであれば、より良い方に変更する方法を考えたいと思います。 Plan, User, Profileの関係性まず、視聴予定(Plan)とユーザー(User)、そしてGitHubでのサインアップアカウント(Profile)の関係性から説明します。利用者がPlanを作成するためには、必ずUserが必要です。Userが作成される過程には、「サインアップせずにPlanを作成する」方法と、「サインアップしてProfileを作ることで自動的にUserとPlanが割り当てられる」という二つの方法があります。 サインアップをせずにPlanを作成する方法では、まず最初にGitHubでのサインアップをせず、タイムテーブルの画面から予定に追加ボタンを押し、利用規約に同意することでUserとPlanが作成され、セッションにはUserが設定されます。このときProfileは存在しません。 サインアップしてProfileを作ることで自動的にUserとPlanが割り当てられる方法では、まず最初にGitHubのOAuthを利用してProfileを作成し、付随して自動的にUserとPlanが作成され、セッションにはUserが設定されます。 サインアップをせずにPlanを作成この方法のとき、UserはPlanを持っていますが、Profileを持っていません。この状態でGitHubでサインアップすると、新たにProfileが作成され、Userに紐付けられます。Planはサインアップ前の物が引き継がれます。この挙動にした意図は、サインアップ前に匿名で作成していた予定を、サインアップ後も引き継ぎたいと思われるためです。 サインアップしてUserとPlanを作成この方法のとき、GitHubでサインアップした時点で空のPlanがUserに割り当てられます。その後、利用者はこのPlanに視聴予定を追加していきます。 再現手順の挙動が発生する理由上記の関係性の説明のとおり、利用者がサインアップした段階では「サインアップ前のPlanを引き継ぐ」もしくは「最初から空のPlanが割り当てられる」かのどちらかです。つまり、サインアップした時点で、そのPlanは利用者が意思を持って自分の作成したプランです。 その前提の上で、再現手順を振り返ると、「3. 視聴予定が消える(ログイン状態の視聴予定で上書きされる)」の状態は、既に一度サインアップして自分のPlanを所有しているにも関わらず、ログアウトして再度別のPlanの作成を始めている状態です。このとき、サインアップ済みの利用者が保有しているPlanはUserに紐付いているので、ログアウト後に作成した匿名ユーザーのPlanとは別物です。その二つをマージすることは矛盾が生じることになるため、サインアップ後は本来所有していたPlanのみを残す、という挙動を意図して設計しました。 議論したい点このアプリの使用上、利用者は匿名で視聴予定を作成できる必要があります。理由として、去年までの予定は全てサインアップ無しで作成し閲覧できるため、互換性の観点から必要です。また、去年まではGitHubのサインアップは不要で予定を作成できたのに、今年から必須にするというのは利用者に不便を強いるからです。そのため、視聴予定を追加するためにログインを前提とするのは無しです。 期待する挙動でも書かれている通り、この状態を再現するためには、サインアップ済みの利用者が一度ログアウトして予定を作成する必要があります。ログアウトした状態での操作を、ログイン後に復元したいという期待をどのように解決するか決められれば、対応策が何かしら考えられるかと思います。 |
@kinoppyd
すみません、私が勘違いしており、「サインアップ前のPlanを引き継ぐ」という挙動ができていないものと思い込んでしまっておりました🙇♀ 一方で、
については(nice to haveの範疇かもしれませんが)一定ありそうだなと思いました。 「どのように解決するか」については、復元はしないという仕様はそのままにして、ログアウトしていることに気付いてもらいやすくするのと、仕様が伝わるようにするが手っ取り早いのかな、と思いました。 |
再現手順
※ ログアウトしても、1で追加した視聴予定は復活しない。
期待する挙動
3のつづきで
4. ログイン状態で視聴予定を追加する
5. ログアウトする(視聴予定がリセットされる)
6. ログアウト状態で視聴予定を追加する
7. ログインする
8. ログイン状態の視聴予定 vs ログアウト状態の視聴予定、どっちを表示するんだい?
The text was updated successfully, but these errors were encountered: