immobile 26.1500.0 Заметное

Immobile 26.1500.0: личные закрепления и серверная очистка истории

6 мин чтения Устаревших API: 3
Узнавайте о ломающих изменениях Битрикса раньше, чем они доедут до прода: свежие разборы — в канале @bxmax_updates

Мобильный мессенджер 26.1500.0 догоняет серверный Im 26.1400.0: личные закрепы, поиск по всем чатам, скрытие папок и очистка истории, которая теперь идёт через сервер. Ещё в приложении появились вкладка встреч и отметка из чата. Почти всё включается серверными флагами, так что после обновления портал выглядит как раньше, пока вы их не включите.

Новое

Закрепляйте сообщения для себя

Личный закреп не зависит от общего, на одном сообщении могут стоять оба. Функцию включает серверный isPersonalPinAvailable === true, по умолчанию она выключена. Права писать в чат не нужно, но в комментариях личных закрепов нет. В списке закрепов появились фильтры «личные» и «общие» и поиск. Лимиты приходят в IM_FEATURES.pinLimits, если их нет, клиент считает по 20.

В своём расширении закреп ставит MessageService из im/messenger/provider/services/message, его создают так же, как штатный диалог:

        const { MessageService } = require('im/messenger/provider/services/message');

const messageService = new MessageService({ store, chatId, dialogId });
const pinned = await messageService.pinMessagePersonally(messageId).catch(() => false);

    

pinMessagePersonally() и unpinMessagePersonally() возвращают Promise<boolean>, отдают ошибку наверх и сами откатывают оптимистичное изменение, если сервер отказал.

Наведите порядок в папках

Экран папок разделяет видимые и скрытые пользователем, порядок и видимость сохраняются вместе. Если уйти с экрана, не сохранив изменения, приложение предложит их сохранить. Скрыть папку можно, только если сервер прислал canHide === true, а папки, скрытые системой, в списки не попадают. Чаты можно закреплять внутри папки: pin и unpin принимают необязательный folderId, нужен флаг isFolderScopedPinsAvailable. Без папки работает общий recent.pinned.

Ищите сообщения по всем чатам

Глобальный поиск стартует с трёх символов, отдаёт по 20 результатов и сортирует по релевантности или дате, текущая папка его не ограничивает. Нужны withMessageSection в конфигурации и серверный messageSearchAvailable === true, для гостей поиск закрыт всегда. После просмотра найденного сообщения поиск возвращается к прежним результатам. Найденный комментарий открывается вместе с родительским каналом, а открытую линию, которую приложение не показывает, предложат открыть в браузере.

Для своих экранов есть MessageServerSearchStrategy из im/messenger/lib/chat-search с пагинацией, повтором и отменой запроса и createOpenChannelCommentsOptions() из im/messenger/lib/channel-comments-opener, который возвращает null, если комментарий открыть нельзя.

Очищайте историю через сервер

Очистка теперь вызывает im.v2.Chat.clearHistory (для себя) или im.v2.Chat.clearHistoryForAll (для всех), локальное состояние меняется после ответа сервера. Кто может очищать, решает минимальная роль, присланная сервером: без роли пункт недоступен. Сообщения новее границы lastId и ещё не отправленные остаются. Вместе с историей уходят связанные локальные закрепы, файлы и ссылки, а запоздавшая подгрузка не вернёт удалённое. Клиентские обёртки — ChatService.clearChatHistoryForSelf(dialogId) и clearChatHistoryForAll(dialogId).

Встречи, отметки и звонки

  • Вкладка встреч Bitrix\ImMobile\NavigationTab\Tab\Meeting подключена по коду папки meeting (клиентский ID — calendar), доступность определяет SystemFolder. Во вкладке видны и встречи проектов, создаются они через событие календаря.
  • Отметиться можно из меню вложений чата через stafftrack:entry. Пункт видит внутренний пользователь с правом писать в чате с людьми: гостям, коллаберам, экстранету, ботам, общему чату, каналам, комментариям, тредам, открытым линиям и CoPilot он недоступен. Саму отметку проверяет сервер StaffTrack. Новый Bitrix\ImMobile\Settings::hasCheckInHistory(): bool скажет, есть ли у сотрудника отметки, и вернёт false, если модуля stafftrack нет или его версия старая.
  • Исходящие гостевые звонки получили отдельные серверные флаги для личного и группового звонка, на клиенте оба по умолчанию false. Начать групповой звонок в одиночку можно в чате типа chat, open или calendar без родительского чата, где пользователь не гость и пока единственный участник, при доступных гостях, праве их приглашать и положительном времени ожидания из call.
  • Текущие звонки не пропадают из списка при фильтрации. Общая вкладка показывает все звонки, вкладка проекта — звонки проекта и звонок пользователя на этом устройстве.

