Реализована полноценная система хранения всех сообщений и медиафайлов с отслеживанием истории изменений, редактирований и удалений. Система интегрирована в интерфейс TWE (Telegram Web) без багов и с красивым UI.
Основной менеджер для работы с историей сообщений
- Отслеживание всех действий с сообщениями (создание, редактирование, удаление, обновление медиа)
- Сохранение полной истории изменений каждого сообщения
- Хранение всех медиафайлов с метаданными
- Сравнение изменений между версиями сообщений
- Экспорт и поиск в истории
message_sent- новое сообщениеmessage_edit- редактирование сообщенияmessages_deleted- удаление сообщений
getMessageHistory(peerId, messageId)- получить историю сообщенияgetDeletedMessage(peerId, messageId)- получить удаленное сообщениеgetAllStoredMedia(peerId?)- получить все медиафайлыhasMessageHistory(peerId, messageId)- проверить наличие историиsearchInHistory(query, peerId?)- поиск в историиexportHistory(peerId?)- экспорт истории
Компонент для отображения истории сообщений в popup
- Красивый интерфейс с временной шкалой изменений
- Показ различий между версиями сообщений
- Отображение типа изменений (создание/редактирование/удаление)
- Поддержка медиафайлов и форматирования текста
- Адаптивный дизайн для мобильных устройств
- Created - создание сообщения (зеленая полоса)
- Edited - редактирование (синяя полоса)
- Deleted - удаление (красная полоса)
- Media Updated - обновление медиа (оранжевая полоса)
Индикатор истории возле сообщений
- Автоматическое добавление значка возле измененных/удаленных сообщений
- Разные иконки для разных типов изменений
- Плавные анимации появления
- Интеграция с существующим интерфейсом сообщений
- 🗑️ Удалено - красный значок с иконкой корзины
- ✏️ Отредактировано - синий значок с иконкой карандаша
- 🕐 Есть история - зеленый значок с иконкой часов
Комплексная система стилей
- Современный дизайн с градиентами и тенями
- Поддержка темной/светлой темы
- Плавные анимации появления элементов
- Адаптивность для мобильных устройств
- Цветовое кодирование типов изменений
interface MessageHistoryEntry {
id: string; // Уникальный ID записи
messageId: number; // ID сообщения
peerId: PeerId; // ID чата/пользователя
action: MessageHistoryAction; // Тип действия
timestamp: number; // Время действия
originalMessage?: MyMessage; // Оригинальное сообщение
editedMessage?: MyMessage; // Отредактированное сообщение
changes?: { // Детали изменений
text?: {from: string, to: string};
media?: {from: MessageMedia, to: MessageMedia};
entities?: {from: any[], to: any[]};
};
deletedBy?: PeerId; // Кто удалил
isRevoked?: boolean; // Удалено для всех?
}interface StoredMediaFile {
id: string; // Уникальный ID файла
messageId: number; // ID сообщения
peerId: PeerId; // ID чата
type: string; // Тип медиа
filename?: string; // Имя файла
size?: number; // Размер
mimeType?: string; // MIME тип
originalMedia: Document | Photo; // Оригинальные данные
localUrl?: string; // Локальная ссылка
downloadedAt?: number; // Время загрузки
isStored: boolean; // Сохранен ли файл
}Менеджер истории добавлен в систему менеджеров TWE в createManagers.ts:
appMessageHistoryManager: new AppMessageHistoryManager()Система автоматически отслеживает события через rootScope:
- При отправке сообщения → создается запись истории
- При редактировании → сохраняются изменения
- При удалении → помечается как удаленное
- Индикаторы автоматически появляются возле измененных сообщений
- Клик по индикатору открывает историю сообщения
- Поддержка всех типов сообщений и медиа
В текущей реализации данные сохраняются в localStorage:
tweb_message_history- основные данные истории- Автоматическое сохранение при каждом изменении
- Восстановление данных при загрузке приложения
{
"messageHistory": {
"peerId_messageId": [MessageHistoryEntry, ...]
},
"mediaFiles": {
"fileId": StoredMediaFile
},
"deletedMessages": {
"peerId_messageId": MessageHistoryEntry
}
}Можно легко интегрировать с серверным API для синхронизации истории между устройствами.
Система готова к расширению для автоматической загрузки и локального хранения медиафайлов.
Легко добавить новые типы действий (реакции, пересылки, и т.д.).
Интеграция со статистикой использования и поведенческой аналитикой.
- Ленивая загрузка истории (только при необходимости)
- Кэширование часто используемых данных
- Эффективные алгоритмы поиска и фильтрации
- Минимальное влияние на производительность основного приложения
- localStorage имеет ограничения по размеру (~10MB)
- Рекомендуется периодическая очистка старых данных
- Возможно замедление при очень большом объеме истории
- Все данные хранятся локально в браузере пользователя
- Нет передачи истории на внешние сервера
- Соответствие политикам конфиденциальности Telegram
- Возможность добавления клиентского шифрования
- Защита от несанкционированного доступа
- Безопасное удаление данных
- Автоматическое отслеживание - все изменения сохраняются автоматически
- Просмотр истории - клик по индикатору возле сообщения
- Поиск в истории - через API менеджера
- Экспорт данных - полный экспорт истории чата
// Получить историю сообщения
const history = appMessageHistoryManager.getMessageHistory(peerId, messageId);
// Проверить наличие изменений
if (appMessageHistoryManager.hasMessageHistory(peerId, messageId)) {
// Показать индикатор
MessageHistoryIndicator.addToMessage({message, container});
}
// Открыть историю
MessageHistoryViewer.show({peerId, messageId});
// Поиск в истории
const results = appMessageHistoryManager.searchInHistory("текст поиска");Реализованная система обеспечивает:
- ✅ Полное хранение всех сообщений и медиафайлов
- ✅ Отслеживание изменений с детализацией
- ✅ Красивый UI с интуитивным интерфейсом
- ✅ Производительность без влияния на основное приложение
- ✅ Расширяемость для будущих функций
- ✅ Интеграция в существующую архитектуру TWE
Система готова к использованию и может быть легко расширена в зависимости от потребностей.