MyChat 2024.2 — полная синхронизация истории и подгрузка сообщений

sync

  1. Полная синхронизация истории сообщений с сервера
  2. Подгрузка сообщений в чатах
  3. Обработка UNC-ссылок и абсолютных путей в чате
  4. Разное полезное
  5. Все изменения общим списком + история разработки
  6. Как обновиться на последнюю версию?

1. Полная синхронизация истории сообщений с сервера


Суть проблемы: мы установили MyChat Client на новый компьютер. История сообщений хранится на сервере, корпоративным мессенджером пользуемся несколько лет. Сообщений накоплено для нашей учётной записи — сотни тысяч. Как прочитать их в клиентском приложении, если локальная база данных истории — пуста?

Хаос

Раньше история "подтягивалась" с сервера, когда мы открывали тот или иной приватный диалог или конференцию. Но не вся, а где-то около сотни последних сообщений для каждого из диалогов. И получалось так, что если приложение было удалено или установлено заново на "чистом" компьютере, то старая история за позапрошлый год была недоступна, её можно было увидеть только через админку сервера.

В версии 2024.2 теперь есть система полной синхронизации. Она работает в автоматическом режиме, специально делать ничего не надо. Как только вы открываете окно истории (Alt+H), MyChat Client решает, нужна синхронизация или нет. Если да, то программа вычисляет, что именно нужно (дельту), а затем в консоли показывается уведомление и прогресс:

Синхронизация истории в MyChat

Когда синхронизация закончится, окно истории откроется само. А пока с программой можно работать в обычном режиме, все функции доступны. Если вы были в отпуске, и синхронизировать нужно несколько сотен сообщений, что появились за это время, то переключения в консоль не будет, программа довольно быстро “дотянет” недостающие данные с сервера и откроет окно просмотра истории.

Скорость синхронизации зависит от многих факторов: количества и объёма сообщений, текущей загрузки сервера, скорости сети, производительности клиентского компьютера. Но программа пишет приблизительное оценочное время, сколько ещё нужно подождать до полного окончания. Обычно оно потом корректируется в сторону уменьшения. Например, в начале программа показала, что ей, вероятно, понадобится полчаса, а по факту весь процесс занял 6 минут. Это нормально, чем ближе к окончанию работы, тем точнее можно оценить скорость и время.

Процесс можно прервать: например, выйти из программы или выключить компьютер. Ничего страшного не случится, MyChat сам разберётся, на каком этапе его остановили и потом закончит работу при следующем запуске.

Надо учесть, что такая синхронизация может и не понадобиться, если вы просто будете открывать разные диалоги и читать там сообщения. Система кешей в MyChat настроена довольно хитро и постарается сократить обращения к серверу до минимума, чтобы получить максимум скорости и сэкономить трафик.


2. Подгрузка сообщений в чатах


Тоже своего рода синхронизация, но немного "с другой стороны". Все пользователи мобильных мессенджеров привыкли просто скроллить пальцем ленту сообщений внутри приложения, не задумываясь, откуда она берётся. Она как будто бесконечная.

Довольный работник

Что-то похожее сделали и мы в MyChat для Windows. История может подтягиваться с сервера по сети, но обычно достаётся из локальной базы данных. Иногда, если кусков истории не хватает, они автоматически будут запрошены на сервере, а программа закеширует их в локальной зашифрованной базе.

Просто скроллим сообщения мышкой вверх (или Alt+Up / Alt+Home), и читаем хоть до самого начала:

Скрол подгрузки сообщений в чате

Вся магия спрятана "под капотом". Как и должно быть.


3. Обработка UNC-ссылок и абсолютных путей в чате


Автоматически распознаются и рисуются синим ссылки типа "c:\temp\", "C:\tools\WiFi\nirsoft\WifiInfoView.exe", "\\192.168.10.13\public" и тому подобные.

Если кликнуть по UNC-ссылке, то запустится Проводник и попытается открыть эту ссылку по сети. Если же это ссылка на локальный каталог или файл, то чат проверит, существует ли указанный путь. Если нет — будет выдано специальное toast-уведомление.

Если путь существует — откроется Проводник. Если в пути ещё и был указан файл, то Проводник выделит его, чтобы пользователь имел возможность открыть или запустить файл, но уже самостоятельно. Это сделано из соображений безопасности, вдруг это исполняемый файл или какой-то скрипт.

Если локальный путь существует, а файл указан неверно, то Проводник всё равно откроется, но уже просто с папкой, без выделения конкретного файла.

UNC-ссылки и абсолютные пути в чате


