Donutgramплагины
На этой страницеAPI transforms

Локальные трансформации

Меняйте разрешённое локальное представление профиля и списка чатов.

API transforms

Трансформация получает ограниченный снимок нативной модели и возвращает декларативную правку. Нужны профиль localPrivate и ui.transform с точным slot.

Пустые разделы профиля

await api.transforms.register({ id: "hide-empty", slot: "profile" }, input => ({
  hide: input.panes.filter(pane => pane.empty).map(pane => pane.id)
}));

Хост разрешает скрывать только известные разделы, помеченные как пустые. Неизвестные данные и другие ограничения проверяются нативной стороной.

Непрочитанные чаты выше

await api.transforms.register({ id: "unread-first", slot: "chatList", priority: 0 }, input => ({
  order: input.items
    .filter(item => !item.pinned)
    .sort((a, b) => Number(b.unread > 0) - Number(a.unread > 0))
    .map(item => item.handle)
}));

Закреплённые чаты нельзя перемещать или скрывать. Не включённые в patch элементы сохраняют относительный порядок. Это локальное отображение, а не изменение серверных папок или закрепов.

Контракт chatList

Вход: { items: [{ handle, title, unread, pinned }] }. Результат: { order?: [handle], hidden?: [handle] }.

Порядок и ограничения

Приоритет — целое число от −100 до 100. На runtime допускается до восьми трансформаций. Вход и результат ограничены 32 КиБ и проверяются хостом. Ошибка приводит к безопасному нативному fallback, а не к произвольной мутации модели.

Тип этого slot зарезервирован, но нативный renderer не подключён: регистрация отклоняется с feature_unavailable. Не публикуйте плагин, рассчитывающий на изменение ссылок через этот slot.