Browse Source

Fix folders again

master
Eduard Kuzmenko 2 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";
import RLottiePlayer from "../../../lib/rlottie/rlottiePlayer"; import RLottiePlayer from "../../../lib/rlottie/rlottiePlayer";
import copy from "../../../helpers/object/copy"; import copy from "../../../helpers/object/copy";
import deepEqual from "../../../helpers/object/deepEqual"; import deepEqual from "../../../helpers/object/deepEqual";
import appUsersManager from "../../../lib/appManagers/appUsersManager";
import forEachReverse from "../../../helpers/array/forEachReverse";
const MAX_FOLDER_NAME_LENGTH = 12; const MAX_FOLDER_NAME_LENGTH = 12;
@ -291,11 +293,27 @@ export default class AppEditFolderTab extends SliderSuperTab {
const section = this[key]; const section = this[key];
const ul = appDialogsManager.createChatList(); 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) => { const renderMore = (_length: number) => {
for(let i = 0, length = Math.min(peers.length, _length); i < length; ++i) { for(let i = 0, length = Math.min(peers.length, _length); i < length; ++i) {
const peerId = peers.shift(); const peerId = peers.shift();
if(peerId.isUser() ? false : !appMessagesManager.getDialogOnly(peerId)) {
continue;
}
const {dom} = appDialogsManager.addDialogNew({ const {dom} = appDialogsManager.addDialogNew({
dialog: peerId, dialog: peerId,

12
src/lib/appManagers/appMessagesManager.ts

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

2
src/lib/appManagers/appUsersManager.ts

@ -552,7 +552,7 @@ export class AppUsersManager {
return id; 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() { public getSelf() {

62
src/lib/storages/filters.ts

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

Loading…
Cancel
Save