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.
68 lines
2.0 KiB
68 lines
2.0 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
import { MOUNT_CLASS_TO } from "../config/debug"; |
|
import appPeersManager from "../lib/appManagers/appPeersManager"; |
|
import rootScope from "../lib/rootScope"; |
|
import { i18n } from "../lib/langPack"; |
|
import replaceContent from "../helpers/dom/replaceContent"; |
|
|
|
export type PeerTitleOptions = { |
|
peerId: number, |
|
plainText?: boolean, |
|
onlyFirstName?: boolean, |
|
dialog?: boolean |
|
}; |
|
|
|
const weakMap: WeakMap<HTMLElement, PeerTitle> = new WeakMap(); |
|
|
|
MOUNT_CLASS_TO.peerTitleWeakMap = weakMap; |
|
|
|
rootScope.on('peer_title_edit', (peerId) => { |
|
const elements = Array.from(document.querySelectorAll(`.peer-title[data-peer-id="${peerId}"]`)) as HTMLElement[]; |
|
elements.forEach(element => { |
|
const peerTitle = weakMap.get(element); |
|
//console.log('in the summer silence i was doing nothing', peerTitle, peerId); |
|
|
|
if(peerTitle) { |
|
peerTitle.update(); |
|
} |
|
}); |
|
}); |
|
|
|
export default class PeerTitle { |
|
public element: HTMLElement; |
|
public peerId: number; |
|
public plainText = false; |
|
public onlyFirstName = false; |
|
public dialog = false; |
|
|
|
constructor(options: PeerTitleOptions) { |
|
this.element = document.createElement('span'); |
|
this.element.classList.add('peer-title'); |
|
this.element.setAttribute('dir', 'auto'); |
|
|
|
this.update(options); |
|
weakMap.set(this.element, this); |
|
} |
|
|
|
public update(options?: PeerTitleOptions) { |
|
if(options) { |
|
for(let i in options) { |
|
// @ts-ignore |
|
this.element.dataset[i] = options[i] ? '' + (typeof(options[i]) === 'boolean' ? +options[i] : options[i]) : '0'; |
|
// @ts-ignore |
|
this[i] = options[i]; |
|
} |
|
} |
|
|
|
if(this.peerId !== rootScope.myId || !this.dialog) { |
|
this.element.innerHTML = appPeersManager.getPeerTitle(this.peerId, this.plainText, this.onlyFirstName); |
|
} else { |
|
replaceContent(this.element, i18n(this.onlyFirstName ? 'Saved' : 'SavedMessages')); |
|
} |
|
} |
|
}
|
|
|