На этой страницеПодписка
События
Подписывайтесь на объявленные события и учитывайте их контекст и время жизни.
Подписка
api.events.on(name, handler) возвращает асинхронный Disposable. Данные события передаются в ограниченном конверте.
const subscription = await api.events.on("locale.changed", async event => {
const environment = await api.environment.get();
const locale = environment.locale;
});
Конверт
interface PluginEvent {
readonly id: string;
readonly timestamp: number;
readonly version: 1;
readonly data: JSONValue;
}
timestamp измеряется в секундах. При необходимости используйте id, чтобы не обрабатывать одно и то же действие повторно.
Известные имена
plugin.activatedaccount.contextChangedapp.foregroundtheme.changedlocale.changedchat.openedиchat.closedcomposer.changedmessage.observed
Часть payload требует соответствующих read-возможностей. Наличие события в типах не гарантирует активный нативный источник во всех сборках и контекстах.
Чего событие не даёт
Уведомление не создаёт новое действие пользователя и не предоставляет новых разрешений. Нельзя из theme.changed получить приватный черновик, если операция требует нативного жеста.
Ошибки и остановка
Обрабатывайте ожидаемые отказы внутри своего callback. Пять отклонённых событий подряд останавливают выполнение плагина. Не рассчитывайте на plugin.deactivating или надёжную доставку последнего события перед остановкой: такие обещания в SDK отсутствуют.
Отписаться
await subscription.dispose();
Не сохраняйте Disposable в постоянное хранилище. При новом запуске создайте подписки заново.