Browse Source

Fix unread replies status on empty threads

Fix clearing chat after it is closed
Fix bubbles loadedAll
master
Eduard Kuzmenko 4 years ago
parent
commit
b255c746fe
  1. 4
      src/components/chat/bubbles.ts
  2. 4
      src/components/chat/chat.ts
  3. 4
      src/components/chat/replies.ts
  4. 2
      src/config/app.ts
  5. 4
      src/lib/appManagers/appImManager.ts
  6. 4
      src/lib/appManagers/appMessagesManager.ts

4
src/components/chat/bubbles.ts

@ -2684,11 +2684,11 @@ export default class ChatBubbles {
const historyStorage = this.appMessagesManager.getHistoryStorage(this.peerId, this.chat.threadId); const historyStorage = this.appMessagesManager.getHistoryStorage(this.peerId, this.chat.threadId);
const firstSlice = historyStorage.history.first; const firstSlice = historyStorage.history.first;
const lastSlice = historyStorage.history.last; const lastSlice = historyStorage.history.last;
if(firstSlice.isEnd(SliceEnd.Bottom) && history.includes(firstSlice[0])) { if(firstSlice.isEnd(SliceEnd.Bottom) && (!firstSlice.length || history.includes(firstSlice[0]))) {
this.scrollable.loadedAll.bottom = true; this.scrollable.loadedAll.bottom = true;
} }
if(lastSlice.isEnd(SliceEnd.Top) && history.includes(lastSlice[lastSlice.length - 1])) { if(lastSlice.isEnd(SliceEnd.Top) && (!lastSlice.length || history.includes(lastSlice[lastSlice.length - 1]))) {
this.scrollable.loadedAll.top = true; this.scrollable.loadedAll.top = true;
} }

4
src/components/chat/chat.ts

@ -197,6 +197,10 @@ export default class Chat extends EventListenerBase<{
}); });
} }
public beforeDestroy() {
this.bubbles.cleanup();
}
public destroy() { public destroy() {
//const perf = performance.now(); //const perf = performance.now();

4
src/components/chat/replies.ts

@ -116,12 +116,14 @@ export default class RepliesElement extends HTMLElement {
if(replies) { if(replies) {
const historyStorage = appMessagesManager.getHistoryStorage(-replies.channel_id); const historyStorage = appMessagesManager.getHistoryStorage(-replies.channel_id);
let isUnread: boolean; let isUnread = false;
if(replies.replies) {
if(replies.read_max_id !== undefined && replies.max_id !== undefined) { if(replies.read_max_id !== undefined && replies.max_id !== undefined) {
isUnread = replies.read_max_id < replies.max_id; isUnread = replies.read_max_id < replies.max_id;
} else { } else {
isUnread = !historyStorage.readMaxId || historyStorage.readMaxId < (replies.max_id || 0); isUnread = !historyStorage.readMaxId || historyStorage.readMaxId < (replies.max_id || 0);
} }
}
this.classList.toggle('is-unread', isUnread); this.classList.toggle('is-unread', isUnread);
} }

2
src/config/app.ts

@ -12,7 +12,7 @@
const App = { const App = {
id: 1025907, id: 1025907,
hash: '452b0359b988148995f22ff0f4229750', hash: '452b0359b988148995f22ff0f4229750',
version: '0.5.1', version: '0.5.2',
langPackVersion: '0.1.6', langPackVersion: '0.1.6',
langPack: 'macos', langPack: 'macos',
langPackCode: 'en', langPackCode: 'en',

4
src/lib/appManagers/appImManager.ts

@ -774,6 +774,10 @@ export class AppImManager {
}); */ }); */
} }
spliced.forEach(chat => {
chat.beforeDestroy();
});
setTimeout(() => { setTimeout(() => {
//chat.setPeer(0); //chat.setPeer(0);
spliced.forEach(chat => { spliced.forEach(chat => {

4
src/lib/appManagers/appMessagesManager.ts

@ -4654,8 +4654,7 @@ export class AppMessagesManager {
mids.splice(i, 0, offset_id); mids.splice(i, 0, offset_id);
} }
const slice = historyStorage.history.insertSlice(mids); const slice = historyStorage.history.insertSlice(mids) || historyStorage.history.slice;
if(slice) {
if(isTopEnd) { if(isTopEnd) {
slice.setEnd(SliceEnd.Top); slice.setEnd(SliceEnd.Top);
} }
@ -4664,7 +4663,6 @@ export class AppMessagesManager {
slice.setEnd(SliceEnd.Bottom); slice.setEnd(SliceEnd.Bottom);
historyStorage.maxId = slice[0]; // ! WARNING historyStorage.maxId = slice[0]; // ! WARNING
} }
}
/* const isBackLimit = offset < 0 && -offset !== fullLimit; /* const isBackLimit = offset < 0 && -offset !== fullLimit;
if(isBackLimit) { if(isBackLimit) {

Loading…
Cancel
Save