Compare commits

...

1 Commits

Author SHA1 Message Date
RaymondVerhoef
20449f0bc1 fix: gebruik theme_session_completions voor learnDone op dashboard
getLearnDone was een deprecated stub die altijd false teruggaf nadat
de learn_progress-collectie is gedropt. Hierdoor toonde het dashboard
permanent 'Complete your theme session first', zelfs als de theme
session al voltooid was, en werd cycle progress nooit opgeteld.

Alle drie call-sites vervangen door getThemeSessionCompletion (de
huidige bron van waarheid), en de dode stubs verwijderd uit db.js.

Closes #9

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 12:49:12 +02:00
3 changed files with 5 additions and 11 deletions

View File

@@ -350,7 +350,7 @@ export async function getYearProgress(userId, personalWeekNumber) {
let completed = 0; let completed = 0;
for (let w = cycleStartWeek; w <= cycleEndWeek; w++) { for (let w = cycleStartWeek; w <= cycleEndWeek; w++) {
const done = await db.getLearnDone(userId, w); const done = await db.getThemeSessionCompletion(userId, w);
if (done) completed++; if (done) completed++;
} }

View File

@@ -326,13 +326,6 @@ export function setCachedQuiz(userId, weekNumber, quiz) {
return Promise.resolve(quiz); return Promise.resolve(quiz);
} }
// ── Learn Progress (DEPRECATED — collection dropped) ────────────────────────
/** @deprecated learn_progress collection has been dropped. */
export async function getLearnDone() { return false; }
/** @deprecated learn_progress collection has been dropped. */
export async function setLearnDone() { return null; }
// ── Theme Sessions ────────────────────────────────────────────────────────── // ── Theme Sessions ──────────────────────────────────────────────────────────
/** /**

View File

@@ -31,13 +31,14 @@ const Dashboard = () => {
if (!currentUser) return; if (!currentUser) return;
const load = async () => { const load = async () => {
const [topic, learnDone, testResult, allUsers, leaderboard] = await Promise.all([ const [topic, learnCompletion, testResult, allUsers, leaderboard] = await Promise.all([
getAssignedTopic(currentUser.id, weekNumber), getAssignedTopic(currentUser.id, weekNumber),
db.getLearnDone(currentUser.id, weekNumber), db.getThemeSessionCompletion(currentUser.id, weekNumber),
db.getQuizResult(currentUser.id, weekNumber), db.getQuizResult(currentUser.id, weekNumber),
db.getTeamMembers(), db.getTeamMembers(),
db.getLeaderboard(), db.getLeaderboard(),
]); ]);
const learnDone = !!learnCompletion;
const nonAdminIds = allUsers.filter(u => u.role !== 'admin').map(u => u.id); const nonAdminIds = allUsers.filter(u => u.role !== 'admin').map(u => u.id);
const filtered = leaderboard.filter(u => nonAdminIds.includes(u.user_id)); const filtered = leaderboard.filter(u => nonAdminIds.includes(u.user_id));
@@ -48,7 +49,7 @@ const Dashboard = () => {
const activity = []; const activity = [];
for (let w = weekNumber; w >= Math.max(1, weekNumber - 3); w--) { for (let w = weekNumber; w >= Math.max(1, weekNumber - 3); w--) {
const [pastLearn, pastTest, pastTopic] = await Promise.all([ const [pastLearn, pastTest, pastTopic] = await Promise.all([
db.getLearnDone(currentUser.id, w), db.getThemeSessionCompletion(currentUser.id, w),
db.getQuizResult(currentUser.id, w), db.getQuizResult(currentUser.id, w),
getAssignedTopic(currentUser.id, w), getAssignedTopic(currentUser.id, w),
]); ]);