feat(profile): Add Profile and components
This commit is contained in:
committed by
mrugesh mohapatra
parent
491912448b
commit
987da19254
@@ -39,6 +39,9 @@ const initialState = {
|
||||
userFetchState: {
|
||||
...defaultFetchState
|
||||
},
|
||||
userProfileFetchState: {
|
||||
...defaultFetchState
|
||||
},
|
||||
showDonationModal: false,
|
||||
isOnline: true
|
||||
};
|
||||
@@ -53,6 +56,7 @@ export const types = createTypes(
|
||||
'updateComplete',
|
||||
'updateFailed',
|
||||
...createAsyncTypes('fetchUser'),
|
||||
...createAsyncTypes('fetchProfileForUser'),
|
||||
...createAsyncTypes('acceptTerms'),
|
||||
...createAsyncTypes('showCert'),
|
||||
...createAsyncTypes('reportUser')
|
||||
@@ -60,11 +64,7 @@ export const types = createTypes(
|
||||
ns
|
||||
);
|
||||
|
||||
export const epics = [
|
||||
hardGoToEpic,
|
||||
failedUpdatesEpic,
|
||||
updateCompleteEpic
|
||||
];
|
||||
export const epics = [hardGoToEpic, failedUpdatesEpic, updateCompleteEpic];
|
||||
|
||||
export const sagas = [
|
||||
...createAcceptTermsSaga(types),
|
||||
@@ -98,6 +98,14 @@ export const fetchUser = createAction(types.fetchUser);
|
||||
export const fetchUserComplete = createAction(types.fetchUserComplete);
|
||||
export const fetchUserError = createAction(types.fetchUserError);
|
||||
|
||||
export const fetchProfileForUser = createAction(types.fetchProfileForUser);
|
||||
export const fetchProfileForUserComplete = createAction(
|
||||
types.fetchProfileForUserComplete
|
||||
);
|
||||
export const fetchProfileForUserError = createAction(
|
||||
types.fetchProfileForUserError
|
||||
);
|
||||
|
||||
export const reportUser = createAction(types.reportUser);
|
||||
export const reportUserComplete = createAction(types.reportUserComplete);
|
||||
export const reportUserError = createAction(types.reportUserError);
|
||||
@@ -144,6 +152,8 @@ export const userByNameSelector = username => state => {
|
||||
return username in user ? user[username] : {};
|
||||
};
|
||||
export const userFetchStateSelector = state => state[ns].userFetchState;
|
||||
export const userProfileFetchStateSelector = state =>
|
||||
state[ns].userProfileFetchState;
|
||||
export const usernameSelector = state => state[ns].appUsername;
|
||||
export const userSelector = state => {
|
||||
const username = usernameSelector(state);
|
||||
@@ -170,11 +180,15 @@ export const reducer = handleActions(
|
||||
...state,
|
||||
userFetchState: { ...defaultFetchState }
|
||||
}),
|
||||
[types.fetchProfileForUser]: state => ({
|
||||
...state,
|
||||
userProfileFetchState: { ...defaultFetchState }
|
||||
}),
|
||||
[types.fetchUserComplete]: (state, { payload: { user, username } }) => ({
|
||||
...state,
|
||||
user: {
|
||||
...state.user,
|
||||
[username]: user
|
||||
[username]: { ...user, sessionUser: true }
|
||||
},
|
||||
appUsername: username,
|
||||
userFetchState: {
|
||||
@@ -193,6 +207,35 @@ export const reducer = handleActions(
|
||||
error: payload
|
||||
}
|
||||
}),
|
||||
[types.fetchProfileForUserComplete]: (
|
||||
state,
|
||||
{ payload: { user, username } }
|
||||
) => {
|
||||
const previousUserObject =
|
||||
username in state.user ? state.user[username] : {};
|
||||
return {
|
||||
...state,
|
||||
user: {
|
||||
...state.user,
|
||||
[username]: { ...previousUserObject, ...user }
|
||||
},
|
||||
userProfileFetchState: {
|
||||
pending: false,
|
||||
complete: true,
|
||||
errored: false,
|
||||
error: null
|
||||
}
|
||||
};
|
||||
},
|
||||
[types.fetchProfileForUserError]: (state, { payload }) => ({
|
||||
...state,
|
||||
userFetchState: {
|
||||
pending: false,
|
||||
complete: false,
|
||||
errored: true,
|
||||
error: payload
|
||||
}
|
||||
}),
|
||||
[types.onlineStatusChange]: (state, { payload: isOnline }) => ({
|
||||
...state,
|
||||
isOnline
|
||||
|
Reference in New Issue
Block a user