Eduard Kuzmenko
3 years ago
8 changed files with 196 additions and 47 deletions
@ -0,0 +1,80 @@ |
|||||||
|
/* |
||||||
|
* https://github.com/morethanwords/tweb
|
||||||
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
||||||
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
||||||
|
*/ |
||||||
|
|
||||||
|
import PopupElement, { addCancelButton } from "."; |
||||||
|
import { ChatInvite, Updates } from "../../layer"; |
||||||
|
import apiUpdatesManager from "../../lib/appManagers/apiUpdatesManager"; |
||||||
|
import appAvatarsManager from "../../lib/appManagers/appAvatarsManager"; |
||||||
|
import appPhotosManager from "../../lib/appManagers/appPhotosManager"; |
||||||
|
import { i18n } from "../../lib/langPack"; |
||||||
|
import apiManager from "../../lib/mtproto/mtprotoworker"; |
||||||
|
import RichTextProcessor from "../../lib/richtextprocessor"; |
||||||
|
import rootScope from "../../lib/rootScope"; |
||||||
|
import AvatarElement from "../avatar"; |
||||||
|
import { wrapPhoto } from "../wrappers"; |
||||||
|
|
||||||
|
// const FAKE_CHAT_ID = Number.MAX_SAFE_INTEGER - 0x1000;
|
||||||
|
|
||||||
|
export default class PopupJoinChatInvite extends PopupElement { |
||||||
|
constructor(hash: string, chatInvite: ChatInvite.chatInvite) { |
||||||
|
super('popup-join-chat-invite', addCancelButton([{ |
||||||
|
langKey: chatInvite.pFlags.broadcast ? 'JoinByPeekChannelTitle' : 'JoinByPeekGroupTitle', |
||||||
|
callback: () => { |
||||||
|
apiManager.invokeApi('messages.importChatInvite', {hash}) |
||||||
|
.then((updates) => { |
||||||
|
apiUpdatesManager.processUpdateMessage(updates); |
||||||
|
const chat = (updates as Updates.updates).chats[0]; |
||||||
|
const peerId = -chat.id; |
||||||
|
rootScope.dispatchEvent('history_focus', {peerId}); |
||||||
|
}); |
||||||
|
} |
||||||
|
}]), {closable: true, overlayClosable: true, body: true}); |
||||||
|
|
||||||
|
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 avatarElem = new AvatarElement(); |
||||||
|
avatarElem.setAttribute('dialog', '0'); |
||||||
|
avatarElem.classList.add('avatar-100'); |
||||||
|
if(chatInvite.photo._ === 'photo') { |
||||||
|
chatInvite.photo = 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 { |
||||||
|
appAvatarsManager.putPhoto(avatarElem, -0, false, chatInvite.title); |
||||||
|
} |
||||||
|
|
||||||
|
const title = document.createElement('div'); |
||||||
|
title.classList.add('chat-title'); |
||||||
|
title.innerHTML = RichTextProcessor.wrapEmojiText(chatInvite.title); |
||||||
|
//avatarElem.setAttribute('peer', '' + -fakeChat.id);
|
||||||
|
|
||||||
|
const isBroadcast = chatInvite.pFlags.broadcast; |
||||||
|
const peopleCount = i18n(isBroadcast ? 'Subscribers' : 'Members', [chatInvite.participants_count]); |
||||||
|
peopleCount.classList.add('chat-participants-count'); |
||||||
|
|
||||||
|
this.body.append(avatarElem, title, peopleCount); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
.popup-join-chat-invite { |
||||||
|
user-select: none; |
||||||
|
|
||||||
|
.popup-body { |
||||||
|
align-items: center; |
||||||
|
padding: .5rem 0 1.25rem; |
||||||
|
} |
||||||
|
|
||||||
|
.chat-title { |
||||||
|
font-weight: bold; |
||||||
|
margin: .75rem 0 .25rem; |
||||||
|
line-height: var(--line-height); |
||||||
|
} |
||||||
|
|
||||||
|
.chat-participants-count { |
||||||
|
color: var(--secondary-text-color); |
||||||
|
font-size: .875rem; |
||||||
|
line-height: var(--line-height); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue