I have a tree model and I added a button to add a row to this tree.
This is a custom backend logic and it is created successfully but the page is not refreshed afterwards.
at first I have a Middleware like this:
export const myDocGenerationMiddleware: Middleware<unknown, EngineState> = api => next => action => {
if (action.type.match("TreeEngine/EVENT/onNodeEventButtonClicked")) {
if (
action.payload.engineAction.payload.button.event != undefined &&
action.payload.engineAction.payload.button.event.match("event_generate_mydoc") &&
action.payload.engineAction.payload.nodeIdentifier.id != undefined
) {
clickHandler(
action.payload.engineAction.payload.button.event,
action.payload.engineAction.payload.nodeIdentifier.id,
next
);
}
}
....
return next(action);
then the clickHandler like this:
export const clickHandler = (event: string, docRef: string, dispatch: Dispatch<any>) => {
if (event === "event_generate_mydoc") {
const payload = {
docRef: docRef
};
dispatch(generateMyDoc(payload));
}
....
};
generateMyDoc like below:
.....
interface GenerateMyDocPayload<Payload> {
docRef: string;
}
export const generateMyDoc: ActionCreator<GenerateMyDocPayload<any>> = factory<GenerateMyDocPayload<any>>("GENERATE_MYDOC");
export function* generateMyDocSaga(): SagaIterator {
yield takeEvery(generateMyDoc, generateDocWorker);
}
function* generateMyDocWorker(action: AnyAction): SagaIterator {
const request: RestRequestPayload = {
relativeUrl: "/some/url",
method: "POST"
};
yield call(dispatchServerRequest, request);
}
async function dispatchServerRequest(request: RestRequestPayload): Promise<Blob> {
const response = await restServerConnector.fetchData(
request
);
return await response.blob();
}
.....
I appreciate any comment