Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

84 lines
2.5 KiB

import appSidebarRight from "../lib/appManagers/appSidebarRight";
import appMessagesManager from "../lib/appManagers/appMessagesManager";
import { putPreloader } from "./misc";
import { AppSelectPeers } from "./appSelectPeers";
class AppForward {
public container = document.getElementById('forward-container') as HTMLDivElement;
private closeBtn = this.container.querySelector('.sidebar-close-button') as HTMLButtonElement;
private sendBtn = this.container.querySelector('.btn-circle') as HTMLButtonElement;
private selector: AppSelectPeers;
private msgIDs: number[] = [];
private sidebarWasActive: boolean;
constructor() {
this.closeBtn.addEventListener('click', this.close.bind(this));
this.sendBtn.addEventListener('click', () => {
let peerIDs = this.selector.getSelected();
if(this.msgIDs.length && peerIDs.length) {
this.sendBtn.classList.remove('tgico-send');
this.sendBtn.disabled = true;
putPreloader(this.sendBtn);
this.selector.freezed = true;
let s = () => {
let promises = peerIDs.splice(0, 3).map(peerID => {
return appMessagesManager.forwardMessages(peerID, this.msgIDs);
});
Promise.all(promises).then(() => {
if(peerIDs.length) {
return s();
} else {
this.closeBtn.click();
}
});
};
s();
}
});
}
public close() {
(this.sidebarWasActive ? Promise.resolve() : appSidebarRight.toggleSidebar(false)).then(() => {
this.cleanup();
this.container.classList.remove('active');
});
}
public cleanup() {
if(this.selector) {
this.selector.container.remove();
this.selector = null;
}
}
public init(ids: number[]) {
this.cleanup();
this.msgIDs = ids;
this.container.classList.add('active');
this.sendBtn.innerHTML = '';
this.sendBtn.classList.add('tgico-send');
this.sendBtn.disabled = false;
this.selector = new AppSelectPeers(this.container, (length) => {
if(length) {
this.sendBtn.classList.add('is-visible');
} else {
this.sendBtn.classList.remove('is-visible');
}
}, 'both', () => {
//console.log('forward rendered:', this.container.querySelector('.selector ul').childElementCount);
this.sidebarWasActive = appSidebarRight.sidebarEl.classList.contains('active');
appSidebarRight.toggleSidebar(true);
});
}
}
export default new AppForward();