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

バックグラウンドで一定時間経過したらページネーションのアイテム更新をしない #10053

Merged
merged 1 commit into from
Feb 24, 2023

Conversation

yszkst
Copy link
Contributor

@yszkst yszkst commented Feb 23, 2023

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

@github-actions github-actions bot added the packages/frontend Client side specific issue/PR label Feb 23, 2023
@codecov
Copy link

codecov bot commented Feb 23, 2023

Codecov Report

Merging #10053 (014fdc5) into develop (a1f3bd6) will increase coverage by 0.00%.
The diff coverage is n/a.

@@           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     
Impacted Files Coverage Δ
packages/backend/src/misc/secure-rndstr.ts 100.00% <0.00%> (+9.52%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

Comment on lines +1 to +19
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;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

関数にせず最初からexport const visibilityしてaddEventListenerもモジュールのルートで呼んでいいような気がした

Copy link
Member

Choose a reason for hiding this comment

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

そういうコードがフロントエンドのテストを困難にしている節があるからこういう書き方の方がありがたいのと、モジュールの副作用は作らない方がいい

Copy link
Contributor

@tamaina tamaina Feb 24, 2023

Choose a reason for hiding this comment

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

よくわからんけど、リファクターしちゃうかもしれないのでその旨を書いておくほうが良さそう

Copy link
Contributor Author

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でテスト書いていないけれども。)

Copy link
Member

Choose a reason for hiding this comment

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

リファクタでこの形になることはあっても逆にこの形から副作用がある形にリファクタされることは普通ならあり得ないと思う

@syuilo syuilo merged commit cc8d60e into misskey-dev:develop Feb 24, 2023
@syuilo
Copy link
Member

syuilo commented Feb 24, 2023

👍

syuilo added a commit that referenced this pull request Feb 26, 2023
* 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
packages/frontend Client side specific issue/PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants