feat(devices): compute effective online status with stale heartbeat ttl
This commit is contained in:
@@ -7,6 +7,8 @@ import { deviceLinks, devices } from '../db/schema';
|
||||
import { requireAuth } from '../middleware/auth';
|
||||
import { requireDeviceAuth } from '../middleware/device-auth';
|
||||
import { createDeviceToken } from '../utils/device-token';
|
||||
import { getEffectiveDeviceStatus } from '../utils/device-status';
|
||||
import { getDeviceOnlineStaleSeconds } from '../utils/env';
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -126,7 +128,19 @@ router.get('/', requireAuth, async (req, res) => {
|
||||
orderBy: [desc(devices.updatedAt)],
|
||||
});
|
||||
|
||||
res.json({ count: result.length, devices: result });
|
||||
const now = new Date();
|
||||
const staleAfterSeconds = getDeviceOnlineStaleSeconds();
|
||||
const effectiveDevices = result.map((device) => ({
|
||||
...device,
|
||||
status: getEffectiveDeviceStatus({
|
||||
status: device.status,
|
||||
lastSeenAt: device.lastSeenAt,
|
||||
now,
|
||||
staleAfterSeconds,
|
||||
}),
|
||||
}));
|
||||
|
||||
res.json({ count: effectiveDevices.length, devices: effectiveDevices });
|
||||
});
|
||||
|
||||
router.patch('/:deviceId', requireAuth, async (req, res) => {
|
||||
|
||||
Reference in New Issue
Block a user