Refactor: refactor apiModal tabs generation to prevent bugs and enhance reliability

This commit is contained in:
igorrCarvalho 2024-06-27 02:17:15 -03:00 committed by Gabriel Luiz Freitas Almeida
commit 6c306203c9
6 changed files with 83 additions and 15 deletions

View file

@ -863,3 +863,5 @@ 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"]

View file

@ -26,6 +26,8 @@ import getPythonCode from "./utils/get-python-code";
import { getValue } from "./utils/get-value";
import getWidgetCode from "./utils/get-widget-code";
import { createTabsArray } from "./utils/tabs-array";
import getTabsOrder from "./utils/get-tabs-order";
import getCodesObj from "./utils/get-codes-obj";
const ApiModal = forwardRef(
(
@ -213,21 +215,24 @@ 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;
}
})
}
};

View file

@ -0,0 +1,38 @@
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,
},
]
}

View file

@ -0,0 +1,12 @@
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;
}

View file

@ -1,4 +1,5 @@
export function createTabsArray(
export function
createTabsArray(
codes,
includeWebhookCurl = false,
includeTweaks = false,

View 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;}>