feat(backend): include status, cooldownUntil, lastSeenAt and sleep flag
This commit is contained in:
parent
4ee6849f3f
commit
97977011ae
@ -43,6 +43,7 @@ export default defineEventHandler(async (event) => {
|
||||
listProtectedDevices(user.id),
|
||||
]);
|
||||
|
||||
const now = new Date();
|
||||
const magicItems = magic.map((d) => {
|
||||
let releaseAvailableAt: string | null = null;
|
||||
if (d.releaseRequestedAt) {
|
||||
@ -50,15 +51,28 @@ export default defineEventHandler(async (event) => {
|
||||
d.releaseRequestedAt.getTime() + 24 * 60 * 60 * 1000,
|
||||
).toISOString();
|
||||
}
|
||||
|
||||
const inCooldown = d.magicCooldownUntil && d.magicCooldownUntil > now;
|
||||
const status = d.magicRevokedAt
|
||||
? "revoked"
|
||||
: inCooldown
|
||||
? "cooldown"
|
||||
: d.magicEnrolledAt
|
||||
? "active"
|
||||
: "pending";
|
||||
|
||||
return {
|
||||
source: "magic" as const,
|
||||
deviceId: d.deviceId,
|
||||
hostname: d.hostname ?? "Unbenanntes Ger\u00e4t",
|
||||
model: d.model,
|
||||
osVersion: d.osVersion,
|
||||
magicEnrolledAt: d.magicEnrolledAt.toISOString(),
|
||||
magicEnrolledAt: d.magicEnrolledAt?.toISOString() ?? null,
|
||||
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
|
||||
releaseAvailableAt,
|
||||
cooldownUntil: d.magicCooldownUntil?.toISOString() ?? null,
|
||||
status,
|
||||
lastSeenAt: d.lastSeenAt?.toISOString() ?? null,
|
||||
};
|
||||
});
|
||||
|
||||
@ -78,6 +92,9 @@ export default defineEventHandler(async (event) => {
|
||||
magicEnrolledAt: d.lastSeenAt.toISOString(),
|
||||
releaseRequestedAt: d.releaseRequestedAt?.toISOString() ?? null,
|
||||
releaseAvailableAt,
|
||||
status: "active" as const,
|
||||
lastSeenAt: d.lastSeenAt?.toISOString() ?? null,
|
||||
cooldownUntil: null,
|
||||
};
|
||||
});
|
||||
|
||||
@ -121,6 +138,9 @@ export default defineEventHandler(async (event) => {
|
||||
magicEnrolledAt: (d.installedAt ?? d.createdAt).toISOString(),
|
||||
releaseRequestedAt: null as string | null,
|
||||
releaseAvailableAt: null as string | null,
|
||||
status: "active" as const,
|
||||
lastSeenAt: null,
|
||||
cooldownUntil: null,
|
||||
}));
|
||||
|
||||
return {
|
||||
|
||||
@ -27,10 +27,23 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
const device = await findMagicDeviceByToken(token);
|
||||
|
||||
if (!device) {
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
active: device !== null,
|
||||
active: false,
|
||||
sleep: false,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const inCooldown = device.magicCooldownUntil && device.magicCooldownUntil > new Date();
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: {
|
||||
active: !device.magicRevokedAt && !!device.magicEnrolledAt,
|
||||
sleep: !!inCooldown,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
@ -423,6 +423,9 @@ export interface MagicDeviceRecord {
|
||||
osVersion: string | null;
|
||||
magicEnrolledAt: Date;
|
||||
releaseRequestedAt: Date | null;
|
||||
magicRevokedAt: Date | null;
|
||||
magicCooldownUntil: Date | null;
|
||||
lastSeenAt: Date | null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -447,6 +450,9 @@ export async function listMagicDevices(
|
||||
osVersion: true,
|
||||
magicEnrolledAt: true,
|
||||
releaseRequestedAt: true,
|
||||
magicRevokedAt: true,
|
||||
magicCooldownUntil: true,
|
||||
lastSeenAt: true,
|
||||
},
|
||||
});
|
||||
|
||||
@ -457,6 +463,9 @@ export async function listMagicDevices(
|
||||
osVersion: d.osVersion,
|
||||
magicEnrolledAt: d.magicEnrolledAt!,
|
||||
releaseRequestedAt: d.releaseRequestedAt,
|
||||
magicRevokedAt: d.magicRevokedAt,
|
||||
magicCooldownUntil: d.magicCooldownUntil,
|
||||
lastSeenAt: d.lastSeenAt,
|
||||
}));
|
||||
}
|
||||
|
||||
@ -484,6 +493,9 @@ export async function findMagicDeviceByToken(
|
||||
): Promise<
|
||||
| (DeviceRecord & {
|
||||
magicDnsToken: string;
|
||||
magicEnrolledAt: Date | null;
|
||||
magicRevokedAt: Date | null;
|
||||
magicCooldownUntil: Date | null;
|
||||
magicRemovalPassword: string | null;
|
||||
})
|
||||
| null
|
||||
@ -498,6 +510,7 @@ export async function findMagicDeviceByToken(
|
||||
magicDnsToken: true,
|
||||
magicEnrolledAt: true,
|
||||
magicRevokedAt: true,
|
||||
magicCooldownUntil: true,
|
||||
magicHostname: true,
|
||||
magicRemovalPassword: true,
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user