diff --git a/.changeset/smooth-parents-type.md b/.changeset/smooth-parents-type.md new file mode 100644 index 000000000..786f01497 --- /dev/null +++ b/.changeset/smooth-parents-type.md @@ -0,0 +1,6 @@ +--- +"@ensembleui/react-framework": patch +"@ensembleui/react-runtime": patch +--- + +fix ensemble api response mapping with screendata diff --git a/packages/framework/src/api/data.ts b/packages/framework/src/api/data.ts index 08ad0aadb..7485c7473 100644 --- a/packages/framework/src/api/data.ts +++ b/packages/framework/src/api/data.ts @@ -39,8 +39,7 @@ export const invokeAPI = async ( // Now, because the API exists, set its state to loading set(update, api.name, { isLoading: true, - isError: false, - isSuccess: false, + statusCode: undefined, }); setter(screenDataAtom, update); } diff --git a/packages/framework/src/hooks/useScreenContext.tsx b/packages/framework/src/hooks/useScreenContext.tsx index ae94952bd..6dcb2c94b 100644 --- a/packages/framework/src/hooks/useScreenContext.tsx +++ b/packages/framework/src/hooks/useScreenContext.tsx @@ -110,7 +110,7 @@ export const useScreenContext = (): const screenContext = useAtomValue(screenAtom); const setDataAtom = useSetAtom(screenDataAtom); const setData = useCallback( - (name: string, response: Response | WebSocketConnection) => { + (name: string, response: Partial | WebSocketConnection) => { const data = screenContext.data; data[name] = response; setDataAtom(clone(data)); diff --git a/packages/framework/src/hooks/useScreenData.ts b/packages/framework/src/hooks/useScreenData.ts index df2b85efb..e2ed83f1d 100644 --- a/packages/framework/src/hooks/useScreenData.ts +++ b/packages/framework/src/hooks/useScreenData.ts @@ -16,7 +16,10 @@ export const useScreenData = (): { apis?: EnsembleAPIModel[]; sockets?: EnsembleSocketModel[]; data: ScreenContextData; - setData: (name: string, response: Response | WebSocketConnection) => void; + setData: ( + name: string, + response: Partial | WebSocketConnection, + ) => void; mockResponses: { [apiName: string]: EnsembleMockResponse | string | undefined; }; @@ -41,7 +44,7 @@ export const useScreenData = (): { const mockResponses = useEvaluate(apiMockResponses); const setData = useCallback( - (name: string, response: Response | WebSocketConnection) => { + (name: string, response: Partial | WebSocketConnection) => { if (isEqual(data[name], response)) { return; } diff --git a/packages/framework/src/state/screen.ts b/packages/framework/src/state/screen.ts index 4ce1ca18d..deaf0af19 100644 --- a/packages/framework/src/state/screen.ts +++ b/packages/framework/src/state/screen.ts @@ -15,12 +15,15 @@ export interface ScreenContextDefinition { } export interface ScreenContextData { - [key: string]: Response | WebSocketConnection; + [key: string]: Partial | WebSocketConnection; } export interface ScreenContextActions { setWidget: (id: string, state: WidgetState) => void; - setData: (name: string, response: Response | WebSocketConnection) => void; + setData: ( + name: string, + response: Partial | WebSocketConnection, + ) => void; setCustom: (id: string, data: unknown) => void; } diff --git a/packages/runtime/src/runtime/hooks/useEnsembleAction.tsx b/packages/runtime/src/runtime/hooks/useEnsembleAction.tsx index 5462aace3..ae3f7f4de 100644 --- a/packages/runtime/src/runtime/hooks/useEnsembleAction.tsx +++ b/packages/runtime/src/runtime/hooks/useEnsembleAction.tsx @@ -195,15 +195,13 @@ export const useInvokeAPI: EnsembleActionHook = (action) => { // Set initial loading state setData(currentApi.name, { isLoading: true, - isSuccess: false, - isError: false, + statusCode: undefined, }); if (action.id) { setData(action.id, { isLoading: true, - isSuccess: false, - isError: false, + statusCode: undefined, }); }