Skip to content

Commit bccf304

Browse files
committed
Fixing several issues where safeGet should have returned empty array as fallback.
1 parent 1362be2 commit bccf304

File tree

9 files changed

+17
-15
lines changed

9 files changed

+17
-15
lines changed

src/components/helpers/group.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const computeMap = (groups, filter) => {
44
const res = {};
55
groups.filter(filter).forEach((group, id) => {
66
res[id] = true;
7-
group.getIn(['data', 'parentGroupsIds'], []).forEach(parentId => {
7+
(group.getIn(['data', 'parentGroupsIds'], []) || []).forEach(parentId => {
88
res[parentId] = true;
99
});
1010
});

src/containers/ShadowAssignmentPointsContainer/ShadowAssignmentPointsContainer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default connect(
5454
(dispatch, { groupId, id }) => ({
5555
loadAsync: () =>
5656
dispatch(fetchGroupIfNeeded(groupId)).then(({ value: group }) =>
57-
dispatch(fetchByIds(safeGet(group, ['privateData', 'students'], [])))
57+
dispatch(fetchByIds(safeGet(group, ['privateData', 'students']) || []))
5858
),
5959
setPoints: ({ awardeeId, pointsId, points, note, awardedAt }) =>
6060
dispatch(setShadowAssignmentPoints(groupId, id, awardeeId, pointsId, points, note, awardedAt)),

src/containers/SisSupervisorGroupsContainer/SisSupervisorGroupsContainer.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,10 @@ class SisSupervisorGroupsContainer extends Component {
282282
groupsAccessor,
283283
locale
284284
)}
285-
{safeGet(group, ['privateData', 'bindings', 'sis'], [])
286-
.length > 1 && (
285+
{(
286+
safeGet(group, ['privateData', 'bindings', 'sis']) ||
287+
[]
288+
).length > 1 && (
287289
<OverlayTrigger
288290
placement="right"
289291
overlay={

src/containers/StudentsListContainer/StudentsListContainer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export default connect(
6969
Promise.all([
7070
dispatch(fetchGroupStatsIfNeeded(groupId)),
7171
dispatch(fetchGroupIfNeeded(groupId)).then(({ value: group }) =>
72-
dispatch(fetchByIds(safeGet(group, ['privateData', 'students'], [])))
72+
dispatch(fetchByIds(safeGet(group, ['privateData', 'students']) || []))
7373
),
7474
]),
7575
})

src/helpers/exercise/configAdvanced.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { safeGet, arrayToObject, encodeNumId, encodeId } from '../common';
77
*/
88
export const getPipelines = defaultMemoize(config =>
99
// There should be only one environment and all tests have the same pipelines (hence we take first and first)
10-
safeGet(config, [0, 'tests', 0, 'pipelines'], []).map(({ name }) => name)
10+
(safeGet(config, [0, 'tests', 0, 'pipelines']) || []).map(({ name }) => name)
1111
);
1212

1313
/**

src/helpers/exercise/environments.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export const getFirstEnvironmentId = environmentConfigs =>
8787
*/
8888
export const getEnvironmentInitValues = environmentConfigs => {
8989
const environmentId = getFirstEnvironmentId(environmentConfigs);
90-
const variables = safeGet(environmentConfigs, [0, 'variablesTable'], []);
90+
const variables = safeGet(environmentConfigs, [0, 'variablesTable']) || [];
9191
return { environmentId, variables };
9292
};
9393

src/pages/AssignmentStats/AssignmentStats.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ class AssignmentStats extends Component {
238238
.then(res => res.value)
239239
.then(assignment =>
240240
dispatch(fetchGroupIfNeeded(assignment.groupId)).then(({ value: group }) =>
241-
dispatch(fetchByIds(safeGet(group, ['privateData', 'students'], [])))
241+
dispatch(fetchByIds(safeGet(group, ['privateData', 'students']) || []))
242242
)
243243
),
244244
dispatch(fetchRuntimeEnvironments()),

src/pages/GroupDetail/GroupDetail.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class GroupDetail extends Component {
7474
])
7575
: Promise.resolve(),
7676
hasPermissions(group, 'viewStudents')
77-
? dispatch(fetchByIds(safeGet(group, ['privateData', 'students'], [])))
77+
? dispatch(fetchByIds(safeGet(group, ['privateData', 'students']) || []))
7878
: Promise.resolve(),
7979
dispatch(fetchGroupStats(groupId)),
8080
])

src/pages/GroupInfo/GroupInfo.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ class GroupInfo extends Component {
5454
.then(res => res.value)
5555
.then(group =>
5656
Promise.all([
57-
dispatch(fetchByIds(safeGet(group, ['primaryAdminsIds'], []))),
58-
dispatch(fetchByIds(safeGet(group, ['privateData', 'supervisors'], []))),
59-
dispatch(fetchByIds(safeGet(group, ['privateData', 'observers'], []))),
57+
dispatch(fetchByIds(safeGet(group, ['primaryAdminsIds']) || [])),
58+
dispatch(fetchByIds(safeGet(group, ['privateData', 'supervisors']) || [])),
59+
dispatch(fetchByIds(safeGet(group, ['privateData', 'observers']) || [])),
6060
])
6161
);
6262

@@ -73,13 +73,13 @@ class GroupInfo extends Component {
7373
const prevData = prevProps.group.toJS().data.privateData;
7474
const groupJs = this.props.group.toJS();
7575
if (safeGet(prevData, ['primaryAdmins', 'length'], -1) !== safeGet(newData, ['primaryAdmins', 'length'], -1)) {
76-
this.props.refetchUsers(safeGet(groupJs, ['data', 'primaryAdminsIds'], []));
76+
this.props.refetchUsers(safeGet(groupJs, ['data', 'primaryAdminsIds']) || []);
7777
}
7878
if (safeGet(prevData, ['supervisors', 'length'], -1) !== safeGet(newData, ['supervisors', 'length'], -1)) {
79-
this.props.refetchUsers(safeGet(groupJs, ['data', 'privateData', 'supervisors'], []));
79+
this.props.refetchUsers(safeGet(groupJs, ['data', 'privateData', 'supervisors']) || []);
8080
}
8181
if (safeGet(prevData, ['observers', 'length'], -1) !== safeGet(newData, ['observers', 'length'], -1)) {
82-
this.props.refetchUsers(safeGet(groupJs, ['data', 'privateData', 'observers'], []));
82+
this.props.refetchUsers(safeGet(groupJs, ['data', 'privateData', 'observers']) || []);
8383
}
8484
}
8585
}

0 commit comments

Comments
 (0)