import appMessagesManager from "../../lib/appManagers/appMessagesManager"; import { PopupButton } from "."; import PopupPeer from "./peer"; import appPeersManager from "../../lib/appManagers/appPeersManager"; import rootScope from "../../lib/rootScope"; export default class PopupPinMessage { constructor(peerId: number, mid: number, unpin?: true, onConfirm?: () => void) { let title: string, description: string, buttons: PopupButton[] = []; const canUnpin = appPeersManager.canPinMessage(peerId); const callback = (oneSide?: true, silent?: true) => { setTimeout(() => { // * костыль, потому что document.elementFromPoint вернёт popup-peer пока он будет закрываться let promise: Promise; if(unpin && !mid) { if(canUnpin) { promise = appMessagesManager.unpinAllMessages(peerId); } else { promise = appMessagesManager.hidePinnedMessages(peerId); } } else { promise = appMessagesManager.updatePinnedMessage(peerId, mid, unpin, silent, oneSide); } if(onConfirm) { promise.then(onConfirm); } }, 300); }; const firstName = appPeersManager.getPeerTitle(peerId, false, true); if(unpin) { let buttonText = 'UNPIN'; if(!mid) { if(canUnpin) { title = 'Unpin All Messages?'; description = 'Would you like to unpin all messages?'; } else { title = 'Hide Pinned Messages?'; description = 'Do you want to hide the pinned message bar? It wil stay hidden until a new message is pinned.'; buttonText = 'HIDE'; } } else { title = `Unpin Message?`; description = 'Would you like to unpin this message?'; } buttons.push({ text: buttonText, isDanger: true, callback: () => callback() }); } else { title = 'Pin Message?'; if(peerId < 0) { description = 'Do you want to pin this message for all members in the group?'; buttons.push({ text: 'PIN AND NOTIFY', callback: () => callback() }); buttons.push({ text: 'PIN WITHOUT NOTIFYING', callback: () => callback(undefined, true) }); } else { description = 'Would you like to pin this message?'; if(peerId === rootScope.myId) { buttons.push({ text: 'PIN', callback: () => callback() }); } else { buttons.push({ text: 'PIN JUST FOR ME', callback: () => callback(true) }); buttons.push({ text: 'PIN FOR ME AND ' + firstName, callback: () => callback() }); } } } buttons.push({ text: 'CANCEL', isCancel: true }); const popup = new PopupPeer('popup-delete-chat', { peerId, title, description, buttons }); popup.show(); } }