Browse Source

Fix folders again

master
Eduard Kuzmenko 3 years ago
parent
commit
ff3ee75bcc
  1. 20
      src/components/sidebarLeft/tabs/editFolder.ts
  2. 12
      src/lib/appManagers/appMessagesManager.ts
  3. 2
      src/lib/appManagers/appUsersManager.ts
  4. 62
      src/lib/storages/filters.ts

20
src/components/sidebarLeft/tabs/editFolder.ts

@ -23,6 +23,8 @@ import PopupPeer from "../../popups/peer"; @@ -23,6 +23,8 @@ import PopupPeer from "../../popups/peer";
import RLottiePlayer from "../../../lib/rlottie/rlottiePlayer";
import copy from "../../../helpers/object/copy";
import deepEqual from "../../../helpers/object/deepEqual";
import appUsersManager from "../../../lib/appManagers/appUsersManager";
import forEachReverse from "../../../helpers/array/forEachReverse";
const MAX_FOLDER_NAME_LENGTH = 12;
@ -291,11 +293,27 @@ export default class AppEditFolderTab extends SliderSuperTab { @@ -291,11 +293,27 @@ export default class AppEditFolderTab extends SliderSuperTab {
const section = this[key];
const ul = appDialogsManager.createChatList();
const peers = filter[key].slice();
let peers = filter[key];
// filter peers where we're kicked
const hasPeer = (peerId: PeerId) => {
return !!appMessagesManager.getDialogOnly(peerId) || (peerId.isUser() ? appUsersManager.getUser(peerId.toUserId())._ === 'user' : false);
};
forEachReverse(peers, (peerId, idx, arr) => {
if(!hasPeer(peerId)) {
arr.splice(idx, 1);
}
});
peers = peers.slice();
const renderMore = (_length: number) => {
for(let i = 0, length = Math.min(peers.length, _length); i < length; ++i) {
const peerId = peers.shift();
if(peerId.isUser() ? false : !appMessagesManager.getDialogOnly(peerId)) {
continue;
}
const {dom} = appDialogsManager.addDialogNew({
dialog: peerId,

12
src/lib/appManagers/appMessagesManager.ts

@ -2260,12 +2260,16 @@ export class AppMessagesManager { @@ -2260,12 +2260,16 @@ export class AppMessagesManager {
}
});
fullfillLeft();
resolve();
// fullfillLeft();
// resolve();
}, (err) => {
fullfillLeft();
reject(err);
// fullfillLeft();
// resolve();
// reject(err);
}).finally(() => {
fullfillLeft();
resolve();
this.reloadConversationsPromise = null;
if(this.reloadConversationsPeers.size) {

2
src/lib/appManagers/appUsersManager.ts

@ -552,7 +552,7 @@ export class AppUsersManager { @@ -552,7 +552,7 @@ export class AppUsersManager {
return id;
}
return this.users[id] || {id, pFlags: {deleted: true}, access_hash: ''} as User;
return this.users[id] || {_: 'userEmpty', id, pFlags: {deleted: true}, access_hash: ''} as any as User;
}
public getSelf() {

62
src/lib/storages/filters.ts

@ -322,29 +322,29 @@ export default class FiltersStorage { @@ -322,29 +322,29 @@ export default class FiltersStorage {
});
}
private p(filterId: number, type: ArgumentTypes<FiltersStorage['reloadMissingPeerIds']>[1], missingPeerIds: PeerId[]) {
const filter = this.getFilter(filterId);
const peers = filter && filter[type];
if(!peers?.length) {
return;
}
let spliced = false;
missingPeerIds.forEach((peerId) => {
const inputPeer = findAndSplice(peers, (inputPeer) => this.appPeersManager.getPeerId(inputPeer) === peerId);
if(inputPeer) {
spliced = true;
}
});
if(spliced) {
this.onUpdateDialogFilter({
_: 'updateDialogFilter',
id: filterId,
filter
});
}
}
// private spliceMissingPeerIds(filterId: number, type: ArgumentTypes<FiltersStorage['reloadMissingPeerIds']>[1], missingPeerIds: PeerId[]) {
// const filter = this.getFilter(filterId);
// const peers = filter && filter[type];
// if(!peers?.length) {
// return;
// }
// let spliced = false;
// missingPeerIds.forEach((peerId) => {
// const inputPeer = findAndSplice(peers, (inputPeer) => this.appPeersManager.getPeerId(inputPeer) === peerId);
// if(inputPeer) {
// spliced = true;
// }
// });
// if(spliced) {
// this.onUpdateDialogFilter({
// _: 'updateDialogFilter',
// id: filterId,
// filter
// });
// }
// }
public reloadMissingPeerIds(filterId: number, type: 'pinned_peers' | 'include_peers' | 'exclude_peers' = 'pinned_peers') {
const filter = this.getFilter(filterId);
@ -353,23 +353,23 @@ export default class FiltersStorage { @@ -353,23 +353,23 @@ export default class FiltersStorage {
return;
}
const missingPeerIds: PeerId[] = [];
// const missingPeerIds: PeerId[] = [];
const reloadDialogs = peers.filter((inputPeer) => {
const peerId = this.appPeersManager.getPeerId(inputPeer);
const isAlreadyReloaded = this.reloadedPeerIds.has(peerId);
const dialog = this.appMessagesManager.getDialogOnly(peerId);
if(isAlreadyReloaded && !dialog) {
missingPeerIds.push(peerId);
}
// if(isAlreadyReloaded && !dialog) {
// missingPeerIds.push(peerId);
// }
const reload = !isAlreadyReloaded && !dialog;
return reload;
});
if(!reloadDialogs.length) {
if(missingPeerIds.length) {
this.p(filterId, type, missingPeerIds);
}
// if(missingPeerIds.length) {
// this.spliceMissingPeerIds(filterId, type, missingPeerIds);
// }
return;
}
@ -392,7 +392,7 @@ export default class FiltersStorage { @@ -392,7 +392,7 @@ export default class FiltersStorage {
return;
}
this.p(filterId, type, missingPeerIds);
// this.spliceMissingPeerIds(filterId, type, missingPeerIds);
});
return reloadPromise;

Loading…
Cancel
Save