diff --git a/src/frontend/src/constants/constants.ts b/src/frontend/src/constants/constants.ts index f963d7234..8b5d4e177 100644 --- a/src/frontend/src/constants/constants.ts +++ b/src/frontend/src/constants/constants.ts @@ -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", +]; diff --git a/src/frontend/src/modals/apiModal/index.tsx b/src/frontend/src/modals/apiModal/index.tsx index 36ded5afb..6b2a24680 100644 --- a/src/frontend/src/modals/apiModal/index.tsx +++ b/src/frontend/src/modals/apiModal/index.tsx @@ -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; + } + }); } }; diff --git a/src/frontend/src/modals/apiModal/utils/get-codes-obj.tsx b/src/frontend/src/modals/apiModal/utils/get-codes-obj.tsx new file mode 100644 index 000000000..ed232d510 --- /dev/null +++ b/src/frontend/src/modals/apiModal/utils/get-codes-obj.tsx @@ -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, + }, + ]; +} diff --git a/src/frontend/src/modals/apiModal/utils/get-curl-code.tsx b/src/frontend/src/modals/apiModal/utils/get-curl-code.tsx index c17118d1a..6d92f4c96 100644 --- a/src/frontend/src/modals/apiModal/utils/get-curl-code.tsx +++ b/src/frontend/src/modals/apiModal/utils/get-curl-code.tsx @@ -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 diff --git a/src/frontend/src/modals/apiModal/utils/get-js-api-code.tsx b/src/frontend/src/modals/apiModal/utils/get-js-api-code.tsx index e49817d81..b40ed1e3a 100644 --- a/src/frontend/src/modals/apiModal/utils/get-js-api-code.tsx +++ b/src/frontend/src/modals/apiModal/utils/get-js-api-code.tsx @@ -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) { diff --git a/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx b/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx index 9aa946746..224d1d711 100644 --- a/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx +++ b/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx @@ -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) { diff --git a/src/frontend/src/modals/apiModal/utils/get-tabs-order.tsx b/src/frontend/src/modals/apiModal/utils/get-tabs-order.tsx new file mode 100644 index 000000000..dd45fede4 --- /dev/null +++ b/src/frontend/src/modals/apiModal/utils/get-tabs-order.tsx @@ -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; +} diff --git a/src/frontend/src/modals/apiModal/utils/tabs-array.tsx b/src/frontend/src/modals/apiModal/utils/tabs-array.tsx index dc50bf7a3..a194fae17 100644 --- a/src/frontend/src/modals/apiModal/utils/tabs-array.tsx +++ b/src/frontend/src/modals/apiModal/utils/tabs-array.tsx @@ -3,6 +3,8 @@ export function createTabsArray( includeWebhookCurl = false, includeTweaks = false, ) { + // console.log(includeTweaks) + console.log(includeWebhookCurl); const tabs = [ { name: "Run cURL", diff --git a/src/frontend/src/types/utils/functions.ts b/src/frontend/src/types/utils/functions.ts new file mode 100644 index 000000000..59ef9f2d7 --- /dev/null +++ b/src/frontend/src/types/utils/functions.ts @@ -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 }>;