export function* handleFetchAccountDetails(action) {
try {
yield put(
updateAccountDetails({ data: undefined, error: undefined, loading: true })
);
console.log("handleFetchAccountDetails", action);
const result = yield call(
api.fetchSpecificAccountDetails,
action.params.id
);
console.log("result", result); // TODO: need to work on it.
if (result) {
yield put(
updateAccountDetails({
data: result.data.response,
error: undefined,
loading: false
})
);
//update feature
// yield put(
// updateProductFeature({
// data: features,
// loading: false,
// error: undefined
// })
// );
}
} catch (error) {
let errMessage =
(error &&
error.response &&
error.response.data &&
error.response.data.response &&
error.response.data.response.message) ||
"Bad Request";
yield put(
updateAccountDetails({
error: errMessage,
data: undefined,
loading: false
})
);
}
}
export function* handleFetchProductFeatures(action) {
try {
yield put(
updateProductFeature({ data: undefined, error: undefined, loading: true })
);
const result = yield call(api.fetchProductFeature);
if (result && result.data && result.data.response) {
console.log("result.data.response", result.data.response);
let features =
result.data.response &&
result.data.response.map(feature => ({
label: feature,
value: false
}));
yield put(
updateProductFeature({
data: features,
loading: false,
error: undefined
})
);
yield put(handleFetchAccountDetails(action)); // need to call after getting product features
}
} catch (error) {
let errMessage = "";
if (typeof error.response === "object") {
errMessage = errorHandler(error.response);
} else {
errMessage = error.toString();
}
yield put(
updateProductFeature({
error: errMessage,
loading: false,
data: undefined
})
);
}
}
export default function* watchAccountsActions() {
yield takeEvery(FETCH_PRODUCT_FEATURE, handleFetchProductFeatures);
}
как делать последовательные вызовы API изнутри саг. после получения функции продукта мне нужно вызвать handleFetchAccountDetails внутри handleFetchProductFeature. как мне это сделать.