Skip to content

Commit ab12eab

Browse files
authored
Merge pull request #4993 from ozer550/fix-node-details-must-be-defined-error
Fix node details must be defined reference error
2 parents 552ce91 + cd3e5a8 commit ab12eab

File tree

1 file changed

+27
-12
lines changed
  • contentcuration/contentcuration/frontend/channelEdit/vuex/assessmentItem

1 file changed

+27
-12
lines changed

contentcuration/contentcuration/frontend/channelEdit/vuex/assessmentItem/actions.js

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,33 @@ import { isNodeComplete } from 'shared/utils/validation';
33
import db from 'shared/data/db';
44
import { TABLE_NAMES } from 'shared/data/constants';
55

6-
function updateNodeComplete(nodeId, context) {
7-
const node = context.rootGetters['contentNode/getContentNode'](nodeId);
8-
const complete = isNodeComplete({
9-
nodeDetails: node,
10-
assessmentItems: context.getters.getAssessmentItems(nodeId),
11-
files: context.rootGetters['file/getContentNodeFiles'](nodeId),
12-
});
13-
return context.dispatch(
14-
'contentNode/updateContentNode',
15-
{ id: nodeId, complete },
16-
{ root: true }
17-
);
6+
// We implement a retry mechanism to ensure that we wait for retrival of contentnode
7+
// when all the nodes for the
8+
// currently displayed topic in the tree view are reloaded
9+
function updateNodeComplete(nodeId, context, maxTries = 10, delayMs = 100) {
10+
let tries = 0;
11+
12+
function tryUpdate() {
13+
const node = context.rootGetters['contentNode/getContentNode'](nodeId);
14+
if (node) {
15+
const complete = isNodeComplete({
16+
nodeDetails: node,
17+
assessmentItems: context.getters.getAssessmentItems(nodeId),
18+
files: context.rootGetters['file/getContentNodeFiles'](nodeId),
19+
});
20+
return context.dispatch(
21+
'contentNode/updateContentNode',
22+
{ id: nodeId, complete },
23+
{ root: true }
24+
);
25+
} else if (tries < maxTries) {
26+
tries++;
27+
setTimeout(tryUpdate, delayMs);
28+
} else {
29+
console.error(`updateNodeComplete: Node ${nodeId} not found in Vuex after ${maxTries} tries`);
30+
}
31+
}
32+
tryUpdate();
1833
}
1934

2035
/**

0 commit comments

Comments
 (0)