Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intégrer redux, react-redux, redux-saga pour l'authentification. (1/2) (#27) #28

Merged
merged 29 commits into from
Nov 23, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
46c4be2
modify prettierrc, ...
Jun 3, 2018
79df33d
refactor files' tree, ...
Aug 15, 2018
f2740e2
append user reducer, saga, ...
Aug 18, 2018
97d4655
append gradle configs, ...
Sep 12, 2018
a744c57
refactor configurations, ...
Sep 22, 2018
59d3106
append scenes, rework modules, ...
Oct 4, 2018
b538980
append routes, ...
Oct 13, 2018
61a2943
setup datas, ...
Oct 15, 2018
878d2c0
append render methods to modal, ...
Oct 15, 2018
5c096ec
remove extras props from render, ...
Oct 15, 2018
d7ac9e9
append sign-up, sign-in datas, ...
Oct 23, 2018
ce12c35
append extra props, move modal as dependencies, ...
Oct 23, 2018
69ee005
remove configs from build, ...
Oct 24, 2018
8cdbe7c
Merge branch 'features/6' of github.com:yungkittty/curb into features/27
Oct 24, 2018
18c50c8
merge with develop, ...
Nov 8, 2018
0f600e4
Merge branch 'develop' of github.com:yungkittty/curb into features/27
Nov 19, 2018
09ba426
fix button bind multiscenes
jimmydjabali Nov 20, 2018
4a10698
Merge branch 'features/27' of https://github.com/yungkittty/curb into…
jimmydjabali Nov 20, 2018
583a6a0
Scenes is rendered only when needed
jimmydjabali Nov 20, 2018
f86b8cf
changed default rightTo value
jimmydjabali Nov 20, 2018
ad043f5
fixed path -> pathname
jimmydjabali Nov 20, 2018
0f46fde
append users reducers, actions creators, ...
Nov 20, 2018
ea26b9b
remove useless respond argument, ...
Nov 20, 2018
04422c7
Merge branch 'develop' of github.com:yungkittty/curb into features/27
Nov 20, 2018
2ffb504
fixed error
jimmydjabali Nov 20, 2018
0da9b46
Update popup-window.js
jimmydjabali Nov 20, 2018
c087042
something, ...
Nov 20, 2018
c83a315
remove demo modifs, useless responds, ...
Nov 22, 2018
af44844
remove useless comments, ...
Nov 22, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions src/configurations/store/configure-store.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
import { createStore, applyMiddleware } from "redux";
import { createStore, compose, applyMiddleware } from "redux";
import createSagaMiddleware from "redux-saga";
import rootReducer from "./root-reducer";
import rootSaga from "./root-saga";

// https://medium.com/@zalmoxis/using-redux-devtools-in-production-4c5b56c5600f

const configureStore = () => {
const composeEnhancers =
// eslint-disable-next-line
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const sagaMiddleware = createSagaMiddleware();
const store = createStore(rootReducer, applyMiddleware(sagaMiddleware));
const store = createStore(
rootReducer,
composeEnhancers(applyMiddleware(sagaMiddleware))
);
sagaMiddleware.run(rootSaga);
return store;
};
Expand Down
4 changes: 3 additions & 1 deletion src/configurations/store/root-reducer.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { combineReducers } from "redux";
import { currentUserReducer as currentUser } from "../../datas/current-user";
import { usersReducer as users } from "../../datas/users";

const rootReducer = combineReducers({ /* ... */ });
const rootReducer = combineReducers({ currentUser, users });

export default rootReducer;
5 changes: 4 additions & 1 deletion src/configurations/store/root-saga.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { all } from "redux-saga/effects";
import { signInSaga } from "../../datas/sign-in";
import { signUpSaga } from "../../datas/sign-up";
import { usersSaga } from "../../datas/users";

function* rootSaga() { yield all([ /* ... */ ]); }
function* rootSaga() { yield all([signInSaga, signUpSaga, usersSaga]); }

export default rootSaga;
File renamed without changes.
Empty file.
Empty file.
15 changes: 15 additions & 0 deletions src/datas/current-user/current-user-reducer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import _ from "lodash";
import signInActionsTypes from "../sign-in/sign-in-actions-types";

const initialState = { id: "", token: "", refreshToken: "" };

const currentUserReducer = (state = initialState, action) => {
switch (action.type) {
case signInActionsTypes.SIGN_IN_SUCCESS:
return _.assign({}, state, action.payload);
default:
return state;
}
};

