SHA256
Очистить репозиторий перед переносом продукта
This commit is contained in:
@@ -19,10 +19,10 @@ import {
|
||||
import { startOutgoingCall } from '../services/call-service.js';
|
||||
import {
|
||||
createEmojiPicker,
|
||||
createTelegramAnimatedEmoji,
|
||||
appendTelegramAnimatedText,
|
||||
isTelegramAnimatedEmoji,
|
||||
stopAllTelegramEmojiAnimations,
|
||||
createTwemojiAsset,
|
||||
appendTwemojiText,
|
||||
hasTwemojiAsset,
|
||||
stopAllTwemojiAnimations,
|
||||
} from '../components/emoji-picker.js?v=202607152130';
|
||||
import { openSpeechInputModal } from '../components/speech-input-modal.js';
|
||||
import { isSpeechToTextConfigured, isTextToSpeechConfigured, speakTextBySettings } from '../services/speech-tools-service.js';
|
||||
@@ -473,16 +473,21 @@ function scrollToLatestMessage(list) {
|
||||
function renderMessageText(textNode, messageText) {
|
||||
const text = String(messageText || '');
|
||||
const emoji = text.trim();
|
||||
if (text === emoji && isTelegramAnimatedEmoji(emoji)) {
|
||||
textNode.classList.add('bubble-text--animated-emoji');
|
||||
textNode.append(createTelegramAnimatedEmoji(emoji, { className: 'chat-telegram-emoji' }));
|
||||
if (text === emoji && hasTwemojiAsset(emoji)) {
|
||||
textNode.classList.add('bubble-text--twemoji-only');
|
||||
textNode.append(createTwemojiAsset(emoji, { className: 'chat-twemoji' }));
|
||||
return;
|
||||
}
|
||||
if (appendTelegramAnimatedText(textNode, text, { className: 'chat-telegram-emoji chat-telegram-emoji--inline' })) {
|
||||
textNode.classList.add('bubble-text--telegram-emoji-inline');
|
||||
if (appendTwemojiText(textNode, text, { className: 'chat-twemoji chat-twemoji--inline' })) {
|
||||
textNode.classList.add('bubble-text--twemoji-inline');
|
||||
}
|
||||
}
|
||||
|
||||
function isTwemojiOnlyMessage(messageText) {
|
||||
const emoji = String(messageText || '').trim();
|
||||
return Boolean(emoji && String(messageText || '') === emoji && hasTwemojiAsset(emoji));
|
||||
}
|
||||
|
||||
function scrollToLatestMessageSmart(list, { smoothIfNearBottom = false } = {}) {
|
||||
if (!list) return;
|
||||
const scrollContainer = list.closest('.screen-content') || list.parentElement || list;
|
||||
@@ -547,6 +552,10 @@ function renderLog(list, chatId, { onOpenActions, markAsRead = true, scrollMode
|
||||
const autoKind = parsedText.callSummary ? 'call-tech' : '';
|
||||
const bubbleKind = String(msg?.kind || autoKind || '').trim();
|
||||
bubble.className = `bubble ${msg.from}${bubbleKind ? ` ${bubbleKind}` : ''}`;
|
||||
const emojiOnly = !parsedText.callSummary && !parsedText.replyRef && isTwemojiOnlyMessage(parsedText.displayText || '');
|
||||
if (emojiOnly) {
|
||||
bubble.classList.add('bubble--emoji-only');
|
||||
}
|
||||
|
||||
if (parsedText.callSummary) {
|
||||
const callCard = document.createElement('div');
|
||||
@@ -909,7 +918,7 @@ export function render({ navigate, route }) {
|
||||
const closeEmojiPicker = () => {
|
||||
if (!emojiPickerOpen) return;
|
||||
emojiPickerOpen = false;
|
||||
stopAllTelegramEmojiAnimations();
|
||||
stopAllTwemojiAnimations();
|
||||
emojiSlot.hidden = true;
|
||||
emojiToggle?.setAttribute('aria-expanded', 'false');
|
||||
};
|
||||
@@ -1253,7 +1262,7 @@ export function render({ navigate, route }) {
|
||||
emojiPickerOpen = !emojiPickerOpen;
|
||||
emojiSlot.hidden = !emojiPickerOpen;
|
||||
emojiToggle.setAttribute('aria-expanded', String(emojiPickerOpen));
|
||||
// Как в Telegram: либо клавиатура, либо пикер. На тач-устройствах при
|
||||
// Либо клавиатура, либо пикер. На тач-устройствах при
|
||||
// открытии пикера прячем клавиатуру, чтобы поле ввода оставалось видно.
|
||||
if (emojiPickerOpen && !isFinePointer) input?.blur();
|
||||
});
|
||||
@@ -1360,7 +1369,7 @@ export function render({ navigate, route }) {
|
||||
void sendReadReceiptsForVisible(chatId);
|
||||
screen.cleanup = () => {
|
||||
setChatKeyboardOpen(false);
|
||||
stopAllTelegramEmojiAnimations();
|
||||
stopAllTwemojiAnimations();
|
||||
window.removeEventListener('shine-chat-messages-updated', handleIncomingChatRefresh);
|
||||
window.visualViewport?.removeEventListener('resize', syncKeyboardUi);
|
||||
window.removeEventListener('resize', syncKeyboardUi);
|
||||
|
||||
Reference in New Issue
Block a user