From 71f37c7a210699983b09c417b19dc2be2c9e274b Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Tue, 7 May 2024 18:30:31 +0200 Subject: [PATCH] Add basic iFrame interaction --- .../extensionLoader/extensionLoader.jsx | 51 ++---------- .../federatedExtensionLoader.jsx | 52 +++++++++++++ .../federatedExtensionLoader/index.js | 17 ++++ .../standaloneExtensionLoader/index.js | 17 ++++ .../standaloneExtensionLoader.jsx | 78 +++++++++++++++++++ .../controllers/plugins/uiExtensions/sagas.js | 1 + .../plugins/uiExtensions/selectors.js | 3 +- .../projectUiExtensionPage.jsx | 13 ++-- app/src/routes/constants.js | 1 + 9 files changed, 180 insertions(+), 53 deletions(-) create mode 100644 app/src/components/extensionLoader/federatedExtensionLoader/federatedExtensionLoader.jsx create mode 100644 app/src/components/extensionLoader/federatedExtensionLoader/index.js create mode 100644 app/src/components/extensionLoader/standaloneExtensionLoader/index.js create mode 100644 app/src/components/extensionLoader/standaloneExtensionLoader/standaloneExtensionLoader.jsx diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx index 6a53110f2f..099c2db23d 100644 --- a/app/src/components/extensionLoader/extensionLoader.jsx +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -16,58 +16,21 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { BubblesLoader } from '@reportportal/ui-kit'; import { ErrorBoundary } from 'components/containers/errorBoundary'; -import { createImportProps } from 'controllers/plugins/uiExtensions/createImportProps'; import { ExtensionError } from './extensionError'; import { extensionType } from './extensionTypes'; -import { useFederatedComponent } from './hooks'; -import { getExtensionUrl } from './utils'; - -function FederatedExtensionLoader({ extension, withPreloader, ...componentProps }) { - const { moduleName, scope, pluginName } = extension; - const url = getExtensionUrl(extension); - - const { failed, Component } = useFederatedComponent(scope, moduleName, url); - - // TODO: replace with proper failed state - if (failed) { - return

Failed to load extension: {moduleName}

; - } - - // TODO: Provide extensionImportProps via React Context - const extensionImportProps = createImportProps(pluginName); - - return ( - : null}> - {Component ? : null} - - ); -} -FederatedExtensionLoader.propTypes = { - extension: extensionType, - withPreloader: PropTypes.bool, -}; -FederatedExtensionLoader.defaultProps = { - extension: {}, - withPreloader: false, -}; - -function StandaloneExtensionLoader({ extension }) { - return