MyCrypto/common/sagas/rates.ts

21 lines
754 B
TypeScript
Raw Normal View History

import { fetchCCRatesSucceeded, fetchCCRatesFailed, FetchCCRatesRequested } from 'actions/rates';
import { SagaIterator } from 'redux-saga';
import { call, put, takeLatest } from 'redux-saga/effects';
import { fetchRates, CCResponse } from 'api/rates';
import { TypeKeys } from 'actions/rates/constants';
export function* fetchRatesSaga(action: FetchCCRatesRequested): SagaIterator {
try {
const rates: CCResponse = yield call(fetchRates, action.payload);
yield put(fetchCCRatesSucceeded(rates));
} catch (e) {
console.error('Failed to fetch rates:', e);
yield put(fetchCCRatesFailed());
return;
}
}
export default function* ratesSaga(): SagaIterator {
yield takeLatest(TypeKeys.RATES_FETCH_CC_REQUESTED, fetchRatesSaga);
}