4. Разное полезное


Консольная команда /mini теперь уменьшает размеры окна до минимума, но больше не переключается в консоль (вы же знаете, что консольные команды можно выполнять прямо в тексте чата, да?).

При клике на изображении или файле, который нужно скачать с сервера, а он уже удалён — программа не переключается в консоль для показа ошибки, чтобы не терять фокус и контекст, а показывает toast-уведомление:

Ошибка файла в чате

Запись в протокол делается, как и раньше.

В Android и iOS-приложениях добавили настройку для оптимизации отправляемых изображений. Если настройка включена, то разрешение изображений уменьшается до FullHD (максимум 1920 пикселей по большей стороне). Размер уменьшается на 60-75%, фото быстрее отправляются и для получателя превью генерируется в разы быстрее.


5. Все изменения общим списком + история разработки


История разработки версии с комментариями разработчиков

MyChat Client

[+] (win32) система полной синхронизации истории сообщений с сервера;
[+] (win32) автоматический рендеринг локальных и UNC-ссылок в тексте чата и переход по ним по клику мышкой;
[+] (android) (ios) добавлена настройка для оптимизации отправляемых изображений. Если настройка включена, разрешение изображений уменьшается до FullHD(максимум 1920 пикселей по большей стороне). Размер уменьшается на 60-75%, фото быстрее отправляются и для получателя превью генерируется в разы быстрее;
[+] (win32) автоматическая подгрузка сообщений из истории в конференциях в основное окно чата при прокрутке колесом мышки и с клавиатуры;
[+] (win32) автоматическая догрузка сообщений из истории в приватах в основное окно чата при прокрутке колесом мышки и с клавиатуры;

[*] (win32) обновлён рендерер истории сообщений, теперь там отображаются все типы сообщений и нет дубликатов;
[*] (win32) консольная команда /mini теперь уменьшает размеры окна до минимума, но больше не переключается в консоль;
[*] (win32) вставка из буфера обмена и корректная обработка в чате UNC ссылок и ссылок на локальные папки/файлы с пробелами в названиях (копирование, переходы, рендеринг);
[*] (win32) убраны паузы при обработке кликов правой кнопкой мышки по UNC-ссылкам, которые в данный момент недоступны;
[*] (win32) при клике на изображении или файле, который нужно скачать с сервера, а он уже удалён — программа не переключается в консоль для показа ошибки, чтобы не терять фокус и контекст, а показывает toast-уведомление. Запись в протокол делается, как и раньше;

[-] (win32) если отправить пользователю приватное сообщение и он офлайн уже некоторое время, то счётчик, сколько времени он не в сети, сбрасывался. Исправлено;
[-] (win32) ошибка в рендеринге истории сообщений, если запрошена большая история и попробовать быстро переключаться между разными конференциями/приватами, то могли возникать проблемы. Исправлено;
[-] (win32) неправильная сортировка приватных диалогов в окне просмотра истории и неправильное отображение даты последней активности. Исправлено;
[-] (ios) после отправки изображения, на экране просмотра оно скачивалось с сервера вместо локального хранилища . Исправленож;
[-] (android) (ios) неправильно отрабатывала функция удаления всех приватных сообщений, требовался выход из учетной записи. Исправлено;
[-] (ios) исправлена ошибка, возникающая после отправки контента через меню "Поделиться", когда приложение активно. Клиент переставал обрабатывать любые события до перезапуска;
[-] (ios) неправильно отображались и не скачивались файлы, отправленные с Android. Исправлено;
[-] (win32) исправлена ошибка ID 117323F8 "Cannot focus a disabled or invisible window";
[-] (win32) исправлена ошибка ID F43D7638 "Call DeactivateFontsInfo before calling this";
[-] (win32) ошибка в файле французской локализации, приводила к циклической ошибке при обновлении на новую версию. Исправлено;
[-] (win32) фильтр пользователей в конференциях, иногда не было видно placeholder над списком пользователей после переключения на конференцию из приватного диалога;

MyChat Server

[-] (admin) в разделе "настройки" — "настройка SMTP", при вставке текста с помощью контекстного меню, не предлагалось сохранить новые параметры и была доступна кнопка "проверить подключение". Исправлено;
[-] проблема с первичным запуском сервера, когда он должен создать профиль "с нуля", в чистой начальной установке. Исправлено.

6. Как обновиться на последнюю версию?


И коммерческая, и бесплатная версии обновляются одинаково. Сначала обновляется сервер, затем — клиенты. В основном, в автоматическом режиме.

Инструкция по обновлению MyChat

Служба поддержки