Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useCallback } from "react";
import React, { useCallback, useEffect, useState } from "react";
import { IDEBottomView, ViewHideBehaviour } from "IDE";
import { ActionExecutionResizerHeight } from "./constants";
import EntityBottomTabs from "components/editorComponents/EntityBottomTabs";
Expand All @@ -8,17 +8,76 @@ import { getPluginActionDebuggerState } from "../../store";
import { DEBUGGER_TAB_KEYS } from "components/editorComponents/Debugger/constants";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import { usePluginActionResponseTabs } from "./hooks";
import { usePluginActionContext } from "../../PluginActionContext";
import { doesPluginRequireDatasource } from "ee/entities/Engine/actionHelpers";
import useShowSchema from "./hooks/useShowSchema";
import { actionResponseDisplayDataFormats } from "pages/Editor/utils";

function PluginActionResponse() {
const dispatch = useDispatch();
const { action, actionResponse, plugin } = usePluginActionContext();

const tabs = usePluginActionResponseTabs();
const pluginRequireDatasource = doesPluginRequireDatasource(plugin);

const showSchema = useShowSchema(plugin?.id || "") && pluginRequireDatasource;

// TODO combine API and Query Debugger state
const { open, responseTabHeight, selectedTab } = useSelector(
getPluginActionDebuggerState,
);

const [showResponseOnFirstLoad, setShowResponseOnFirstLoad] =
Comment thread
ankitakinger marked this conversation as resolved.
Outdated
useState<boolean>(false);

const { responseDisplayFormat } =
actionResponseDisplayDataFormats(actionResponse);

// These useEffects are used to open the response tab by default for page load queries
// as for page load queries, query response is available and can be shown in response tab
useEffect(() => {
Comment thread
ankitakinger marked this conversation as resolved.
Outdated
// actionResponse and responseDisplayFormat is present only when query has response available
if (
responseDisplayFormat &&
!!responseDisplayFormat?.title &&

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these needed? Would they be available when the action has a failed response?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is required and basically works only when the response is a success. This is how it works in the normal flow as well.

actionResponse &&
actionResponse.isExecutionSuccess &&
!showResponseOnFirstLoad
) {
dispatch(
setPluginActionEditorDebuggerState({
open: true,
selectedTab: DEBUGGER_TAB_KEYS.RESPONSE_TAB,
}),
);
setShowResponseOnFirstLoad(true);
}
}, [
responseDisplayFormat,
actionResponse,
showResponseOnFirstLoad,
dispatch,
]);

useEffect(() => {
if (showSchema && !selectedTab) {
dispatch(
setPluginActionEditorDebuggerState({
open: true,
selectedTab: DEBUGGER_TAB_KEYS.SCHEMA_TAB,
}),
);
}
}, [showSchema, selectedTab, dispatch]);

// When multiple page load queries exist, we want to response tab by default for all of them
// Hence this useEffect will reset showResponseOnFirstLoad flag used to track whether to show response tab or not
useEffect(() => {
Comment thread
ankitakinger marked this conversation as resolved.
Outdated
if (action?.id) {
Comment thread
ankitakinger marked this conversation as resolved.
Outdated
setShowResponseOnFirstLoad(false);
}
}, [action?.id]);

const toggleHide = useCallback(
() => dispatch(setPluginActionEditorDebuggerState({ open: !open })),
[dispatch, open],
Expand Down