Files
Anton Budylin ea171ed95a first commit
2026-04-14 10:12:51 +03:00

4.5 KiB
Raw Permalink Blame History

Веб-клиент «Ласточка» — Журнал изменений

Версия 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 компонентах

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.tsx
    • src/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

📋 Известные проблемы

  1. Админ-панель — ошибки TypeScript в Logs.tsx и Settings.tsx (не критично для основного функционала)
  2. E2E-шифрование — не реализовано (в планах)
  3. Отправка файлов — требует доработки UI

🎯 Готовность к запуску

Компонент Статус
Личные чаты 100%
Группы 100%
Каналы 100%
Пагинация 100%
Статусы прочтения 100%
Typing indicator 100%
Аватары 100%
Звук 100%
Тёмная тема 100%
Адаптивность 100%

Следующий этап: Мобильные приложения (iOS/Android) — ребрендинг форков Tinode.