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.
 
 
 
 
 

101 lines
3.6 KiB

/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*/
import PopupElement, { addCancelButton } from ".";
import setInnerHTML from "../../helpers/dom/setInnerHTML";
import numberThousandSplitter from "../../helpers/number/numberThousandSplitter";
import { ChatInvite } from "../../layer";
import appImManager from "../../lib/appManagers/appImManager";
import { i18n, _i18n } from "../../lib/langPack";
import { NULL_PEER_ID } from "../../lib/mtproto/mtproto_config";
import wrapEmojiText from "../../lib/richTextProcessor/wrapEmojiText";
import AvatarElement from "../avatar";
import putPhoto from "../putPhoto";
import { toastNew } from "../toast";
import { wrapPhoto } from "../wrappers";
// const FAKE_CHAT_ID = Number.MAX_SAFE_INTEGER - 0x1000;
export default class PopupJoinChatInvite extends PopupElement {
constructor(
private hash: string,
private chatInvite: ChatInvite.chatInvite,
) {
super('popup-join-chat-invite', addCancelButton([{
langKey: chatInvite.pFlags.request_needed ? 'RequestJoin.Button' : (chatInvite.pFlags.broadcast ? 'JoinByPeekChannelTitle' : 'JoinByPeekGroupTitle'),
callback: () => {
this.managers.appChatsManager.importChatInvite(hash)
.then((chatId) => {
const peerId = chatId.toPeerId(true);
appImManager.setInnerPeer({peerId});
}, (error) => {
if(error.type === 'INVITE_REQUEST_SENT') {
toastNew({langPackKey: 'RequestToJoinSent'});
}
});
}
}]), {closable: true, overlayClosable: true, body: true});
this.construct();
}
private async construct() {
this.header.remove();
/* const fakeChat: Chat.channel | Chat.chat = {
_: chatInvite.pFlags.channel ? 'channel' : 'chat',
id: FAKE_CHAT_ID,
title: chatInvite.title,
photo: chatInvite.photo as any,
date: Date.now() / 1000 | 0,
version: 0,
participants_count: chatInvite.participants_count,
pFlags: chatInvite.pFlags as any
};
appChatsManager.saveApiChat(fakeChat); */
const {chatInvite, managers, hash} = this;
const avatarElem = new AvatarElement();
avatarElem.classList.add('avatar-100');
avatarElem.isDialog = false;
if(chatInvite.photo._ === 'photo') {
chatInvite.photo = await managers.appPhotosManager.savePhoto(chatInvite.photo);
wrapPhoto({
container: avatarElem,
message: null,
photo: chatInvite.photo,
boxHeight: 100,
boxWidth: 100,
withoutPreloader: true
});
avatarElem.style.width = avatarElem.style.height = '';
} else {
putPhoto(avatarElem, NULL_PEER_ID, false, chatInvite.title);
}
const title = document.createElement('div');
title.classList.add('chat-title');
setInnerHTML(title, wrapEmojiText(chatInvite.title));
//avatarElem.setAttribute('peer', '' + -fakeChat.id);
const isBroadcast = chatInvite.pFlags.broadcast;
const peopleCount = i18n(isBroadcast ? 'Subscribers' : 'Members', [numberThousandSplitter(chatInvite.participants_count)]);
peopleCount.classList.add('chat-participants-count');
this.body.append(avatarElem, title, peopleCount);
if(chatInvite.pFlags.request_needed) {
const caption = document.createElement('div');
_i18n(caption, isBroadcast ? 'RequestToJoinChannelDescription' : 'RequestToJoinGroupDescription');
caption.classList.add('chat-participants-count', 'request-caption');
this.body.append(caption);
}
this.show();
}
}