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.
65 lines
2.0 KiB
65 lines
2.0 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
import _limitSymbols from '../../helpers/string/limitSymbols'; |
|
import {Chat} from '../../layer'; |
|
import getPeerActiveUsernames from '../../lib/appManagers/utils/peers/getPeerActiveUsernames'; |
|
import I18n from '../../lib/langPack'; |
|
import wrapEmojiText from '../../lib/richTextProcessor/wrapEmojiText'; |
|
import rootScope from '../../lib/rootScope'; |
|
|
|
type GetPeerTitleOptions = { |
|
peerId: PeerId, |
|
plainText?: boolean, |
|
onlyFirstName?: boolean, |
|
limitSymbols?: number, |
|
threadId?: number |
|
} & Pick<WrapSomethingOptions, 'managers'>; |
|
|
|
export default async function getPeerTitle<T extends GetPeerTitleOptions>( |
|
options: T |
|
): Promise<T['plainText'] extends true ? string : DocumentFragment> { |
|
const { |
|
peerId = rootScope.myId, |
|
plainText, |
|
onlyFirstName, |
|
limitSymbols, |
|
managers = rootScope.managers, |
|
threadId |
|
} = options; |
|
|
|
let title = ''; |
|
if(peerId.isUser()) { |
|
const user = await managers.appUsersManager.getUser(peerId.toUserId()); |
|
if(user) { |
|
if(user.first_name) title += user.first_name; |
|
if(user.last_name && (!onlyFirstName || !title)) title += ' ' + user.last_name; |
|
} |
|
|
|
if(!title) title = !user || user.pFlags.deleted ? I18n.format(onlyFirstName ? 'Deleted' : 'HiddenName', true) : getPeerActiveUsernames(user)[0] || ''; |
|
else title = title.trim(); |
|
} else { |
|
if(threadId) { |
|
const topic = await managers.dialogsStorage.getForumTopic(peerId, threadId); |
|
title = topic?.title || ''; |
|
} |
|
|
|
if(!title) { |
|
const chat = await managers.appChatsManager.getChat(peerId.toChatId()) as Chat.chat; |
|
title = chat?.title || ''; |
|
} |
|
|
|
if(onlyFirstName) { |
|
title = title.split(' ')[0]; |
|
} |
|
} |
|
|
|
if(limitSymbols !== undefined) { |
|
title = _limitSymbols(title, limitSymbols, limitSymbols); |
|
} |
|
|
|
return plainText ? title : wrapEmojiText(title) as any; |
|
}
|
|
|