Browse Source

Fix displaying dates in cached inner chat

master
Eduard Kuzmenko 3 years ago
parent
commit
941d0840b5
  1. 32
      src/components/chat/bubbles.ts
  2. 2
      src/lib/appManagers/appMessagesManager.ts

32
src/components/chat/bubbles.ts

@ -2659,6 +2659,10 @@ export default class ChatBubbles {
const afterSetPromise = Promise.all([setPeerPromise, getHeavyAnimationPromise()]); const afterSetPromise = Promise.all([setPeerPromise, getHeavyAnimationPromise()]);
afterSetPromise.then(() => { // check whether list isn't full afterSetPromise.then(() => { // check whether list isn't full
scrollable.checkForTriggers(); scrollable.checkForTriggers();
if(cached) {
this.onRenderScrollSet();
}
}); });
this.chat.dispatchEvent('setPeer', lastMsgId, !isJump); this.chat.dispatchEvent('setPeer', lastMsgId, !isJump);
@ -4063,6 +4067,7 @@ export default class ChatBubbles {
} */ } */
let scrollSaver: ScrollSaver, hadScroll: boolean/* , viewportSlice: ReturnType<ChatBubbles['getViewportSlice']> */; let scrollSaver: ScrollSaver, hadScroll: boolean/* , viewportSlice: ReturnType<ChatBubbles['getViewportSlice']> */;
if(this.chatInner.parentElement) {
this.messagesQueueOnRender = () => { this.messagesQueueOnRender = () => {
scrollSaver = new ScrollSaver(this.scrollable, reverse); scrollSaver = new ScrollSaver(this.scrollable, reverse);
@ -4075,6 +4080,7 @@ export default class ChatBubbles {
const saved = scrollSaver.getSaved(); const saved = scrollSaver.getSaved();
hadScroll = saved.scrollHeight !== saved.clientHeight; hadScroll = saved.scrollHeight !== saved.clientHeight;
}; };
}
if(this.needReflowScroll) { if(this.needReflowScroll) {
reflowScrollableElement(this.scrollable.container); reflowScrollableElement(this.scrollable.container);
@ -4122,12 +4128,26 @@ export default class ChatBubbles {
if(scrollSaver) { if(scrollSaver) {
scrollSaver.restore(history.length === 1 && !reverse ? false : true); scrollSaver.restore(history.length === 1 && !reverse ? false : true);
this.onRenderScrollSet(scrollSaver.getSaved());
}
return true;
}
private onRenderScrollSet(state?: {scrollHeight: number, clientHeight: number}) {
const className = 'has-sticky-dates'; const className = 'has-sticky-dates';
const state = scrollSaver.getSaved(); if(!this.bubblesContainer.classList.contains(className)) {
const isLoading = !this.preloader.detached; const isLoading = !this.preloader.detached;
const hasScroll = state.scrollHeight !== state.clientHeight;
if((hasScroll || isLoading) && !this.bubblesContainer.classList.contains(className)) { if(isLoading ||
(
state ??= {
scrollHeight: this.scrollable.scrollHeight,
clientHeight: this.scrollable.container.clientHeight
},
state.scrollHeight !== state.clientHeight
)
) {
/* for(const timestamp in this.dateMessages) { /* for(const timestamp in this.dateMessages) {
const dateMessage = this.dateMessages[timestamp]; const dateMessage = this.dateMessages[timestamp];
dateMessage.div.classList.add('is-sticky'); dateMessage.div.classList.add('is-sticky');
@ -4144,12 +4164,12 @@ export default class ChatBubbles {
} else { } else {
setTimeout(callback, 600); setTimeout(callback, 600);
} }
} else {
this.willScrollOnLoad = undefined; return;
} }
} }
return true; this.willScrollOnLoad = undefined;
} }
onDatePick = (timestamp: number) => { onDatePick = (timestamp: number) => {

2
src/lib/appManagers/appMessagesManager.ts

@ -5568,7 +5568,7 @@ export class AppMessagesManager {
} }
const chat: Chat.chat | Chat.channel = appChatsManager.getChat(message.peerId.toChatId()); const chat: Chat.chat | Chat.channel = appChatsManager.getChat(message.peerId.toChatId());
return chat.participants_count < rootScope.appConfig.chat_read_mark_size_threshold && return chat.participants_count <= rootScope.appConfig.chat_read_mark_size_threshold &&
(tsNow(true) - message.date) < rootScope.appConfig.chat_read_mark_expire_period; (tsNow(true) - message.date) < rootScope.appConfig.chat_read_mark_expire_period;
} }

Loading…
Cancel
Save