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.

70 lines
2.7 KiB

/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*/
import type { AppMessagesManager } from "../../lib/appManagers/appMessagesManager";
import type ChatTopbar from "./topbar";
import { RichTextProcessor } from "../../lib/richtextprocessor";
import rootScope from "../../lib/rootScope";
import appMediaPlaybackController from "../appMediaPlaybackController";
import DivAndCaption from "../divAndCaption";
import { formatDate } from "../wrappers";
import PinnedContainer from "./pinnedContainer";
import Chat from "./chat";
import { cancelEvent } from "../../helpers/dom/cancelEvent";
import { attachClickEvent } from "../../helpers/dom/clickEvent";
3 years ago
import replaceContent from "../../helpers/dom/replaceContent";
import PeerTitle from "../peerTitle";
export default class ChatAudio extends PinnedContainer {
private toggleEl: HTMLElement;
3 years ago
constructor(protected topbar: ChatTopbar, protected chat: Chat, protected appMessagesManager: AppMessagesManager) {
super(topbar, chat, topbar.listenerSetter, 'audio', new DivAndCaption('pinned-audio', (title: string | HTMLElement, subtitle: string | HTMLElement) => {
replaceContent(this.divAndCaption.title, title);
replaceContent(this.divAndCaption.subtitle, subtitle);
}), () => {
if(this.toggleEl.classList.contains('flip-icon')) {
appMediaPlaybackController.toggle();
}
});
this.divAndCaption.border.remove();
this.toggleEl = document.createElement('button');
this.toggleEl.classList.add('pinned-audio-ico', 'tgico', 'btn-icon');
attachClickEvent(this.toggleEl, (e) => {
cancelEvent(e);
appMediaPlaybackController.toggle();
}, {listenerSetter: this.topbar.listenerSetter});
this.wrapper.prepend(this.toggleEl);
this.topbar.listenerSetter.add(rootScope)('audio_play', (e) => {
const {doc, mid, peerId} = e;
3 years ago
let title: string | HTMLElement, subtitle: string;
const message = appMessagesManager.getMessageByPeer(peerId, mid);
if(doc.type === 'voice' || doc.type === 'round') {
title = new PeerTitle({peerId: message.fromId}).element;
3 years ago
//subtitle = 'Voice message';
subtitle = formatDate(message.date, false, false);
} else {
title = doc.audioTitle || doc.fileName;
subtitle = doc.audioPerformer ? RichTextProcessor.wrapPlainText(doc.audioPerformer) : 'Unknown Artist';
}
this.fill(title, subtitle, message);
this.toggleEl.classList.add('flip-icon');
this.toggle(false);
});
this.topbar.listenerSetter.add(rootScope)('audio_pause', () => {
this.toggleEl.classList.remove('flip-icon');
});
}
3 years ago
}