WebAuthn biometric + PWA widget + UI header fixes + mobile responsive
- WebAuthn: register/auth options, device management - PWA widget page + manifest shortcuts - Group schedule endpoint (timezones + locations) - UI #3-#6: compact headers on tasks/calendar/projects/goals - UI #9: mobile responsive top bars - webauthn_credentials table Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -35,12 +35,16 @@ async function groupRoutes(app) {
|
||||
});
|
||||
|
||||
app.put('/groups/:id', async (req) => {
|
||||
const { name, color, icon, order_index, time_zones } = req.body;
|
||||
const { name, color, icon, order_index, time_zones, locations } = req.body;
|
||||
const { rows } = await app.db.query(
|
||||
`UPDATE task_groups SET name=COALESCE($1,name), color=COALESCE($2,color), icon=COALESCE($3,icon),
|
||||
order_index=COALESCE($4,order_index), time_zones=COALESCE($5,time_zones), updated_at=NOW()
|
||||
WHERE id=$6 RETURNING *`,
|
||||
[name, color, icon, order_index, time_zones ? JSON.stringify(time_zones) : null, req.params.id]
|
||||
order_index=COALESCE($4,order_index), time_zones=COALESCE($5,time_zones),
|
||||
locations=COALESCE($6,locations), updated_at=NOW()
|
||||
WHERE id=$7 RETURNING *`,
|
||||
[name, color, icon, order_index,
|
||||
time_zones ? JSON.stringify(time_zones) : null,
|
||||
locations ? JSON.stringify(locations) : null,
|
||||
req.params.id]
|
||||
);
|
||||
if (!rows.length) throw { statusCode: 404, message: 'Group not found' };
|
||||
return { data: rows[0] };
|
||||
@@ -111,6 +115,27 @@ async function groupRoutes(app) {
|
||||
return { data: rows[0] };
|
||||
});
|
||||
|
||||
// Combined schedule: time zones + locations for a group
|
||||
app.get('/groups/:id/schedule', async (req) => {
|
||||
const { rows } = await app.db.query(
|
||||
'SELECT id, name, time_zones, locations FROM task_groups WHERE id = $1',
|
||||
[req.params.id]
|
||||
);
|
||||
if (!rows.length) throw { statusCode: 404, message: 'Group not found' };
|
||||
const g = rows[0];
|
||||
return {
|
||||
data: {
|
||||
group_id: g.id,
|
||||
group_name: g.name,
|
||||
time_zones: g.time_zones || [],
|
||||
locations: g.locations || [],
|
||||
summary: {
|
||||
tz_count: (g.time_zones || []).length,
|
||||
loc_count: (g.locations || []).length
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = groupRoutes;
|
||||
|
||||
Reference in New Issue
Block a user