export default currentUserReducer;
Empty file.
4 changes: 4 additions & 0 deletions src/datas/current-user/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import currentUserReducer from "./current-user-reducer";

// eslint-disable-next-line
export { currentUserReducer };
6 changes: 6 additions & 0 deletions src/datas/sign-in/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import signInActionsTypes from "./sign-in-actions-types";
import signInActions from "./sign-in-actions";
import signInApi from "./sign-in-api";
import signInSaga from "./sign-in-saga";

export { signInActionsTypes, signInActions, signInApi, signInSaga };
10 changes: 10 additions & 0 deletions src/datas/sign-in/sign-in-actions-types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const signInActionsTypes = {
SIGN_IN_REQUEST: "SIGN_IN_REQUEST",
SIGN_IN_SUCCESS: "SIGN_IN_SUCCESS",
SIGN_IN_FAILURE: "SIGN_IN_FAILURE",
SIGN_OUT_REQUEST: "SIGN_OUT_REQUEST",
SIGN_OUT_SUCCESS: "SIGN_OUT_SUCCESS",
SIGN_OUT_FAILURE: "SIGN_OUT_FAILURE"
};

export default signInActionsTypes;
32 changes: 32 additions & 0 deletions src/datas/sign-in/sign-in-actions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import signInActionsTypes from "./sign-in-actions-types";

const signInActions = {
signInRequest: payload => ({
type: signInActionsTypes.SIGN_IN_REQUEST,
payload
}),
signInSuccess: payload => ({
type: signInActionsTypes.SIGN_IN_SUCCESS,
payload
}),
signInFailure: error => ({
type: signInActionsTypes.SIGN_IN_FAILURE,
payload: error,
error: true
}),
signOutRequest: payload => ({
type: signInActionsTypes.SIGN_OUT_REQUEST,
payload
}),
signOutSuccess: () => ({
type: signInActionsTypes.SIGN_OUT_SUCCESS,
payload: undefined
}),
signOutFailure: error => ({
type: signInActionsTypes.SIGN_OUT_FAILURE,
payload: error,
error: true
})
};

export default signInActions;
3 changes: 3 additions & 0 deletions src/datas/sign-in/sign-in-api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const signInApi = { signIn: () => ({}), signOut: () => ({}) };

export default signInApi;
Empty file.
31 changes: 31 additions & 0 deletions src/datas/sign-in/sign-in-saga.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { all, takeLatest, call, put } from "redux-saga/effects";
import usersActions from "../users/users-actions";
import signInActionsTypes from "./sign-in-actions-types";
import signInActions from "./sign-in-actions";
import signInApi from "./sign-in-api";

function* signInRequestSaga({ payload }) {
try {
const { id, ...others } = yield call(signInApi.signIn, payload);
yield put(usersActions.getUserRequest({ id }));
yield put(signInActions.signInSuccess({ id, ...others }));
} catch (error) {
yield put(signInActions.signInFailure(error));
}
}

function* signOutRequestSaga({ payload }) {
try {
yield call(signInApi.signOut, payload);
yield put(signInActions.signOutSuccess());
} catch (error) {
yield put(signInActions.signOutFailure(error));
}
}

const signInSaga = all([
takeLatest(signInActionsTypes.SIGN_IN_REQUEST, signInRequestSaga),
takeLatest(signInActionsTypes.SIGN_OUT_REQUEST, signOutRequestSaga)
]);

export default signInSaga;
6 changes: 6 additions & 0 deletions src/datas/sign-up/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import signUpActionsTypes from "./sign-up-actions-types";
import signUpActions from "./sign-up-actions";
import signUpApi from "./sign-up-api";
import signUpSaga from "./sign-up-saga";

export { signUpActionsTypes, signUpActions, signUpApi, signUpSaga };
7 changes: 7 additions & 0 deletions src/datas/sign-up/sign-up-actions-types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const signUpActionsTypes = {
SIGN_UP_REQUEST: "SIGN_UP_REQUEST",
SIGN_UP_SUCCESS: "SIGN_UP_SUCCESS",
SIGN_UP_FAILURE: "SIGN_UP_FAILURE"
};

export default signUpActionsTypes;
19 changes: 19 additions & 0 deletions src/datas/sign-up/sign-up-actions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import signUpActionsTypes from "./sign-up-actions-types";

