diff --git a/app/client/src/ce/sagas/ActionExecution/ActionExecutionSagas.ts b/app/client/src/ce/sagas/ActionExecution/ActionExecutionSagas.ts index b9f68e29dba9..577ed474c2d7 100644 --- a/app/client/src/ce/sagas/ActionExecution/ActionExecutionSagas.ts +++ b/app/client/src/ce/sagas/ActionExecution/ActionExecutionSagas.ts @@ -139,10 +139,7 @@ export function* executeActionTriggers( return response; } -// This function gets called when a user clicks on a button on the canvas UI -// TODO: Fix this the next time the file is edited -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function* executeAppAction(payload: ExecuteTriggerPayload): any { +export function* executeAppAction(payload: ExecuteTriggerPayload): Generator { const { callbackData, dynamicString, diff --git a/app/client/src/constants/AppsmithActionConstants/ActionConstants.tsx b/app/client/src/constants/AppsmithActionConstants/ActionConstants.tsx index bd66064f4c8f..e703da5a31f0 100644 --- a/app/client/src/constants/AppsmithActionConstants/ActionConstants.tsx +++ b/app/client/src/constants/AppsmithActionConstants/ActionConstants.tsx @@ -26,6 +26,7 @@ export interface TriggerSource { isJSAction?: boolean; actionId?: string; } + export enum TriggerKind { EVENT_EXECUTION = "EVENT_EXECUTION", // Eg. Button onClick JS_FUNCTION_EXECUTION = "JS_FUNCTION_EXECUTION", // Executing js function from jsObject page @@ -34,9 +35,7 @@ export enum TriggerKind { export interface ExecuteTriggerPayload { dynamicString: string; event: ExecuteActionPayloadEvent; - // TODO: Fix this the next time the file is edited - // eslint-disable-next-line @typescript-eslint/no-explicit-any - callbackData?: Array; + callbackData?: Array; triggerPropertyName?: string; source?: TriggerSource; widgetId?: string; diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts index 18c4e04aa490..302629efdfe0 100644 --- a/app/client/src/sagas/EvaluationsSaga.ts +++ b/app/client/src/sagas/EvaluationsSaga.ts @@ -341,9 +341,7 @@ export function* evaluateAndExecuteDynamicTrigger( dynamicTrigger: string, eventType: EventType, triggerMeta: TriggerMeta, - // TODO: Fix this the next time the file is edited - // eslint-disable-next-line @typescript-eslint/no-explicit-any - callbackData?: Array, + callbackData?: Array, globalContext?: Record, ) { const rootSpan = startRootSpan("DataTreeFactory.create"); @@ -889,6 +887,7 @@ export function* evaluationLoopWithDebounce( } } } + // TODO: Fix this the next time the file is edited // eslint-disable-next-line @typescript-eslint/no-explicit-any export function* evaluateActionSelectorFieldSaga(action: any) { diff --git a/app/client/src/utils/WorkerUtil.ts b/app/client/src/utils/WorkerUtil.ts index b7a5bb728149..d6d37b8e8a7e 100644 --- a/app/client/src/utils/WorkerUtil.ts +++ b/app/client/src/utils/WorkerUtil.ts @@ -234,6 +234,7 @@ export class GracefulWorkerService { completeWebworkerComputationRoot?.setAttribute("taskType", method); completeWebworkerComputationRoot?.end(endTime); } + /** * Send a request to the worker for processing. * If the worker isn't ready, we wait for it to become ready. diff --git a/app/client/src/workers/Evaluation/asyncWorkerActions.ts b/app/client/src/workers/Evaluation/asyncWorkerActions.ts new file mode 100644 index 000000000000..20329ba23ba8 --- /dev/null +++ b/app/client/src/workers/Evaluation/asyncWorkerActions.ts @@ -0,0 +1,27 @@ +import store from "store"; +import { getUnevaluatedDataTree } from "selectors/dataTreeSelectors"; +import { evalWorker } from "utils/workerInstances"; +import { EVAL_WORKER_ACTIONS } from "ee/workers/Evaluation/evalWorkerActions"; +import { runSaga } from "redux-saga"; +import { TriggerKind } from "constants/AppsmithActionConstants/ActionConstants"; + +export async function UNSTABLE_executeDynamicTrigger(dynamicTrigger: string) { + const state = store.getState(); + const unEvalTree = getUnevaluatedDataTree(state); + + const result = runSaga( + {}, + evalWorker.request, + EVAL_WORKER_ACTIONS.EVAL_TRIGGER, + { + unEvalTree, + dynamicTrigger, + triggerMeta: { + onPageLoad: false, + triggerKind: TriggerKind.EVENT_EXECUTION, + }, + }, + ); + + return result.toPromise(); +}