@unito/integration-debugger
Version:
The Unito Integration Debugger
121 lines (120 loc) • 8.41 kB
JavaScript
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;
;