feat: Add new vocabulary to the review queue
When a level is finished, the vocabulary of that item will be converted into SM2 metadata, which will be appended to the user's vocabMetadata.
This commit is contained in:
parent
4a6b40ad72
commit
4f133c55d2
@ -261,9 +261,27 @@ userRouter.post("/level/:id", async (req: LRequest, res) => {
|
|||||||
levels: user.levels.concat(id),
|
levels: user.levels.concat(id),
|
||||||
};
|
};
|
||||||
if (id > Math.max(...user.levels)) {
|
if (id > Math.max(...user.levels)) {
|
||||||
// TODO: Add the levels vocabulary to the users review queue
|
// TODO: if (!level)
|
||||||
|
const level = await db.collection("levels").findOne({
|
||||||
|
level: id,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Convert the level's vocabulary to SM2 metadata
|
||||||
|
let sm2: { [id: number]: ISM2Metadata } = {};
|
||||||
|
level.vocab.forEach((id: number) => {
|
||||||
|
sm2[id] = {
|
||||||
|
easiness: 1.3,
|
||||||
|
consecutiveCorrectAnswers: 0,
|
||||||
|
nextDueDate: Date.parse((new Date()).toString()),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const newVocabMetadata = Object.assign({}, user.vocabMetadata, sm2);
|
||||||
|
|
||||||
// Also update the lastLevel attribute
|
// Also update the lastLevel attribute
|
||||||
Object.assign(update, { lastLevel: id });
|
Object.assign(update, {
|
||||||
|
lastLevel: id,
|
||||||
|
vocabMetadata: newVocabMetadata,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
await db.collection("users").updateOne({
|
await db.collection("users").updateOne({
|
||||||
username: user.username,
|
username: user.username,
|
||||||
|
Reference in New Issue
Block a user