From c239058624dcd880ec1c5f3c436f3a2a06fc22c3 Mon Sep 17 00:00:00 2001 From: _ Date: Mon, 30 Oct 2023 09:12:20 +0900 Subject: feat(frontend): スワイプやボタンでタイムラインを再読込する機能 (#12113) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * pc reloading * add: disable TL websocket option * fix: stream disconnect when reload * add: pull to refresh * fix: pull to refresh * add changelog * fact: change to disableStreamingTimeline * lint * remove: en-US text * refactor * refactor * add license identifier * tweak * Update MkPullToRefresh.vue * Update MkPullToRefresh.vue * change name timeoutHeartBeat * tweak * :art: --------- Co-authored-by: syuilo --- packages/frontend/src/boot/main-boot.ts | 3 +- packages/frontend/src/components/MkPageWindow.vue | 2 + packages/frontend/src/components/MkPagination.vue | 6 + .../frontend/src/components/MkPullToRefresh.vue | 238 +++++++++++++++++++++ packages/frontend/src/components/MkTimeline.vue | 136 +++++++----- packages/frontend/src/pages/settings/general.vue | 3 + packages/frontend/src/pages/timeline.vue | 52 +++-- packages/frontend/src/store.ts | 4 + packages/frontend/src/stream.ts | 20 +- .../frontend/src/ui/_common_/stream-indicator.vue | 3 +- packages/frontend/src/ui/universal.vue | 2 +- 11 files changed, 389 insertions(+), 80 deletions(-) create mode 100644 packages/frontend/src/components/MkPullToRefresh.vue (limited to 'packages') diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts index f2af951d63..800a3b079f 100644 --- a/packages/frontend/src/boot/main-boot.ts +++ b/packages/frontend/src/boot/main-boot.ts @@ -8,7 +8,7 @@ import { common } from './common.js'; import { version, ui, lang, updateLocale } from '@/config.js'; import { i18n, updateI18n } from '@/i18n.js'; import { confirm, alert, post, popup, toast } from '@/os.js'; -import { useStream } from '@/stream.js'; +import { useStream, isReloading } from '@/stream.js'; import * as sound from '@/scripts/sound.js'; import { $i, refreshAccount, login, updateAccount, signout } from '@/account.js'; import { defaultStore, ColdDeviceStorage } from '@/store.js'; @@ -39,6 +39,7 @@ export async function mainBoot() { let reloadDialogShowing = false; stream.on('_disconnected_', async () => { + if (isReloading) return; if (defaultStore.state.serverDisconnectedBehavior === 'reload') { location.reload(); } else if (defaultStore.state.serverDisconnectedBehavior === 'dialog') { diff --git a/packages/frontend/src/components/MkPageWindow.vue b/packages/frontend/src/components/MkPageWindow.vue index 3b273ac545..5edae1bc3c 100644 --- a/packages/frontend/src/components/MkPageWindow.vue +++ b/packages/frontend/src/components/MkPageWindow.vue @@ -166,6 +166,8 @@ defineExpose({ diff --git a/packages/frontend/src/components/MkTimeline.vue b/packages/frontend/src/components/MkTimeline.vue index cdd72febd1..a2ada35f91 100644 --- a/packages/frontend/src/components/MkTimeline.vue +++ b/packages/frontend/src/components/MkTimeline.vue @@ -4,13 +4,16 @@ SPDX-License-Identifier: AGPL-3.0-only -->