Очистить репозиторий перед переносом продукта

This commit is contained in:
AidarKC
2026-07-20 18:46:56 +04:00
parent cf33f9a3bd
commit 81493ac4be
665 changed files with 231 additions and 1124 deletions
+21 -12
View File
@@ -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);