UNPKG

@unito/integration-debugger

Version:

The Unito Integration Debugger

121 lines (120 loc) 8.41 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const chalk_1 = __importDefault(require("chalk")); const store_1 = require("../store"); const configuration_1 = require("../resources/configuration"); const styles_1 = require("../styles"); const setIntegration_1 = __importDefault(require("./configuration/setIntegration")); const setApiKey_1 = __importDefault(require("./configuration/setApiKey")); const setCredential_1 = __importDefault(require("./configuration/setCredential")); const chooseEnvironment_1 = __importDefault(require("./configuration/chooseEnvironment")); const chooseCredential_1 = __importDefault(require("./configuration/chooseCredential")); const chooseIntegration_1 = __importDefault(require("./configuration/chooseIntegration")); const Configuration = () => { const [saving, setSaving] = (0, react_1.useState)(false); const [modal, setModal] = (0, react_1.useState)(null); const windowRef = (0, react_1.useRef)(null); const configuration = (0, store_1.useConfigurationState)(); const integration = (0, store_1.useIntegrationState)(); const credential = (0, store_1.useCredentialState)(); const profile = (0, store_1.useProfileState)(); const status = (0, store_1.useStatusState)(); const labels = { apiKey: [chalk_1.default.whiteBright('a'), chalk_1.default.blueBright('pi key')].join(''), environment: [chalk_1.default.whiteBright('e'), chalk_1.default.blueBright('nvironment')].join(''), integration: [chalk_1.default.whiteBright('i'), chalk_1.default.blueBright('ntegration')].join(''), credential: [chalk_1.default.whiteBright('c'), chalk_1.default.blueBright('redential')].join(''), save: [chalk_1.default.whiteBright('s'), chalk_1.default.blueBright('ave')].join(''), }; const effectiveLabels = { apiKey: modal === 'apiKey' ? chalk_1.default.bgWhiteBright(labels.apiKey) : labels.apiKey, environment: modal === 'environment' ? chalk_1.default.bgWhiteBright(labels.environment) : labels.environment, integration: modal === 'integration' ? chalk_1.default.bgWhiteBright(labels.integration) : labels.integration, credential: modal === 'credential' ? chalk_1.default.bgWhiteBright(labels.credential) : labels.credential, save: saving ? chalk_1.default.bgWhiteBright(labels.save) : labels.save, }; const closeModal = () => { setModal(null); windowRef.current?.focus(); }; (0, react_1.useEffect)(() => { windowRef.current?.focus(); windowRef.current?.key(['a'], function () { if (!modal) { setModal('apiKey'); } }); windowRef.current?.key(['e'], function () { if (!modal) { setModal('environment'); } }); windowRef.current?.key(['i'], function () { if (!modal) { setModal('integration'); } }); windowRef.current?.key(['c'], function () { if (!modal) { setModal('credential'); } }); windowRef.current?.key(['s'], function () { if (!modal) { setSaving(true); try { (0, configuration_1.writeConfiguration)(configuration.current); // Blink effect. setTimeout(() => { setSaving(false); }, 100); } catch { /* TODO */ setSaving(false); } } }); windowRef.current?.key(['escape'], function () { setModal(null); }); return () => { if (windowRef.current) { windowRef.current.free(); } }; }, [windowRef]); return ((0, jsx_runtime_1.jsxs)("box", { top: 3, ref: windowRef, children: [(0, jsx_runtime_1.jsx)("box", { label: (0, styles_1.paneTitle)('profile'), left: 0, width: "33%", top: 0, height: "100%-3", border: styles_1.paneBorder, style: styles_1.pane, children: configuration.environment === configuration_1.Environment.None ? `You don't need a profile in the ${chalk_1.default.cyanBright(configuration_1.Environment.None)} environment.` : !configuration.apiKey ? "You didn't set an API key yet." : !status.environment ? 'The platform is down.' : !status.apiKey ? 'Your API key is invalid or expired.' : (0, styles_1.jsonOutput)(profile.current) }), (0, jsx_runtime_1.jsx)("box", { label: (0, styles_1.paneTitle)('integration'), left: "33%", width: "33%", top: 0, height: "100%-3", border: styles_1.paneBorder, style: styles_1.pane, scrollbar: styles_1.scrollbar, scrollable: true, keys: true, children: !configuration.integrationId && !configuration.integrationUrl ? "You didn't choose or set an integration yet." : !status.environment ? 'The platform is down.' : configuration.environment !== configuration_1.Environment.None && !configuration.credentialId ? `You must choose credentials in the ${chalk_1.default.cyanBright(configuration.environment)} environment.` : !status.integration ? 'The integration is down or produced an error.' : configuration.environment === configuration_1.Environment.None ? configuration.integrationUrl : (0, styles_1.jsonOutput)(integration.current) }), (0, jsx_runtime_1.jsx)("box", { label: (0, styles_1.paneTitle)('credential'), left: "66%", width: "34%", top: 0, height: "100%-3", border: styles_1.paneBorder, style: styles_1.pane, children: !configuration.credentialId && !configuration.credentialPayload ? "You didn't choose or set a credential yet." : !status.environment ? 'The platform is down.' : !status.credential ? 'The credential is invalid or expired.' : configuration.environment === configuration_1.Environment.None ? (0, styles_1.jsonOutput)(configuration.credentialPayload) : (0, styles_1.jsonOutput)(credential.current) }), (0, jsx_runtime_1.jsxs)("layout", { left: 0, bottom: 0, height: 3, border: styles_1.paneBorder, style: styles_1.unfocusablePane, children: [(0, jsx_runtime_1.jsx)("button", { label: effectiveLabels.environment }), chalk_1.default.gray(' |'), (0, jsx_runtime_1.jsx)("button", { label: effectiveLabels.apiKey }), chalk_1.default.gray(' |'), (0, jsx_runtime_1.jsx)("button", { label: effectiveLabels.integration }), chalk_1.default.gray(' |'), (0, jsx_runtime_1.jsx)("button", { label: effectiveLabels.credential }), chalk_1.default.gray(' |'), (0, jsx_runtime_1.jsx)("button", { label: effectiveLabels.save })] }), modal === 'environment' && (0, jsx_runtime_1.jsx)(chooseEnvironment_1.default, { close: closeModal }), modal === 'apiKey' && (0, jsx_runtime_1.jsx)(setApiKey_1.default, { close: closeModal }), modal === 'integration' && configuration.environment !== configuration_1.Environment.None && ((0, jsx_runtime_1.jsx)(chooseIntegration_1.default, { close: closeModal })), modal === 'integration' && configuration.environment === configuration_1.Environment.None && ((0, jsx_runtime_1.jsx)(setIntegration_1.default, { close: closeModal })), modal === 'credential' && configuration.environment !== configuration_1.Environment.None && ((0, jsx_runtime_1.jsx)(chooseCredential_1.default, { close: closeModal })), modal === 'credential' && configuration.environment === configuration_1.Environment.None && (0, jsx_runtime_1.jsx)(setCredential_1.default, { close: closeModal })] })); }; exports.default = Configuration;