diff --git a/routes/snowball.js b/routes/snowball.js index db7f28e..ac9a67b 100644 --- a/routes/snowball.js +++ b/routes/snowball.js @@ -73,14 +73,16 @@ function getDebtQuery(ramseyMode) { `; } -function getDebtBills(userId) { +function getDebtBills(userId, ramseyMode) { const db = getDb(); - return db.prepare(getDebtQuery(isRamseyMode(userId))).all(userId); + const mode = ramseyMode !== undefined ? ramseyMode : isRamseyMode(userId); + return db.prepare(getDebtQuery(mode)).all(userId); } // GET /api/snowball — server-filtered debt bills, pre-sorted by snowball_order router.get('/', (req, res) => { - res.json(getDebtBills(req.user.id)); + const ramseyMode = isRamseyMode(req.user.id); + res.json(getDebtBills(req.user.id, ramseyMode)); }); // GET /api/snowball/settings — extra monthly payment for this user @@ -134,7 +136,8 @@ router.patch('/settings', (req, res) => { const user = db.prepare('SELECT snowball_extra_payment FROM users WHERE id = ?').get(req.user.id); res.json({ extra_payment: user?.snowball_extra_payment ?? 0, - ramsey_mode: isRamseyMode(req.user.id), + // Use body value when ramsey_mode was just saved; fall back to DB read if not in request + ramsey_mode: ramsey_mode !== undefined ? !!ramsey_mode : isRamseyMode(req.user.id), ready_current_on_bills: getUserBoolSetting(req.user.id, 'snowball_ready_current_on_bills'), ready_emergency_fund: getUserBoolSetting(req.user.id, 'snowball_ready_emergency_fund'), }); @@ -145,7 +148,8 @@ router.patch('/settings', (req, res) => { router.get('/projection', (req, res) => { const db = getDb(); - const bills = getDebtBills(req.user.id); + const ramseyMode = isRamseyMode(req.user.id); + const bills = getDebtBills(req.user.id, ramseyMode); const user = db.prepare('SELECT snowball_extra_payment FROM users WHERE id = ?').get(req.user.id); const extra = user?.snowball_extra_payment ?? 0; @@ -260,7 +264,8 @@ router.post('/plans', (req, res) => { const planName = (typeof name === 'string' && name.trim()) ? name.trim().slice(0, 100) : 'Snowball Plan'; const planMethod = ['snowball', 'avalanche', 'custom'].includes(method) ? method : 'snowball'; - const debts = getDebtBills(userId); + const ramseyMode = isRamseyMode(userId); + const debts = getDebtBills(userId, ramseyMode); const activeDebts = debts.filter(b => (b.current_balance ?? 0) > 0); if (activeDebts.length === 0) { return res.status(400).json({ error: 'No debts with a balance found. Add a balance to at least one bill.' });