Skip to content

Commit

Permalink
Fixing bug in Join Group action.
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Krulis committed Feb 25, 2018
1 parent 258e545 commit 77b76b5
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 36 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import {
joinGroup,
leaveGroup,
fetchGroupIfNeeded
} from '../../redux/modules/groups';
import { joinGroup, leaveGroup, fetchGroup } from '../../redux/modules/groups';
import { fetchGroupsStatsIfNeeded } from '../../redux/modules/stats';
import { fetchAssignmentsForGroup } from '../../redux/modules/assignments';
import { loggedInUserIdSelector } from '../../redux/selectors/auth';
Expand All @@ -23,38 +19,34 @@ const LeaveJoinGroupButtonContainer = ({
joinGroup,
leaveGroup,
fetchAssignmentsForGroup,
fetchGroupIfNeeded,
fetchGroup,
fetchGroupsStatsIfNeeded,
...props
}) =>
isStudent ? (
userId === currentUserId ? (
<LeaveGroupButton
{...props}
onClick={() => leaveGroup(groupId, userId)}
bsSize="xs"
/>
) : (
<RemoveFromGroupButton
isStudent
? userId === currentUserId
? <LeaveGroupButton
{...props}
onClick={() => leaveGroup(groupId, userId)}
bsSize="xs"
/>
: <RemoveFromGroupButton
{...props}
onClick={() => leaveGroup(groupId, userId)}
bsSize="xs"
/>
: <JoinGroupButton
{...props}
onClick={() => leaveGroup(groupId, userId)}
onClick={() =>
joinGroup(groupId, userId).then(() =>
Promise.all([
fetchGroup(groupId),
fetchAssignmentsForGroup(groupId),
fetchGroupsStatsIfNeeded(groupId)
])
)}
bsSize="xs"
/>
)
) : (
<JoinGroupButton
{...props}
onClick={() =>
joinGroup(groupId, userId).then(() =>
Promise.all([
fetchGroupIfNeeded(groupId),
fetchAssignmentsForGroup(groupId),
fetchGroupsStatsIfNeeded(groupId)
])
)}
bsSize="xs"
/>
);
/>;

LeaveJoinGroupButtonContainer.propTypes = {
groupId: PropTypes.string.isRequired,
Expand All @@ -64,7 +56,7 @@ LeaveJoinGroupButtonContainer.propTypes = {
joinGroup: PropTypes.func.isRequired,
leaveGroup: PropTypes.func.isRequired,
fetchAssignmentsForGroup: PropTypes.func.isRequired,
fetchGroupIfNeeded: PropTypes.func.isRequired,
fetchGroup: PropTypes.func.isRequired,
fetchGroupsStatsIfNeeded: PropTypes.func.isRequired
};

Expand All @@ -77,7 +69,7 @@ const mapDispatchToProps = {
joinGroup,
leaveGroup,
fetchAssignmentsForGroup,
fetchGroupIfNeeded,
fetchGroup,
fetchGroupsStatsIfNeeded
};

Expand Down
5 changes: 3 additions & 2 deletions src/redux/modules/groups.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export const additionalActionTypes = {

export const loadGroup = actions.pushResource;
export const fetchGroupsIfNeeded = actions.fetchIfNeeded;
export const fetchGroup = actions.fetchResource;
export const fetchGroupIfNeeded = actions.fetchOneIfNeeded;

export const validateAddGroup = (name, instanceId, parentGroupId = null) =>
Expand Down Expand Up @@ -230,7 +231,7 @@ const reducer = handleActions(
state,
{ payload, meta: { groupId, userId } }
) =>
state.hasIn(['resources', groupId, 'data'])
state.hasIn(['resources', groupId, 'data', 'privateData', 'students'])
? state.updateIn(
['resources', groupId, 'data', 'privateData', 'students'],
students => students.push(userId)
Expand All @@ -241,7 +242,7 @@ const reducer = handleActions(
state,
{ payload, meta: { groupId, userId } }
) =>
state.hasIn(['resources', groupId, 'data'])
state.hasIn(['resources', groupId, 'data', 'privateData', 'students'])
? state.updateIn(
['resources', groupId, 'data', 'privateData', 'students'],
students => students.filter(id => id !== userId)
Expand Down

0 comments on commit 77b76b5

Please sign in to comment.