chahinebrini 77edd67cbe fix(magic): explicit imports + staging defaults + sheet height
- backend/api/magic/register: explicit import of MAGIC_DEVICE_LIMIT
  and createAdGuardClient (Nitro auto-import was missing them
  → ReferenceError → HTTP 500 on /api/magic/register)
- mac-app: default backendBaseUrl falls back to staging.rebreak.org
  (app.rebreak.org serves wrong TLS cert)
- native MagicSheet: fallback download/dmg URLs point to staging
- native settings: Magic sheet capped at detents=[0.85] so AppHeader
  stays visible
- bundles all in-flight Magic feature work (pair create/redeem,
  device endpoints, schema, adguard utils, mac-app, locales)
2026-06-03 08:25:02 +02:00

40 lines
1.1 KiB
TypeScript

import { listMagicDevices } from "../../db/devices";
import { requireUser } from "../../utils/auth";
/**
* GET /api/magic/devices
*
* Listet alle aktiven Magic-Bindings des Users für UI.
* Response: [{ deviceId, hostname, model, osVersion, magicEnrolledAt, releaseRequestedAt, releaseAvailableAt }]
*/
export default defineEventHandler(async (event) => {
const user = await requireUser(event);
const devices = await listMagicDevices(user.id);
// Berechne releaseAvailableAt (releaseRequestedAt + 24h)
const enriched = devices.map((d) => {
let releaseAvailableAt: string | null = null;
if (d.releaseRequestedAt) {
const availableAt = new Date(
d.releaseRequestedAt.getTime() + 24 * 60 * 60 * 1000,
);
releaseAvailableAt = availableAt.toISOString();
}
return {
deviceId: d.deviceId,
hostname: d.hostname,
model: d.model,
osVersion: d.osVersion,
magicEnrolledAt: d.magicEnrolledAt.toISOString(),
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
releaseAvailableAt,
};
});
return {
success: true,
data: enriched,
};
});