Skip to content

Commit

Permalink
fix: stop building with abort controller (#3634)
Browse files Browse the repository at this point in the history
* Added buildController and stopBuilding controllers

* Used stop building in header Stop button

* Set the build controller in API performstreamingrequest

* added setbuildcontroller to types
  • Loading branch information
lucaseduoli authored Sep 2, 2024
1 parent 96872f3 commit 882c35e
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export const MenuBar = ({}: {}): JSX.Element => {
const updatedAt = currentSavedFlow?.updated_at;
const onFlowPage = useFlowStore((state) => state.onFlowPage);
const setCurrentFlow = useFlowsManagerStore((state) => state.setCurrentFlow);
const stopBuilding = useFlowStore((state) => state.stopBuilding);

const changesNotSaved =
customStringify(currentFlow) !== customStringify(currentSavedFlow) &&
Expand Down Expand Up @@ -310,7 +311,7 @@ export const MenuBar = ({}: {}): JSX.Element => {
disabled={!isBuilding}
onClick={(_) => {
if (isBuilding) {
window.stop();
stopBuilding();
}
}}
className={
Expand Down
1 change: 1 addition & 0 deletions src/frontend/src/controllers/API/api.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ async function performStreamingRequest({
headers["Authorization"] = `Bearer ${accessToken}`;
}
const controller = new AbortController();
useFlowStore.getState().setBuildController(controller);
const params = {
method: method,
headers: headers,
Expand Down
7 changes: 7 additions & 0 deletions src/frontend/src/stores/flowStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ const useFlowStore = create<FlowStoreType>((set, get) => ({
nodes: [],
edges: [],
isBuilding: false,
stopBuilding: () => {
get().buildController.abort();
},
isPending: true,
setHasIO: (hasIO) => {
set({ hasIO });
Expand Down Expand Up @@ -766,6 +769,10 @@ const useFlowStore = create<FlowStoreType>((set, get) => ({
},
});
},
buildController: new AbortController(),
setBuildController: (controller) => {
set({ buildController: controller });
},
}));

export default useFlowStore;
3 changes: 3 additions & 0 deletions src/frontend/src/types/zustand/flow/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,4 +180,7 @@ export type FlowStoreType = {
edges?: Edge[];
viewport?: Viewport;
}) => void;
stopBuilding: () => void;
buildController: AbortController;
setBuildController: (controller: AbortController) => void;
};

0 comments on commit 882c35e

Please sign in to comment.