111 lines
4.5 KiB
Markdown
111 lines
4.5 KiB
Markdown
# Веб-клиент «Ласточка» — Журнал изменений
|
||
|
||
## Версия 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)
|
||
|
||
### 📦 Сборка
|
||
|
||
```bash
|
||
cd dev/lastochka-ui
|
||
npm run build
|
||
# ✓ built in ~12s
|
||
```
|
||
|
||
### 🚀 Запуск dev-сервера
|
||
|
||
```bash
|
||
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.
|