-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
バックグラウンドで一定時間経過したらページネーションのアイテム更新をしない #10053
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #10053 +/- ##
========================================
Coverage 24.60% 24.61%
========================================
Files 705 705
Lines 65213 65213
Branches 2297 2297
========================================
+ Hits 16048 16050 +2
+ Misses 49165 49163 -2
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
import { onMounted, onUnmounted, ref, Ref } from 'vue'; | ||
|
||
export function useDocumentVisibility(): Ref<DocumentVisibilityState> { | ||
const visibility = ref(document.visibilityState); | ||
|
||
const onChange = (): void => { | ||
visibility.value = document.visibilityState; | ||
}; | ||
|
||
onMounted(() => { | ||
document.addEventListener('visibilitychange', onChange); | ||
}); | ||
|
||
onUnmounted(() => { | ||
document.removeEventListener('visibilitychange', onChange); | ||
}); | ||
|
||
return visibility; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
関数にせず最初からexport const visibilityしてaddEventListenerもモジュールのルートで呼んでいいような気がした
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
そういうコードがフロントエンドのテストを困難にしている節があるからこういう書き方の方がありがたいのと、モジュールの副作用は作らない方がいい
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
よくわからんけど、リファクターしちゃうかもしれないのでその旨を書いておくほうが良さそう
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
useなんちゃら (composable) だとComponentを包み込むより、Componentに使われる道具のイメージがあります。
テストで言うとイベントの制御より変数の偽物をセットする方が楽です。(このPRでテスト書いていないけれども。)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
リファクタでこの形になることはあっても逆にこの形から副作用がある形にリファクタされることは普通ならあり得ないと思う
👍 |
* Add dialog to remove follower (#9718) * update PULL_REQUEST_TEMPLATE * 起動時にRedisの疎通確認を行う (#9832) * 起動時にRedisの疎通確認を行う * check:connectをstart内に移動 --------- Co-authored-by: tamaina <[email protected]> * Pass `--detectOpenHandles` to Jest (#9895) Co-authored-by: tamaina <[email protected]> * enhance(client): MkUrlPreviewの閉じるボタンを見やすく (#9913) Co-authored-by: tamaina <[email protected]> * test(backend): restore ap-request tests (#9997) Co-authored-by: tamaina <[email protected]> * fix/refaftor(client): MkTime.vueの変更 (#10061) * fix(client): MkTime.timeにstringでもDateでない値が入った場合、?を表示 * fix(client): MkTimeを改良 * numberを許容 * falsyな値もとる * 不明 * ありません * fix * fix(server): notes/createで、fileIdsと見つかったファイルの数が異なる場合はエラーにする (#9911) * fix(server): notes/createで、fileIdsと見つかったファイルの数が異なる場合はエラーにする * NO_SUCH_FILE * Update codecov.yml * Update apple-touch-icon.png * デプロイされているプレビュー環境がない場合はプレビュー環境を削除しないようにする (#10062) * デプロイされているプレビュー環境がない場合はDestroy preview environmentを実行しないようにする * CIがない場合の処理追加 * enhance(client): improve clip menu ux * 未知のユーザーが deleteActor されたら処理をスキップする (#10067) * fix(client): Android ChromeでPWAとしてインストールできない問題を修正 (#10069) * fix(client): Android ChromeでPWAとしてインストールできない問題を修正 * 順番関係ある? * Windows環境でswcを使うと正常にビルドができない問題の修正 (#10074) * Update @swc/core to v1.3.36 * Update CHANGELOG.md * Update CHANGELOG.md * バックグラウンドで一定時間経過したらページネーションのアイテム更新をしない (#10053) * 🎨 * feat: 2つの検索画面の統合 (#9949) (#10038) * feat: 検索画面の UI を統一 * fix: エラーの修正 * add: changelog --------- Co-authored-by: syuilo <[email protected]> * enhance(client): ノートメニューからユーザーメニューを開けるように Resolve #10019 * enhance(client): renoteした際の表示を改善 Resolve #10078 * Update CHANGELOG.md * enhance(client): tweak contextmenu position calculation * 🎨 * 🎨 * feat: in-channel featured note Resolve #9938 * refactor(frontend): fix eslint error (#10084) * Simplify search.vue (remove dead code) (#10088) * Simplify search.vue This is already handled by the code above it, no need to handle it twice * Remove unused imports * Update about-misskey.vue * test(server): add validation test of api:notes/create (#10090) * fix(server): notes/createのバリデーションが効いていない Fix #10079 Co-Authored-By: mei23 <[email protected]> * anyOf内にバリデーションを書いても最初の一つしかチェックされない * ✌️ * wip * wip * ✌️ * RequiredProp * Revert "RequiredProp" This reverts commit 7469390. * add api:notes/create * fix lint * text * ✌️ * improve readability --------- Co-authored-by: mei23 <[email protected]> Co-authored-by: syuilo <[email protected]> * New Crowdin updates (#10059) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Romanian) * New translations ja-JP.yml (French) * New translations ja-JP.yml (Spanish) * New translations ja-JP.yml (Arabic) * New translations ja-JP.yml (Czech) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Italian) * New translations ja-JP.yml (Korean) * New translations ja-JP.yml (Polish) * New translations ja-JP.yml (Russian) * New translations ja-JP.yml (Slovak) * New translations ja-JP.yml (Ukrainian) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Vietnamese) * New translations ja-JP.yml (Indonesian) * New translations ja-JP.yml (Bengali) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (German) * New translations ja-JP.yml (English) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Ukrainian) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Ukrainian) * New translations ja-JP.yml (Ukrainian) * New translations ja-JP.yml (Ukrainian) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Spanish) * New translations ja-JP.yml (Spanish) * enhance(client): improve user menu ux * enhance(client): photoswipe 表示時に戻る操作をしても前の画面に戻らないように (#10098) * enhance(client): photoswipe 表示時に戻る操作をしても前の画面に戻らないように * add: changelog --------- Co-authored-by: syuilo <[email protected]> * enhance(client): メニューの「もっと」からインスタンス情報を見れるように * [Fix] fixed an typo in error message (#10102) * Update codecov.yml * Update CHANGELOG.md * fix(server): エラーのスタックトレースは返さないように Fix #10064 * [chore]Editorconfig: ymlに加えてyamlファイルに対しても同じ規約を適用する (#10081) * Added yaml file in addition to yml file, in editorconfig * Applied editorconfig for pnpm-workspace.yaml --------- Co-authored-by: syuilo <[email protected]> * update deps * ホームタイムラインの読み込みでクエリタイムアウトになるのを修正する (#10106) * refactor * New translations ja-JP.yml (French) (#10103) * Update CHANGELOG.md * 13.8.0 --------- Co-authored-by: atsuchan <[email protected]> Co-authored-by: Masaya Suzuki <[email protected]> Co-authored-by: tamaina <[email protected]> Co-authored-by: Kagami Sascha Rosylight <[email protected]> Co-authored-by: taiy <[email protected]> Co-authored-by: xianon <[email protected]> Co-authored-by: kabo2468 <[email protected]> Co-authored-by: YS <[email protected]> Co-authored-by: Khsmty <[email protected]> Co-authored-by: Soni L <[email protected]> Co-authored-by: mei23 <[email protected]> Co-authored-by: daima3629 <[email protected]> Co-authored-by: Windymelt <[email protected]>
What
タグがバックグラウンドに移って10秒経ったらTLを更新せずにキューへ積む処理にする。
Why
Paginationのitemsを更新しDOMが作られるとChromeのバックグラウンドで解放されず受け取ったNote分メモリが溜まり続ける。
これをスクロールが途中のときと同様にMkNoteがマウントされないqueueへ積むようにする。
タブを変えてすぐに戻ることがあるので猶予を設ける。
Additional info (optional)
見えているNoteの更新(reaction, pollなどuse-note-capture.tsまわり) の対処をしていないので、たとえばバックグラウンドに移る前に見ているNoteに大量のリアクションがつけばメモリは増える。
猶予の10秒に強い根拠はない。
related: #5467 #6385 #9995