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:
Alexander Polynomdivision 2018-09-30 21:17:47 +02:00
parent 4a6b40ad72
commit 4f133c55d2

View File

@ -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,