Hi,
I have 2 screen in contract form: contract and endorsement
In contract form i have Create endorsement button to create endorsement and link to the root.
After creating endorsement, i can only see either data in contract screen or endorsement
Here is some code:
import {SagaIterator} from 'redux-saga';
import {Action} from 'typescript-fsa';
import {call, put, take} from 'redux-saga/effects';
import {Activity} from '@com.mgmtp.a12.client/client-core/lib/core/activity/internal/activity';
import {ActivityActions} from '@com.mgmtp.a12.client/client-core/lib/core/activity';
import {NotificationActions} from '@com.mgmtp.a12.client/client-core/lib/core/notification';
import {ProcessNotification} from '../../notification/processNotification';
import {startCreateOfferProcessEvent} from '../../processes/processService';
import {createNotificationActionWithParams} from '../../notification/notification';
import {PollingActions} from '../../polling/actions';
import {CreateOfferPayload} from '../type';
export function* startCreateOfferProcess(
processName: string,
activity: Activity,
action: Action<CreateOfferPayload>,
): SagaIterator {
yield put(ActivityActions.lock({activityId: activity.id, id: activity.id, owner: activity.id, details: {}}));
yield call(ProcessNotification.processStarted, processName, activity.id);
const payload = action.payload;
try {
const processResult = yield call(startCreateOfferProcessEvent, payload.documentId, payload.validFrom);
yield put(
NotificationActions.add(
createNotificationActionWithParams(
'success.CREATE_OFFER_SUCCESS',
processResult,
'success',
'bottom-left',
),
),
);
yield put(ActivityActions.unlock({activityId: activity.id, lockId: activity.id}));
yield put(PollingActions.reload({ id: activity.id }));
yield take(PollingActions.stateActionCreator.done);
//const latestActivity: Activity = yield select(ActivitySelectors.latestActivity());
//yield put(ActivityActions.reloadData({ activityId: latestActivity.id }));
} catch (e: any) {
yield put(
NotificationActions.add(
createNotificationActionWithParams('error.CREATE_OFFER_ERROR', e.message, 'error', 'bottom-left'),
),
);
yield put(ActivityActions.unlock({activityId: activity.id, lockId: activity.id}));
yield call(ProcessNotification.processEnd, activity.id);
}
}
i have my middleware for reloading
export const cdmPollingMiddleWare = StoreFactories.createMiddleware((api, next, action) => {
if (PollingActions.cdmReload.match(action)) {
const result = next(action);
const activityId = action.payload.id;
const activity = ActivitySelectors.activityById(activityId)(api.getState());
const activityState = FormEngineSelectors.uiState(activityId)(api.getState())?.screenLocation;
const newActivityPayload = {
activityDescriptor: { ...activity?.descriptor, instance: activity?.descriptor.instance },
initiatingActivityId: activity?.initiatingActivityId,
}
const newActivity = ActivityActions.create(newActivityPayload);
api.dispatch(ActivityActions.cancel({activityId, replacementActivity: newActivity.payload.activity}));
if (activityState) {
const currentScreen = activityState[0];
return next(PollingActions.stateActionCreator.started({id: newActivity.payload.activity.id, screenState: currentScreen}));
}
return result;
}
return next(action);
},
);