Browse Source

Fix starting multiselect from grouped documents

master
morethanwords 3 years ago
parent
commit
44a915a31c
  1. 13
      src/components/chat/selection.ts
  2. 12
      src/components/sidebarRight/tabs/editChat.ts
  3. 50
      src/components/sidebarRight/tabs/groupPermissions.ts
  4. 40
      src/pages/pageIm.ts

13
src/components/chat/selection.ts

@ -35,6 +35,7 @@ import isInDOM from "../../helpers/dom/isInDOM"; @@ -35,6 +35,7 @@ import isInDOM from "../../helpers/dom/isInDOM";
import { randomLong } from "../../helpers/random";
import { attachContextMenuListener } from "../misc";
import { attachClickEvent, AttachClickOptions } from "../../helpers/dom/clickEvent";
import findUpAsChild from "../../helpers/dom/findUpAsChild";
const accumulateMapSet = (map: Map<number, Set<number>>) => {
return [...map.values()].reduce((acc, v) => acc + v.size, 0);
@ -136,6 +137,8 @@ class AppSelection { @@ -136,6 +137,8 @@ class AppSelection {
const slice = elements.slice(firstIndex + 1, lastIndex);
console.log('getElementsBetween', first, last, slice, firstIndex, lastIndex, isHigher);
return slice;
};
@ -190,8 +193,16 @@ class AppSelection { @@ -190,8 +193,16 @@ class AppSelection {
seenSet.add(mid);
if((selecting && !isSelected) || (!selecting && isSelected)) {
const seenLength = accumulateMapSet(seen);
if(this.toggleByElement && checkBetween) {
if(seenLength < 2) {
if(findUpAsChild(element, firstTarget)) {
firstTarget = element;
}
}
const elementsBetween = getElementsBetween(firstTarget, element);
console.log(elementsBetween);
if(elementsBetween.length) {
elementsBetween.forEach(element => {
processElement(element, false);
@ -200,7 +211,7 @@ class AppSelection { @@ -200,7 +211,7 @@ class AppSelection {
}
if(!this.selectedMids.size) {
if(accumulateMapSet(seen) === 2 && this.toggleByMid) {
if(seenLength === 2 && this.toggleByMid) {
for(const [peerId, mids] of seen) {
for(const mid of mids) {
this.toggleByMid(peerId, mid);

12
src/components/sidebarRight/tabs/editChat.ts

@ -255,8 +255,7 @@ export default class AppEditChatTab extends SliderSuperTab { @@ -255,8 +255,7 @@ export default class AppEditChatTab extends SliderSuperTab {
if(!isBroadcast && appChatsManager.hasRights(this.chatId, 'change_permissions')) {
const showChatHistoryCheckboxField = new CheckboxField({
text: 'ChatHistory',
withRipple: true,
checked: !(chatFull as ChatFull.channelFull).pFlags.hidden_prehistory
withRipple: true
});
this.listenerSetter.add(showChatHistoryCheckboxField.input)('change', () => {
@ -266,9 +265,12 @@ export default class AppEditChatTab extends SliderSuperTab { @@ -266,9 +265,12 @@ export default class AppEditChatTab extends SliderSuperTab {
});
});
addChatUpdateListener(() => {
showChatHistoryCheckboxField.setValueSilently(!(chatFull as ChatFull.channelFull).pFlags.hidden_prehistory);
});
const onChatUpdate = () => {
showChatHistoryCheckboxField.setValueSilently(isChannel && !(chatFull as ChatFull.channelFull).pFlags.hidden_prehistory);
};
onChatUpdate();
addChatUpdateListener(onChatUpdate);
section.content.append(showChatHistoryCheckboxField.label);
}

50
src/components/sidebarRight/tabs/groupPermissions.ts

@ -288,26 +288,42 @@ export default class AppGroupPermissionsTab extends SliderSuperTabEventable { @@ -288,26 +288,42 @@ export default class AppGroupPermissionsTab extends SliderSuperTabEventable {
};
let exceptionsCount = 0;
const LOAD_COUNT = 50;
const loader = new ScrollableLoader({
scrollable: this.scrollable,
getPromise: () => {
return appProfileManager.getChannelParticipants(this.chatId, {_: 'channelParticipantsBanned', q: ''}, LOAD_COUNT, list.childElementCount).then(res => {
for(const participant of res.participants) {
add(participant as ChannelParticipant.channelParticipantBanned, true);
}
exceptionsCount = res.count;
setLength();
return res.participants.length < LOAD_COUNT || res.count === list.childElementCount;
});
}
});
let loader: ScrollableLoader;
const setLoader = () => {
const LOAD_COUNT = 50;
loader = new ScrollableLoader({
scrollable: this.scrollable,
getPromise: () => {
return appProfileManager.getChannelParticipants(this.chatId, {_: 'channelParticipantsBanned', q: ''}, LOAD_COUNT, list.childElementCount).then(res => {
for(const participant of res.participants) {
add(participant as ChannelParticipant.channelParticipantBanned, true);
}
exceptionsCount = res.count;
setLength();
return res.participants.length < LOAD_COUNT || res.count === list.childElementCount;
});
}
});
return loader.load();
};
this.scrollable.append(section.container);
await loader.load();
if(appChatsManager.isChannel(this.chatId)) {
await setLoader();
} else {
setLength();
this.listenerSetter.add(rootScope)('dialog_migrate', ({migrateFrom, migrateTo}) => {
if(this.chatId === migrateFrom) {
this.chatId = migrateTo;
setLoader();
}
});
}
}
}

40
src/pages/pageIm.ts

@ -32,26 +32,28 @@ let onFirstMount = () => { @@ -32,26 +32,28 @@ let onFirstMount = () => {
return loadFonts().then(() => {
return new Promise<void>((resolve) => {
window.requestAnimationFrame(() => {
const promise = import('../lib/appManagers/appDialogsManager');
promise.finally(async() => {
//alert('pageIm!');
resolve();
//AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;
/* // @ts-ignore
var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;
alert('AudioContext:' + typeof(AudioContext));
// @ts-ignore
alert('global.navigator:' + typeof(navigator));
alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));
alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));
alert('global.WebAssembly:' + typeof(WebAssembly)); */
//(Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach(el => ripple(el));
});
// setTimeout(() => {
const promise = import('../lib/appManagers/appDialogsManager');
promise.finally(async() => {
//alert('pageIm!');
resolve();
//AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;
/* // @ts-ignore
var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;
alert('AudioContext:' + typeof(AudioContext));
// @ts-ignore
alert('global.navigator:' + typeof(navigator));
alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));
alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));
alert('global.WebAssembly:' + typeof(WebAssembly)); */
//(Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach(el => ripple(el));
});
// }, 5e3);
});
});
})
});
//let promise = /* Promise.resolve() */.then(() => {//import('../lib/services').then(services => {

Loading…
Cancel
Save