🚀 HiReg Messenger — большой отчёт о разработке
Разработка HiReg Messenger продолжается, и за всё время проект вырос из базового чата в полноценный мессенджер с собственной клиентской и серверной архитектурой.
Сейчас HiReg — это уже не просто экран сообщений. Под капотом работает полноценная связка Flutter + Node.js/Express + MySQL + Socket.IO, отдельный сервер, realtime-события, push-уведомления, работа с медиа и собственная система групповых и личных чатов.
💬 Личные сообщения
За время разработки были реализованы:
• отправка и получение сообщений в реальном времени;
• статусы отправки и прочтения сообщений;
• индикатор набора текста;
• счётчики непрочитанных сообщений;
• повторная отправка сообщений при ошибке;
• редактирование и удаление сообщений;
• ответы на сообщения;
• закрепление сообщений;
• пересылка сообщений;
• поиск по истории переписки;
• кликабельные ссылки в сообщениях;
• отображение online/offline и времени последнего посещения.
👥 Групповые чаты
Группы постепенно были доведены до уровня личных диалогов.
Сейчас в группах работают:
• создание групп;
• участники и роли;
• информация о группе;
• аватар и название группы;
• realtime-сообщения;
• ответы;
• редактирование;
• удаление;
• закрепление сообщений;
• поиск;
• собственные настройки;
• медиа и файлы;
• голосовые сообщения.
Отдельно была проведена большая работа, чтобы личный и групповой чат больше не развивались как две разные системы.
Многие компоненты теперь становятся общими для обоих типов чатов.
🎙 Голосовые сообщения
Одна из самых больших последних переработок — голосовые.
Добавлено:
• запись голосового удержанием кнопки;
• отображение амплитуды микрофона;
• таймер записи;
• отмена записи свайпом влево;
• виброотклик при достижении зоны отмены;
• исправлена работа самого свайпа — теперь вместе с пальцем двигается именно кнопка микрофона;
• перемотка голосового пальцем;
• скорости воспроизведения 1x / 1.5x / 2x;
• единый проигрыватель для личных и групповых сообщений;
• голосовое больше не запускается повторно после окончания;
• реализована верхняя капсула активного воспроизведения.
Также была проведена оптимизация: вместо создания отдельного аудиоплеера для каждого сообщения используется более единая система воспроизведения.
📸 Фото и видео
Система вложений тоже получила крупное обновление.
Интерфейс скрепки мы сохранили привычным, но переработали внутреннюю механику.
Теперь поддерживаются медиагруппы.
До 10 фото или видео можно отправить одним сообщением-пузырём.
Например, если выбрать 25 файлов:
1-й пузырь — 10 файлов
2-й пузырь — 10 файлов
3-й пузырь — 5 файлов
Причём структура альбома сохраняется на сервере и после повторного входа в чат не превращается обратно в набор отдельных сообщений.
Для этого в сервер и базу данных была добавлена отдельная система:
media_group_id
media_group_index
Также оптимизируется загрузка последних фотографий из галереи — медиа теперь можно подгружать частями, а не пытаться читать всю галерею телефона сразу.
📎 Скрепка и нижняя капсула
Начался большой рефакторинг нижней части чата.
Создаётся единый ChatComposer, чтобы личный чат и группа использовали одну и ту же систему:
• поле ввода;
• emoji;
• скрепка;
• голосовые;
• кнопка отправки;
• ответ на сообщение.
Это важно не только визуально.
Так мы уменьшаем количество дублирующегося кода и лишних перестроений интерфейса при наборе текста.
😀 Emoji
Система emoji также была вынесена ближе к общей архитектуре нижней капсулы.
Цель — чтобы переключение:
клавиатура ↔ emoji
происходило непосредственно внутри интерфейса чата без лишнего открытия отдельных окон.
👤 Профили и пользователи
Также уже реализованы:
• профиль пользователя;
• имя пользователя;
• email;
• номер телефона;
• поиск пользователей;
• поиск по номеру телефона;
• поиск по username;
• загрузка аватаров;
• выбор активного аватара;
• удаление аватаров;
• статус пользователя;
• переход в профиль из чатов и списка диалогов.
🔐 Авторизация
HiReg получил полноценную систему аккаунтов.
Работают:
• регистрация;
• вход;