{"size": 991, "ext": "js", "max_stars_repo_path": "src/examples/1/example.js", "max_stars_repo_name": "Lectrum/redux-saga-mechanics", "max_stars_repo_stars_event_min_datetime": "2020-09-19T14:05:15.000Z", "max_stars_repo_stars_event_max_datetime": "2020-12-08T20:06:30.000Z", "max_issues_repo_path": "src/examples/1/example.js", "max_issues_repo_name": "Lectrum/redux-saga-mechanics", "max_issues_repo_issues_event_min_datetime": "2020-09-04T20:59:32.000Z", "max_issues_repo_issues_event_max_datetime": "2022-02-26T10:39:48.000Z", "max_forks_repo_path": "src/examples/1/example.js", "max_forks_repo_name": "olegleshiy/redux-saga-advanced", "max_forks_repo_forks_event_min_datetime": "2018-12-31T18:30:35.000Z", "max_forks_repo_forks_event_max_datetime": "2021-12-06T10:56:49.000Z"}
{"max_stars_count": 2, "max_issues_count": 8, "max_forks_count": 9, "avg_line_length": 31.9677419355, "max_line_length": 91, "alphanum_fraction": 0.6932391524}
/**
 * В саге-генераторе можно вызывать нужные методы в явном виде, без использования эффектов.
 * Можно также комбинировать эффекты с явными операциями без эффектов.
 *
 * Однако для описаний практически любой инструкции в
 * Redux Saga существует специальный эффект.
 * Примеры эффектов в этом файле — take и put.
 * put — самый простой эффект, он работает как store.dispatch.
 */

// Core
import { take, put } from 'redux-saga/effects';

// Instruments
import { types } from '../../bus/swapi/types';
import { swapiActions } from '../../bus/swapi/actions';
import { api } from '../../Api';

export function* runExample() {
    while (true) {
        const action = yield take(types.FETCH_PLANETS_ASYNC);

        yield put(swapiActions.setIsFetching(true));
        const response = yield api.fetchPlanets(action.payload);
        const data = yield response.json();

        yield put(swapiActions.fillPlanets(data.results));
        yield put(swapiActions.setIsFetching(false));
    }
}
