// /auth/me/blocks and /auth/me/hidden — a member's own blocks and hides // (USER_SAFETY.md §4.1). Self-scoped on req.user.id; requireAuth is the group's. const safety = require('../../../model/safety/userSafety.model') const log = require('../../../utils/logger')('safety') const fail = (res, err, what) => { if (err && err.status === 503) { return res.status(503).json({ code: 'module_unavailable', message: 'The game module did not answer. Try again in a moment.' }) } log.error(`${what} failed`, { message: err.message }) return res.status(500).json({ message: 'Internal Server Error' }) } const refused = (res, result) => res.status(result.status || 400).json({ code: result.code, message: result.error }) async function listBlocks(req, res) { try { return res.json({ blocks: await safety.listBlocks(req.user) }) } catch (err) { return fail(res, err, 'list blocks') } } async function createBlock(req, res) { try { const result = await safety.blockAuthorOf({ actor: req.user, targetType: req.body.targetType, targetId: req.body.targetId, }) if (!result.ok) return refused(res, result) return res.status(201).json({ block: result.block }) } catch (err) { return fail(res, err, 'create block') } } async function deleteBlock(req, res) { try { const result = await safety.unblock(req.user, Number(req.params.id)) if (!result.ok) return refused(res, result) return res.json({ ok: true }) } catch (err) { return fail(res, err, 'delete block') } } async function listHidden(req, res) { try { return res.json({ hidden: await safety.listHidden(req.user) }) } catch (err) { return fail(res, err, 'list hidden') } } async function createHidden(req, res) { try { const result = await safety.hide(req.user, req.body.targetType, req.body.targetId) if (!result.ok) return refused(res, result) return res.json({ ok: true }) } catch (err) { return fail(res, err, 'hide item') } } async function deleteHidden(req, res) { try { const result = await safety.unhide(req.user, req.params.targetType, Number(req.params.targetId)) if (!result.ok) return refused(res, result) return res.json({ ok: true }) } catch (err) { return fail(res, err, 'unhide item') } } async function clearHidden(req, res) { try { return res.json({ ok: true, cleared: await safety.clearHidden(req.user) }) } catch (err) { return fail(res, err, 'clear hidden') } } module.exports = { listBlocks, createBlock, deleteBlock, listHidden, createHidden, deleteHidden, clearHidden }