PlatformContext
Всё, что ваш модуль знает о платформе, приходит через один объект: PlatformContext. Оболочка внедряет его; вы используете его через React-хуки.
Форма
interface PlatformContext {
user: PlatformUser; // кто вошёл + его роли
building: PlatformBuilding; // активное здание
api: PlatformApiClient; // предварительно аутентифицированный HTTP-клиент в области арендатора
events: EventBusClient; // публикация / подписка на события платформы
}Хуки
import {
usePlatformContext,
useBuilding,
useCurrentUser,
useOptionalBuilding,
} from '@tv/extension-sdk/react';
function MyComponent() {
const ctx = usePlatformContext(); // весь контекст
const building = useBuilding(); // бросает исключение, если здание не выбрано
const user = useCurrentUser(); // вошедший пользователь
const maybe = useOptionalBuilding(); // null вместо исключения
}Клиент api
ctx.api — это HTTP-клиент, который уже несёт аутентификацию пользователя и ограничен областью активного арендатора. Вы никогда не видите токен.
const spaces = await ctx.api.get(`/api/v1/buildings/${building.id}/spaces`);
await ctx.api.post(`/api/v1/buildings/${building.id}/work-orders`, dto);Почему это важно: один и тот же компонент работает и в вашей песочнице, и в продакшен-арендаторе клиента, потому что единственное, что между ними меняется — аутентификация и базовый URL — поставляет платформа, а не ваш код.
Не обходите его стороной
Контракт таков: PlatformContext — ваша единственная дверь. Если вы замечаете, что читаете localStorage, собираете URL Keycloak или жёстко прописываете https://tv-api... — остановитесь: этот путь не переживёт переход между арендаторами и находится вне того, что поддерживает платформа.
→ Далее: События