UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

35 lines (26 loc) 1.24 kB
// experimental, no unit tests cover this module import { getConfiguration } from 'scrivito_sdk/app_support/configure'; import { getInstanceId } from 'scrivito_sdk/app_support/get_instance_id'; import { isSelectedObjMessage } from 'scrivito_sdk/app_ui_protocol'; import { postMessageLinkFor } from 'scrivito_sdk/bridge'; import { load } from 'scrivito_sdk/loadable'; import { Obj } from 'scrivito_sdk/realm'; /** @beta */ export async function selectImageFromContentBrowser(): Promise<Obj | null> { const configuration = await getConfiguration(); const adoptUi = configuration.adoptUi; const uiDomain = typeof adoptUi === 'string' ? adoptUi : 'https://edit.scrivito.com'; const selectImageUrl = `${uiDomain}/${getInstanceId()}/selectImage~`; const uiWindow = window.open(selectImageUrl, '_blank'); if (!uiWindow) throw new Error('Failed to open UI window'); const message = await postMessageLinkFor(window) .incomingMessages.filter((event) => event.remoteWindow === uiWindow) .map((event) => event.data) .filter(isSelectedObjMessage) .waitForFirst(); uiWindow.close(); const selectedId = message.objId; if (!selectedId) return null; return await load(() => Obj.onAllSites().get(selectedId)); }