Skip to content

PlatformContext

Всё, что ваш модуль знает о платформе, приходит через один объект: PlatformContext. Оболочка внедряет его; вы используете его через React-хуки.

Форма

ts
interface PlatformContext {
  user: PlatformUser;          // кто вошёл + его роли
  building: PlatformBuilding;  // активное здание
  api: PlatformApiClient;      // предварительно аутентифицированный HTTP-клиент в области арендатора
  events: EventBusClient;      // публикация / подписка на события платформы
}

Хуки

tsx
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-клиент, который уже несёт аутентификацию пользователя и ограничен областью активного арендатора. Вы никогда не видите токен.

ts
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... — остановитесь: этот путь не переживёт переход между арендаторами и находится вне того, что поддерживает платформа.

→ Далее: События

Создано на платформе Tango Vision. Вопросы? developers@tango.vision