Файлы, видео и Markdown

  • Скачать видеосообщение можно, только если сервер вернул isVideoNoteDownloadAvailable === true и в приложении есть native-функция chat_video_note_download. На отказ VIDEO_NOTE_DOWNLOAD_RESTRICTED пользователь увидит «Видеосообщение нельзя скачать или сохранить в Битрикс24».
  • При DISK_QUOTA_EXCEEDED или прежнем QUOTA_BAD отправка пачки файлов останавливается, уже загруженные файлы удаляются. Баннер предлагает повторить, подпись и цитата не теряются, кнопка расширения лимита появляется только с серверным infoHelperCode. В боковой панели чата файлы можно удалять с подтверждением.
  • Markdown-блоки показывают текст, код, цитаты и таблицы. Для этого нужны серверный Markdown parser и native-renderer и native-функции chat_markdown_native_renderer_v1 и chat_builder_markdown_v1.

БД

Серверная схема не меняется, всё происходит в SQLite на устройстве. Миграция 39 добавляет в b_im_folder поля hiddenBySystem и hiddenByUser и переносит старое visible = '0' в hiddenBySystem = '1', столбец visible остаётся. Миграция 40 создаёт b_im_link_personal_pin и b_im_link_personal_pin_message, миграция 41 добавляет индекс b_im_message(chatId, id). Таблица b_im_folder_pin с ключом (folderId, chatId) создаётся через schema, без номерной миграции.

Мелочи и находки

  • Свои JN-расширения проверьте на удалённых символах. FolderService.sortFolders() из im/messenger/provider/services/folder заменён на saveFolderList({ folderIds, foldersToShow?, foldersToHide? }), folderIds обязателен и должен быть массивом, а результат приходит массивом папок. showClearHistoryCollabAlert из im/messenger/lib/ui/alert заменён на showClearHistoryChatAlert({ forAll, deleteCallback, cancelCallback }), ErrorType.recent.maxPin из im/messenger/const — на ErrorType.folder.pinsLimitExceeded (FOLDER_PINS_LIMIT_EXCEEDED).
  • Меню сообщения показывает, кто и когда прочитал сообщение в личном чате, реакции и список пользователей. Стопке аватаров нужна native-функция popup_menu_icon_stack, без неё выводится счётчик.
  • Кнопка повторной генерации ответа AI-ассистента требует isAiAssistantRegenerateAvailable и личного чата с ассистентом, во время генерации она скрыта.
  • Системная медиасессия при проигрывании аудиосообщения показывает название записи, а не ajax.php.

Устаревшие и удалённые API в этой версии

Символ Статус Чем заменять
im/messenger/provider/services/folder: FolderService.sortFolders() Удалено im/messenger/provider/services/folder: FolderService.saveFolderList()
im/messenger/lib/ui/alert: showClearHistoryCollabAlert Удалено im/messenger/lib/ui/alert: showClearHistoryChatAlert
im/messenger/const: ErrorType.recent.maxPin Удалено im/messenger/const: ErrorType.folder.pinsLimitExceeded

Новая версия вышла — разбор уже в Telegram

В канале @bxmax_updates публикуем каждый свежий разбор: что сломается, что устарело и что появилось в API. Узнаете до того, как обновите прод.

Подписаться

Читайте дальше

immobile 26.1150.0 Заметное

Immobile 26.1100.0–26.1200.0: команды ботов по «/», AI-задачи из сообщений и папка «Вайбкод»

Модуль immobile обновился в коробочном Битрикс24 трижды: 26.1100.0 (в одной поставке с im 26.1000.0), 26.1150.0 и 26.1200.0 (вместе с im 26.1100.0 и call 26.800.0). PHP-API модуля только вырос: четыре метода `Settings` и класс вкладки `VibecodeApp`. Почти всё новое включается опциями im или immobile…

2 мин
timemanmobile 26.600.0 Заметное Свежее

Timemanmobile 26.550.0–26.600.0: отдельная карточка отчёта и диагностика начала дня

В timemanmobile 26.550.0 и 26.600.0 рабочий отчёт открывается в приложении отдельной карточкой, а не страницей портала. Отчёт, отправленный после полуночи, больше не считает отметки за чужой день. А если форма начала дня не показалась, теперь видно почему: причину пишет диагностический журнал.

4 мин
stafftrackmobile 26.600.0 Заметное Свежее

Stafftrackmobile 26.600.0: офисы с телефона и список присутствия команды

Мобильная часть [Stafftrack 26.600.0](/bitrix-updates/stafftrack/stafftrack-26-600-0): с телефона теперь можно создавать и редактировать офисы, искать сотрудника в списке присутствия команды и видеть, что рабочий отчёт готов к отправке. Всё это включается серверными флагами и зависит от версии прило…

4 мин
stafftrack 26.600.0 Ломающее Свежее

Stafftrack 26.600.0: управление офисами и маршруты сотрудников

В Stafftrack 26.600.0 офисы редактируются в вебе вместе с геозоной, сотрудниками и фотографиями, руководитель видит на карте сегодняшний маршрут сотрудника, а список сотрудников офиса можно запросить у руководителя. Если вы сохраняли офисы своим кодом или строили карты по отметкам, после обновления…

6 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…

Можно закрыть чат и перейти на другую страницу. Когда ответ будет готов, на кнопке Домового появится отметка.

Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти