CondoWebAppGetLaunchParams

Данный метод не принимает параметров и возвращает текущий контекст пользователя, необходимый мини-приложениям для управления сессиями и интерфейсом.

Платформы

  • B2B-Web

Возвращаемое значение

В случае успешного выполнения вы получите JSON-объект следующего типа:
typescript
type GetLaunchParamsData = { condoUserId: string | null // ID текущего пользователя condoUserType: 'staff' | 'resident' // Тип пользователя condoLocale: string // Текущая локаль пользователя. ("en" / "ru") condoContextEntity: 'Organization' | 'Resident' // Тип контекстной сущности пользователя condoContextEntityId: string | null // ID контекстной сущности пользователя }

Про тип пользователя и контекстную сущность

С типом пользователя все просто. В B2B приложениях это всегда сотрудник (staff), в B2C приложениях - житель (resident).

condoContextEntity в B2B-приложениях

B2B приложение всегда открывает сотрудник какой-то организации. В этом случае вы получите её ID в поле condoContextEntityId, а condoContextEntity будет всегда иметь значение Organization. При этом пользователь может быть сотрудником нескольких организаций, однако при ее смене в основном интерфейсе приложения происходит перезагрузка IFrame текущего мини-приложения. Поэтому вы можете безболезненно повесить обработчик CondoWebAppGetLaunchParams на загрузку страницы (window.addEventListener("load", () => {...})) в случае чистого JS или useEffect(() => {...}, []) в случае React).

condoContextEntity в B2C-приложениях

B2C приложение всегда открывает житель. Житель может проживать в нескольких адресах (помещениях), каждому из которых соответствует своя сущность Resident, id которой вы можете получить при открытии B2C приложения.

Пример использования

typescript
import '@/styles/globals.css' import { cookies } from 'next/headers' import React, { useEffect } from 'react' import bridge from '@open-condo/bridge' import type { AppProps } from 'next/app' export default function App ({ Component, pageProps }: AppProps): React.ReactNode { useEffect(() => { bridge.send('CondoWebAppGetLaunchParams').then(data => { console.log(data.condoLocale) // Установите локаль мини-приложения, если у вас имеется таковая if (cookies().get('currentUserId')?.value !== data.condoUserId) { // Если текущий пользователь в куках не совпадает с пришедшим - ведите пользователя на авторизацию } }).catch((error) => { // В случае ошибки - попытайтесь еще или ведите пользователя на авторизацию }) }, []) return ( <Component {...pageProps} /> ) }