4.5 KiB
4.5 KiB
Веб-клиент «Ласточка» — Журнал изменений
Версия 0.2.0 — Полная функциональность
✅ Реализованные функции
1. Пагинация сообщений
- Файлы:
src/store/chat.ts,src/components/chat/MessagesList.tsx - Что сделано:
- Подгрузка сообщений при скролле вверх
- Индикатор загрузки «Загрузка...»
- Сохранение позиции скролла после подгрузки
- Метод
loadMoreMessages()в store - Флаг
hasMoreMessagesдля отслеживания наличия истории
2. Статусы прочтения
- Файлы:
src/store/chat.ts - Что сделано:
- Автоматическая отметка прочтения при открытии чата (
topic.noteRead()) - Метод
markMessagesAsRead()для ручного вызова - Интеграция с Tinode SDK
- Автоматическая отметка прочтения при открытии чата (
3. Typing Indicator (индикатор набора текста)
- Файлы:
src/store/chat.ts,src/components/chat/MessageInput.tsx - Что сделано:
- Отправка уведомления при вводе текста (
topic.noteKeyPress()) - Debounce 1 секунда для избежания спама
- Метод
sendTypingNotification()в store
- Отправка уведомления при вводе текста (
4. Отображение аватаров из Tinode
- Файлы:
src/lib/tinode-client.ts— функцияgetAvatarUrl()src/store/chat.ts— извлечение аватара из контактаsrc/tinode.d.ts— типы для photo.large/ref
- Что сделано:
- Поддержка base64 (
data:image/...) - Поддержка ссылок (
ref) - Поддержка large версии аватара
- Отображение в ChatItem и Avatar компонентах
- Поддержка base64 (
5. Звук при новом сообщении
- Файлы:
src/store/chat.ts,src/components/layout/Sidebar.tsx - Что сделано:
- Web Audio API для генерации звука (без внешних файлов)
- Кнопка включения/выключения звука в Sidebar
- Звук воспроизводится только для неактивного чата
- Флаг
playSoundв store - Метод
toggleSound()для переключения
🐛 Исправления
TypeScript типы
- Файл:
src/tinode.d.ts - Что исправлено:
- Добавлены методы
getDesc(),noteRead(),noteKeyPress()в Topic - Добавлен
ImportMetaEnvдля Vite environment variables - Обновлён тип TinodeContact с поддержкой
photo.large
- Добавлены методы
Email/SMS аутентификация
- Файлы:
src/lib/email-auth.ts,src/lib/sms-auth.ts - Что исправлено:
- Замена
reqCred()наacc()(API Tinode) - Корректная передача credential через
scheme/secret
- Замена
UI компоненты
- Файлы:
src/components/layout/Sidebar.tsxsrc/components/ui/Icon.tsx
- Что исправлено:
- Добавлены иконки:
settings,group_add,campaign,admin_panel_settings,logout - Исправлена передача props в ChatItem (active, onClick)
- Добавлены иконки:
📦 Сборка
cd dev/lastochka-ui
npm run build
# ✓ built in ~12s
🚀 Запуск dev-сервера
npm run dev
📋 Известные проблемы
- Админ-панель — ошибки TypeScript в
Logs.tsxиSettings.tsx(не критично для основного функционала) - E2E-шифрование — не реализовано (в планах)
- Отправка файлов — требует доработки UI
🎯 Готовность к запуску
| Компонент | Статус |
|---|---|
| Личные чаты | ✅ 100% |
| Группы | ✅ 100% |
| Каналы | ✅ 100% |
| Пагинация | ✅ 100% |
| Статусы прочтения | ✅ 100% |
| Typing indicator | ✅ 100% |
| Аватары | ✅ 100% |
| Звук | ✅ 100% |
| Тёмная тема | ✅ 100% |
| Адаптивность | ✅ 100% |
Следующий этап: Мобильные приложения (iOS/Android) — ребрендинг форков Tinode.