Skip to content
This repository has been archived by the owner on Jun 17, 2021. It is now read-only.

Commit

Permalink
Rewrite middlewares to sagas (#117)
Browse files Browse the repository at this point in the history
* Replace middlewares with sagas

* Remove import-project middleeare from prod store configuration

* Add flow-typed redux-saga, review fixes

* review fixes
  • Loading branch information
mik639 authored and superhawk610 committed Aug 23, 2018
1 parent 73f30bf commit ee106f7
Show file tree
Hide file tree
Showing 12 changed files with 2,366 additions and 265 deletions.
1,641 changes: 1,641 additions & 0 deletions flow-typed/npm/redux-saga_v0.16.x.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@
"fix-path": "2.1.0",
"gatsby-cli": "1.1.58",
"ps-tree": "1.1.0",
"yarn": "1.9.2"
"yarn": "1.9.2",
"redux-saga": "0.16.0"
},
"devDependencies": {
"@babel/core": "7.0.0-rc.1",
Expand Down
83 changes: 0 additions & 83 deletions src/middlewares/dependency.middleware.js

This file was deleted.

165 changes: 0 additions & 165 deletions src/middlewares/import-project.middleware.js

This file was deleted.

81 changes: 81 additions & 0 deletions src/sagas/dependency.saga.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import { select, call, put, takeEvery } from 'redux-saga/effects';
import { getPathForProjectId } from '../reducers/paths.reducer';
import {
installDependency,
uninstallDependency,
} from '../services/dependencies.service';
import { loadProjectDependency } from '../services/read-from-disk.service';
import {
ADD_DEPENDENCY_START,
UPDATE_DEPENDENCY_START,
DELETE_DEPENDENCY_START,
addDependencyFinish,
addDependencyError,
updateDependencyFinish,
updateDependencyError,
deleteDependencyFinish,
deleteDependencyError,
} from '../actions';

/**
* Trying to install new dependency, if success dispatching "finish" action
* if not - dispatching "error" ection
*/
export function* addDependency({ projectId, dependencyName, version }) {
const projectPath = yield select(getPathForProjectId, projectId);
try {
yield call(installDependency, projectPath, dependencyName, version);
const dependency = yield call(
loadProjectDependency,
projectPath,
dependencyName
);
yield put(addDependencyFinish(projectId, dependency));
} catch (err) {
yield call([console, 'error'], 'Failed to install dependency', err);
yield put(addDependencyError(projectId, dependencyName));
}
}

/**
* Trying to update existing dependency, if success dispatching "finish" action,
* if not - dispatching "error" action
*/
export function* updateDependency({
projectId,
dependencyName,
latestVersion,
}) {
const projectPath = yield select(getPathForProjectId, projectId);
try {
yield call(installDependency, projectPath, dependencyName, latestVersion);
yield put(updateDependencyFinish(projectId, dependencyName, latestVersion));
} catch (err) {
yield call([console, 'error'], 'Failed to update dependency', err);
yield put(updateDependencyError(projectId, dependencyName));
}
}

/**
* Trying to delete dependency, if success dispatching "finish" action,
* if not - dispatching "error" action
*/
export function* deleteDependency({ projectId, dependencyName }) {
const projectPath = yield select(getPathForProjectId, projectId);
try {
yield call(uninstallDependency, projectPath, dependencyName);
yield put(deleteDependencyFinish(projectId, dependencyName));
} catch (err) {
yield call([console, 'error'], 'Failed to delete dependency', err);
yield put(deleteDependencyError(projectId, dependencyName));
}
}

/**
* Root dependencies saga, watching for "start" actions
*/
export default function* rootSaga() {
yield takeEvery(ADD_DEPENDENCY_START, addDependency);
yield takeEvery(UPDATE_DEPENDENCY_START, updateDependency);
yield takeEvery(DELETE_DEPENDENCY_START, deleteDependency);
}
Loading

0 comments on commit ee106f7

Please sign in to comment.