create api endpoint and logic for updating user eReader devices

This commit is contained in:
Austin Spencer 2024-10-16 19:50:07 -04:00
parent dbc04d5bb3
commit 43f3e5ee03
No known key found for this signature in database
3 changed files with 46 additions and 0 deletions

View file

@ -394,6 +394,36 @@ class MeController {
res.json(req.user.toOldJSONForBrowser())
}
/**
* POST: /api/me/ereader-devices
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async updateUserEReaderDevices(req, res) {
if (!req.body.ereaderDevices || !Array.isArray(req.body.ereaderDevices)) {
return res.status(400).send('Invalid payload. ereaderDevices array required')
}
const ereaderDevices = req.body.ereaderDevices
for (const device of ereaderDevices) {
if (!device.name || !device.email) {
return res.status(400).send('Invalid payload. ereaderDevices array items must have name and email')
}
}
const updated = Database.emailSettings.updateUserEReaderDevices(req.user, ereaderDevices)
if (updated) {
await Database.updateSetting(Database.emailSettings)
SocketAuthority.clientEmitter('ereader-devices-updated', {
ereaderDevices: Database.emailSettings.ereaderDevices
})
}
res.json({
ereaderDevices: Database.emailSettings.getEReaderDevices(req.user)
})
}
/**
* GET: /api/me/stats/year/:year
*