/* eslint-disable @typescript-eslint/no-explicit-any */ import { adminStore } from './admin-store' import type { AdminIframeEvent, AdminContext, BootstrapOptions } from './types' type MessageParams = { type: string data: Partial } export function publishMessage(params: MessageParams) { window.parent.postMessage( { id: 'admin-ejected-app-message', ...params, }, '*', ) } export function isAdminShellEvent(event: any): event is AdminIframeEvent { return event?.type === 'admin-iframe-message' } // Retrieve context from parent iframe export function listenForAdminShellEvents(options?: BootstrapOptions) { const { proxy } = options ?? {} window.addEventListener('message', ({ data }) => { if (isAdminShellEvent(data)) { if (!proxy) { adminStore.set(data.data) return } const noTokenData = { ...data.data, token: 'cookies', proxy, } adminStore.set(noTokenData) } }) }