/// import type { UnreadCounterClient, UnreadCounterData, UnreadCounterParams } from '@yandex-int/messenger.unread-counter'; import { Event } from '@yandex-int/messenger.utils'; import * as IWidget from '../../types'; import { PresetOptions } from '../../config'; /** * @doctitle Плагин для запроса кол-ва непрочитанных сообщений * * @doc Позвозляет получить кол-во непрочитанных сообщений без открытия Мессенджера. * При этом после открытия виджета - запросы (polling) прекращается и начинают использоваться данные Мессенджера. * * @doc -scope=internal * В случае если сервис находится не на домене `yandex.{tld}` или `*.yandex.{tld}` * необходимо обратиться к дежурному мессенджера. * @doc -scope=external * До выдачи `serviceId` плагин работать не будет * * @doc -scope=internal * Для упрощенной инициализации плагина можно использовать две фабрики: * * `yandexUnreadCounterFactory` - для внешних сервисов яндекса * * `yandexTeamUnreadCounterFactory` - для внутренних сервисов яндекса * * @doc -scope=external * Для инициализации плагина используйте фабрику `unreadCounterFactory`. * * @docsubtitle Пример * * @example * -scope=internal * import { * Widget, * Config, * yandexUnreadCounterFactory, * } from 'yandex-int/messenger.widget'; * * const widget = new Widget(new Config().create()); * const unreadCounter = yandexUnreadCounterFactory(); * * unreadCounter.onChanged * .addListener((value: UnreadCounterData) => console.log(value)) * * widget * .addPlugin(unreadCounter) * .init(); * * @example * -scope=external * import { * unreadCounterFactory, * } from 'yandex-messenger-widget'; * * const widget = createSingleChatBlockUIWidget(WIDGET_OPTIONS); * const unreadCounter = unreadCounterFactory(); * * unreadCounter.onChanged * .addListener((value: UnreadCounterData) => console.log(value)) * * widget * .addPlugin(unreadCounter) * .init(); * * @doc -scope=internal * Доступны два клиента полинга из пакета `yandex-int/messenger.unread-counter` * * `UnreadCounter` - для получения данных используется полинг https ручки мессенджера * Подходит для интеграции в сервисы яндекса. Необходимо разрешить `CORS` на yandex.{tld} * * `UnreadCounterIframeClient` - для получения данных используется iframe * (подходит при интеграции во внешние сервисы) * * @docsubtitle -scope=internal Пример с `UnreadCounter` * * @example * -scope=internal * import { UnreadCounter } from 'yandex-int/messenger.unread-counter'; * import { * Widget, * Config, * UnreadCounterPlugin, * YANDEX_UNREAD_COUNTER_ENDPOINT, * } from 'yandex-int/messenger.widget'; * * const widget = new Widget(new Config().create()); * const unreadCounter = new UnreadCounterPlugin( * YANDEX_UNREAD_COUNTER_ENDPOINT, * (params) => new UnreadCounter(params) * ); * * unreadCounter.onChanged * .addListener((value: UnreadCounterData) => console.log(value)) * * widget * .addPlugin(unreadCounter) * .init(); * */ export declare class UnreadCounterPlugin implements IWidget.Plugin { /** * @doc * URL ручки непрочитанных сообщений * @doctemplate members_annotation */ private unreadUrl; /** * @doc * Фабрика клиента получения кол-ва непрочитанных из внешнего источника. * Стандартные клиенты лежат в пакете `yandex-int/messenger.unread-counter` * @doctemplate members_annotation */ private unreadCounterFactory?; private widgetProxy; private unreadCounterClient?; lastValue: Maybe; /** * @doc * Вызывется при изменении значения непрочитанных сообщений * @doctemplate members_annotation */ readonly onChanged: Event; /** * @doctitle Конструктор * @doctemplate method_annotation * @doc_scope internal */ constructor( /** * @doc * URL ручки непрочитанных сообщений * @doctemplate members_annotation */ unreadUrl: string, /** * @doc * Фабрика клиента получения кол-ва непрочитанных из внешнего источника. * Стандартные клиенты лежат в пакете `yandex-int/messenger.unread-counter` * @doctemplate members_annotation */ unreadCounterFactory?: ((params: UnreadCounterParams) => UnreadCounterClient) | undefined); /** * @private */ init({ serviceId, workspaceId, unreadCounterChatId, unreadCounterOtherGuid, unreadCounterNsFilter, unreadWithCountChats, unreadCountDetailedWorkspace, orgId, authToken, authPartition, selectedUid, originsProvider, config, }: IWidget.Options & PresetOptions, widget: IWidget.WidgetProxy): void; private handleUnreadCounter; private update; get shouldUseValueForChat(): boolean; /** * @private */ LCClose(): void; /** * @private */ LCReady(): void; }