Refactor: refactor apiModal tabs generation to prevent bugs and enhance reliability (#2393)
This PR refactors the logic for generating tabs in the API modal. The changes aim to improve code readability and maintainability, prevent potential bugs, and enhance the overall reliability of the modal's functionality.
This commit is contained in:
commit
6d8c9cbe18
9 changed files with 104 additions and 18 deletions
|
|
@ -863,3 +863,11 @@ export const TITLE_ERROR_UPDATING_COMPONENT =
|
|||
"Error while updating the Component";
|
||||
|
||||
export const EMPTY_INPUT_SEND_MESSAGE = "No input message provided.";
|
||||
|
||||
export const TABS_ORDER = [
|
||||
"run curl",
|
||||
"python api",
|
||||
"js api",
|
||||
"python code",
|
||||
"chat widget html",
|
||||
];
|
||||
|
|
|
|||
|
|
@ -18,11 +18,13 @@ import { buildContent } from "./utils/build-content";
|
|||
import { buildTweaks } from "./utils/build-tweaks";
|
||||
import { checkCanBuildTweakObject } from "./utils/check-can-build-tweak-object";
|
||||
import { getChangesType } from "./utils/get-changes-types";
|
||||
import getCodesObj from "./utils/get-codes-obj";
|
||||
import { getCurlRunCode, getCurlWebhookCode } from "./utils/get-curl-code";
|
||||
import getJsApiCode from "./utils/get-js-api-code";
|
||||
import { getNodesWithDefaultValue } from "./utils/get-nodes-with-default-value";
|
||||
import getPythonApiCode from "./utils/get-python-api-code";
|
||||
import getPythonCode from "./utils/get-python-code";
|
||||
import getTabsOrder from "./utils/get-tabs-order";
|
||||
import { getValue } from "./utils/get-value";
|
||||
import getWidgetCode from "./utils/get-widget-code";
|
||||
import { createTabsArray } from "./utils/tabs-array";
|
||||
|
|
@ -213,21 +215,26 @@ const ApiModal = forwardRef(
|
|||
);
|
||||
const pythonCode = getPythonCode(flow?.name, cloneTweak);
|
||||
const widgetCode = getWidgetCode(flow?.id, flow?.name, autoLogin);
|
||||
const isThereTweaks = Object.keys(tweaksCode).length > 0;
|
||||
const codesObj = getCodesObj({
|
||||
runCurlCode,
|
||||
webhookCurlCode,
|
||||
pythonApiCode,
|
||||
jsApiCode,
|
||||
pythonCode,
|
||||
widgetCode,
|
||||
});
|
||||
const tabsOrder = getTabsOrder(includeWebhook, isThereTweaks);
|
||||
if (tabs && tabs?.length > 0) {
|
||||
let i = 0;
|
||||
tabs![i].code = runCurlCode;
|
||||
i++;
|
||||
if (includeWebhook) {
|
||||
tabs![i].code = webhookCurlCode;
|
||||
i++;
|
||||
}
|
||||
tabs![i].code = pythonApiCode;
|
||||
i++;
|
||||
tabs![i].code = jsApiCode;
|
||||
i++;
|
||||
tabs![i].code = pythonCode;
|
||||
i++;
|
||||
tabs![i].code = widgetCode;
|
||||
tabs.forEach((tab, idx) => {
|
||||
const order = tabsOrder[idx];
|
||||
if (order && order.toLowerCase() === tab.name.toLowerCase()) {
|
||||
const codeToFind = codesObj.find(
|
||||
(c) => c.name.toLowerCase() === tab.name.toLowerCase(),
|
||||
);
|
||||
tab.code = codeToFind?.code;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
40
src/frontend/src/modals/apiModal/utils/get-codes-obj.tsx
Normal file
40
src/frontend/src/modals/apiModal/utils/get-codes-obj.tsx
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import {
|
||||
getCodesObjProps,
|
||||
getCodesObjReturn,
|
||||
} from "../../../types/utils/functions";
|
||||
|
||||
export default function getCodesObj({
|
||||
runCurlCode,
|
||||
webhookCurlCode,
|
||||
pythonApiCode,
|
||||
jsApiCode,
|
||||
pythonCode,
|
||||
widgetCode,
|
||||
}: getCodesObjProps): getCodesObjReturn {
|
||||
return [
|
||||
{
|
||||
name: "run curl",
|
||||
code: runCurlCode,
|
||||
},
|
||||
{
|
||||
name: "webhook curl",
|
||||
code: webhookCurlCode,
|
||||
},
|
||||
{
|
||||
name: "python api",
|
||||
code: pythonApiCode,
|
||||
},
|
||||
{
|
||||
name: "js api",
|
||||
code: jsApiCode,
|
||||
},
|
||||
{
|
||||
name: "python code",
|
||||
code: pythonCode,
|
||||
},
|
||||
{
|
||||
name: "chat widget html",
|
||||
code: widgetCode,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ export function getCurlRunCode(
|
|||
flowId: string,
|
||||
isAuth: boolean,
|
||||
tweaksBuildedObject,
|
||||
endpointName?: string,
|
||||
endpointName?: string | null,
|
||||
): string {
|
||||
const tweaksObject = tweaksBuildedObject[0];
|
||||
// show the endpoint name in the curl command if it exists
|
||||
|
|
@ -35,7 +35,11 @@ export function getCurlRunCode(
|
|||
* @param {string} options.endpointName - The name of the webhook endpoint.
|
||||
* @returns {string} The cURL command.
|
||||
*/
|
||||
export function getCurlWebhookCode(flowId, isAuth, endpointName?: string) {
|
||||
export function getCurlWebhookCode(
|
||||
flowId,
|
||||
isAuth,
|
||||
endpointName?: string | null,
|
||||
) {
|
||||
return `curl -X POST \\
|
||||
"${window.location.protocol}//${window.location.host}/api/v1/webhook/${
|
||||
endpointName || flowId
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ export default function getJsApiCode(
|
|||
flowId: string,
|
||||
isAuth: boolean,
|
||||
tweaksBuildedObject: any[],
|
||||
endpointName?: string,
|
||||
endpointName?: string | null,
|
||||
): string {
|
||||
let tweaksString = "{}";
|
||||
if (tweaksBuildedObject && tweaksBuildedObject.length > 0) {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ export default function getPythonApiCode(
|
|||
flowId: string,
|
||||
isAuth: boolean,
|
||||
tweaksBuildedObject: any[],
|
||||
endpointName?: string,
|
||||
endpointName?: string | null,
|
||||
): string {
|
||||
let tweaksString = "{}";
|
||||
if (tweaksBuildedObject && tweaksBuildedObject.length > 0) {
|
||||
|
|
|
|||
15
src/frontend/src/modals/apiModal/utils/get-tabs-order.tsx
Normal file
15
src/frontend/src/modals/apiModal/utils/get-tabs-order.tsx
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import { TABS_ORDER } from "../../../constants/constants";
|
||||
|
||||
export default function getTabsOrder(
|
||||
isThereWH: boolean = false,
|
||||
isThereTweaks: boolean = false,
|
||||
): string[] {
|
||||
const defaultOrder = TABS_ORDER;
|
||||
if (isThereTweaks) {
|
||||
defaultOrder.push("tweaks");
|
||||
}
|
||||
if (isThereWH) {
|
||||
defaultOrder.splice(1, 0, "webhook curl");
|
||||
}
|
||||
return defaultOrder;
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@ export function createTabsArray(
|
|||
includeWebhookCurl = false,
|
||||
includeTweaks = false,
|
||||
) {
|
||||
// console.log(includeTweaks)
|
||||
console.log(includeWebhookCurl);
|
||||
const tabs = [
|
||||
{
|
||||
name: "Run cURL",
|
||||
|
|
|
|||
10
src/frontend/src/types/utils/functions.ts
Normal file
10
src/frontend/src/types/utils/functions.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
export type getCodesObjProps = {
|
||||
runCurlCode: string;
|
||||
webhookCurlCode: string;
|
||||
pythonApiCode: string;
|
||||
jsApiCode: string;
|
||||
pythonCode: string;
|
||||
widgetCode: string;
|
||||
};
|
||||
|
||||
export type getCodesObjReturn = Array<{ name: string; code: string }>;
|
||||
Loading…
Add table
Add a link
Reference in a new issue