const signUpActions = {
signUpRequest: payload => ({
type: signUpActionsTypes.SIGN_UP_REQUEST,
payload
}),
signUpSuccess: () => ({
type: signUpActionsTypes.SIGN_UP_SUCCESS,
payload: undefined
}),
signUpFailure: error => ({
type: signUpActionsTypes.SIGN_UP_FAILURE,
payload: error,
error: true
})
};

export default signUpActions;
3 changes: 3 additions & 0 deletions src/datas/sign-up/sign-up-api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const signUpApi = { signUp: () => ({}) };

export default signUpApi;
Empty file.
21 changes: 21 additions & 0 deletions src/datas/sign-up/sign-up-saga.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { all, takeLatest, call, put } from "redux-saga/effects";
import signInActions from "../sign-in/sign-in-actions";
import signUpActionsTypes from "./sign-up-actions-types";
import signUpActions from "./sign-up-actions";
import signUpApi from "./sign-up-api";

function* signUpRequestSaga({ payload }) {
try {
yield call(signUpApi.signUp, payload);
yield put(signInActions.signInRequest(payload));
yield put(signUpActions.signUpSuccess());
} catch (error) {
yield put(signUpActions.signUpFailure(error));
}
}

const signUpSaga = all([
takeLatest(signUpActionsTypes.SIGN_UP_REQUEST, signUpRequestSaga)
]);

export default signUpSaga;
7 changes: 7 additions & 0 deletions src/datas/users/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import usersActionsTypes from "./users-actions-types";
import usersActions from "./users-actions";
import usersApi from "./users-api";
import usersReducer from "./users-reducer";
import usersSaga from "./users-saga";

export { usersActionsTypes, usersActions, usersApi, usersReducer, usersSaga };
7 changes: 7 additions & 0 deletions src/datas/users/users-actions-types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const usersActionsTypes = {
GET_USER_REQUEST: "GET_USER_REQUEST",
GET_USER_SUCCESS: "GET_USER_SUCCESS",
GET_USER_FAILURE: "GET_USER_FAILURE"
};

export default usersActionsTypes;
19 changes: 19 additions & 0 deletions src/datas/users/users-actions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import usersActionsTypes from "./users-actions-types";

const usersActions = {
getUserRequest: payload => ({
type: usersActionsTypes.GET_USER_REQUEST,
payload
}),
getUserSuccess: payload => ({
type: usersActionsTypes.GET_USER_SUCCESS,
payload
}),
getUserFailure: error => ({
type: usersActionsTypes.GET_USER_FAILURE,
payload: error,
error: true
})
};

export default usersActions;
3 changes: 3 additions & 0 deletions src/datas/users/users-api.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const usersApi = { getUser: () => ({}) };

export default usersApi;
18 changes: 18 additions & 0 deletions src/datas/users/users-reducer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import _ from "lodash";
import usersActionsTypes from "./users-actions-types";

const initialState = { byId: {}, allIds: [] };

const usersReducer = (state = initialState, action) => {
switch (action.type) {
case usersActionsTypes.GET_USER_SUCCESS:
return _.assign({}, state, {
byId: _.assign({}, state.byId, { [action.payload.id]: action.payload }),
allIds: _.concat([], state.allIds, [action.payload.id])
});
default:
return state;
}
};

export default usersReducer;
19 changes: 19 additions & 0 deletions src/datas/users/users-saga.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { all, takeLatest, call, put } from "redux-saga/effects";
import usersActionsTypes from "./users-actions-types";
import usersActions from "./users-actions";
import usersApi from "./users-api";

function* getUsersRequestSaga({ payload }) {
try {
const respond = yield call(usersApi.getUser, payload);
yield put(usersActions.getUserSuccess(respond));
} catch (error) {
yield put(usersActions.getUserFailure(error));
}
}

const usersSaga = all([
takeLatest(usersActionsTypes.GET_USER_REQUEST, getUsersRequestSaga)
]);

export default usersSaga;
4 changes: 2 additions & 2 deletions src/root.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import { Provider } from "react-redux";
import { I18nextProvider } from "react-i18next";
import { ThemeProvider } from "styled-components";
import App from "./app";
// import configureStore from "./configurations/store";
import configureStore from "./configurations/store";
import configureI18n from "./configurations/internationalisation";
import configureTheme from "./configurations/theme";

const store = null; // configureStore();
const store = configureStore();
const i18n = configureI18n();
const theme = configureTheme();

Expand Down