おみくじが引けるかどうかを開く前に分かるようにする - #236
Merged
Merged
Conversation
次に引ける時刻は前回引いた瞬間に確定しているのに、どこにも覚えていなかった。 そのため「おみくじ」を開くたびに トークン取得 → omikujiGo(peek) の往復を 待たされ、そのあとで初めて「まだ引けない」と分かっていた。押してから待たされた 末に引けないと知らされるのが体感として一番つらい。 - 次に引ける時刻を localStorage に覚える(utils/omikujiCooldown.js)。 キーに github_id を含め、アカウント切替で前の人の残り時間を見せない - おみくじページはそれを読んで、通信を待たずにクールダウン表示から始める。 peek の応答が来たら上書きする(正はサーバー) - ヘッダのリンクは引けないとき「前回のおみくじ」になる。開く前に、引けるのか 前回の結果を見に行くだけなのかが分かる 表示を先出しするだけで、実際に引けるかは常にサーバーが決める。端末の時計は 信用せず8時間で頭打ちにする。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
引けるかどうかは前回いつ引いたかだけで決まり、それは前回引いた瞬間に確定して いる。にもかかわらずどこにも覚えていなかったため、開くたびに omikujiGo(peek) の往復を待たされ、そのあとで初めて「まだ引けない」と分かっていた。 - 次に引ける時刻と前回の結果を localStorage に持つ(utils/omikujiCooldown.js) - トップページにカウントダウンを出す。クールダウン中はボタンを 「前回のおみくじ」にする。ここではサーバーに問い合わせない - おみくじページは保存した結果とカウントダウンを通信を待たずに出す。 「前回のおみくじ」を押せばその場で過去の結果が見える - ヘッダのリンクも同じ表記にする 表示を先出しするだけで、実際に引けるかは常にサーバーが決める。端末の時計は 信用せず8時間で頭打ち。別端末では保存が無いので従来どおり peek から復元する。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
残り秒を1秒ずつ引いていたため、タブが背面にあると setInterval が間引かれて (止まることもある)実際より長い残り時間を表示していた。戻ってきたときに 「引けるのに引けないと見える」ことになり、今回直したかった症状そのものが 再発する。 - おみくじページ: 明ける時刻を決めて毎tickそこから計算する - トップページ: 保存済みの「次に引ける時刻」から毎tick計算し直す - 残り時間の整形を omikujiCooldown.js に一本化し、両ページで同じ表記にする Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
kojira
pushed a commit
that referenced
this pull request
Aug 4, 2026
kojira
pushed a commit
that referenced
this pull request
Aug 4, 2026
kojira
added a commit
that referenced
this pull request
Aug 20, 2026
おみくじを引くボタンを押して演出(matter.js)が始まった直後に、引く前の画面へ 戻される。リロードではなく Vue の状態が上書きされている。 保存済みの状態で通信を待たずに画面を出すようにした(#236)結果、peek の応答が 返る前からボタンが押せる。押すと state が animating になるが、その後に到着した peek の応答が applyResponse で state を available/cooldown に戻すため、演出が 畳まれて元の画面に戻っていた。 - 問い合わせが1度でも完了するまでボタンを disabled にする(statusChecked)。 確認中であることも表示する - 演出中に届いた peek の応答は state を触らない(抽選側が状態を持っている) - 演出中にクールダウンが明けたときのタイマーも state を触らない - startScene の入口でも確認前は止める Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
kojira
added a commit
that referenced
this pull request
Aug 20, 2026
おみくじを引くボタンを押して演出(matter.js)が始まった直後に、引く前の画面へ 戻される。リロードではなく Vue の状態が上書きされている。 保存済みの状態で通信を待たずに画面を出すようにした(#236)結果、peek の応答が 返る前からボタンが押せる。押すと state が animating になるが、その後に到着した peek の応答が applyResponse で state を available/cooldown に戻すため、演出が 畳まれて元の画面に戻っていた。 - 問い合わせが1度でも完了するまでボタンを disabled にする(statusChecked)。 確認中であることも表示する - その問い合わせより後に演出が始まっていたら応答を捨てる(sceneCount の世代)。 「今 animating か」で判定してはいけない。演出が結果より先に終わったときの 取り直し(onLanded)はまだ animating のまま呼ぶため、捨てると演出が閉じずに固まる - 演出中にクールダウンが明けたときのタイマーも state を触らない - startScene の入口でも確認前は止める Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
引けるかどうかは前回いつ引いたかだけで決まり、それは前回引いた瞬間に確定している。
にもかかわらずどこにも覚えていなかったため、「おみくじ」を開くたびに
トークン取得 →
omikujiGo(peek) の往復(関数がコールドなら数秒)を待たされ、そのあとで初めて「まだ引けない」と分かる状態だった。押してから待たされた
末に引けないと知らされるのが一番つらい。
変更
次に引ける時刻と前回の結果を localStorage に持つ(
web/utils/omikujiCooldown.js)。キーに
github_idを含め、アカウント切替で前の人のものを見せない。「前回のおみくじ」に変える。引ければ「おみくじを引く」に戻る。
ここではサーバーに問い合わせない
「前回のおみくじ」を押せばその場で過去の結果が見える
カウントダウンは明ける時刻(絶対時刻)から毎回計算する。残り秒を1秒ずつ引くと、
タブが背面のとき
setIntervalが間引かれて実際より長い残り時間を表示し、「引けるのに引けないと見える」という直したかった症状が再発するため。
方針
表示を先出しするだけで、実際に引けるかは常にサーバーが決める(端末の時計は
書き換えられる)。残り時間は8時間(最長のクールダウン)で頭打ち。別端末では保存が
無いので、従来どおり peek の応答から復元される。
テスト
web/scripts/test-omikuji-cooldown.js(nodeで実行):yarn generate通過。Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Generated by Claude Code