diff --git a/src/components/Main/MainView/MessagesScroller/MessagesScroller.vue b/src/components/Main/MainView/MessagesScroller/MessagesScroller.vue index ddedda3522..748e8a9c50 100644 --- a/src/components/Main/MainView/MessagesScroller/MessagesScroller.vue +++ b/src/components/Main/MainView/MessagesScroller/MessagesScroller.vue @@ -217,11 +217,22 @@ watch( state.height = newHeight return } - rootRef.value.scrollTo({ - top: newHeight - state.height - }) - } - state.height = newHeight + //上に追加された時はスクロール位置を変更する。 + if (props.lastLoadingDirection === 'former') { + rootRef.value.scrollTo({ + top: newHeight - state.height + }) + state.height = newHeight + } + + if (props.lastLoadingDirection === 'latest') { + // チャンネルを移動したとき、 + rootRef.value.scrollTo({ + top: newHeight + }) + state.height = newHeight + } + } else state.height = newHeight }, { deep: true, flush: 'post' } ) diff --git a/src/components/Main/MainView/MessagesScroller/composables/useMessagesFetcher.ts b/src/components/Main/MainView/MessagesScroller/composables/useMessagesFetcher.ts index 3cad0bbc40..1a8737503a 100644 --- a/src/components/Main/MainView/MessagesScroller/composables/useMessagesFetcher.ts +++ b/src/components/Main/MainView/MessagesScroller/composables/useMessagesFetcher.ts @@ -96,6 +96,24 @@ const useMessageFetcher = ( ) } + const onLoadLatestMessagesRequest = async () => { + isLoading.value = true + + await runWithIdentifierCheck( + async () => { + const newMessageIds = await fetchFormerMessages(isReachedEnd) + await renderMessageFromIds(newMessageIds) + return newMessageIds + }, + newMessageIds => { + isLoading.value = false + isInitialLoad.value = false + lastLoadingDirection.value = 'latest' + messageIds.value = [...new Set([...newMessageIds, ...messageIds.value])] + } + ) + } + const onLoadLatterMessagesRequest = async () => { if (!fetchLatterMessages || isReachedLatest.value) { return @@ -191,7 +209,7 @@ const useMessageFetcher = ( onLoadAroundMessagesRequest(props.entryMessageId) } else { isReachedLatest.value = true - onLoadFormerMessagesRequest() + onLoadLatestMessagesRequest() } } diff --git a/src/components/Main/MainView/QallView/QallMessageView.vue b/src/components/Main/MainView/QallView/QallMessageView.vue index cf2d98eea4..37e734d9ea 100644 --- a/src/components/Main/MainView/QallView/QallMessageView.vue +++ b/src/components/Main/MainView/QallView/QallMessageView.vue @@ -1,14 +1,14 @@