Same pattern as touchLastSeen: getLastSeenBatch, setPresenceVisible, getFollowingIds wurden im db/profile.ts implementiert aber nicht in den Endpoints importiert. Alle 3 warfen 500 ReferenceError → grüner Dot zeigte sich nie + Toggle silently failed. Nitro's auto-import covered nur defineEventHandler/getQuery etc., NICHT unsere eigenen db-layer helper. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
24 lines
728 B
TypeScript
24 lines
728 B
TypeScript
/**
|
|
* POST /api/me/presence-visibility
|
|
*
|
|
* Opt-out toggle for the authenticated user's online status visibility.
|
|
* When visible=false, no other user will see lastSeenAt regardless of follow status.
|
|
*
|
|
* Body: { visible: boolean }
|
|
* Response: { presenceVisible: boolean }
|
|
*/
|
|
import { requireUser } from "../../utils/auth";
|
|
import { setPresenceVisible } from "../../db/profile";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const user = await requireUser(event);
|
|
|
|
const body = await readBody(event);
|
|
if (typeof body?.visible !== "boolean") {
|
|
throw createError({ statusCode: 400, message: "INVALID_VISIBLE" });
|
|
}
|
|
|
|
const result = await setPresenceVisible(user.id, body.visible);
|
|
return result;
|
|
});
|