generated from Dicken/dickendock
round63: Geraeteuebergreifende Sichtbarkeit fuer manuelle Einzelgeraete-Scans, automatische Logs-Aktualisierung danach
This commit is contained in:
@@ -21,6 +21,7 @@ import {
|
||||
requestCancel,
|
||||
tryLockDevice,
|
||||
unlockDevice,
|
||||
getScanningDeviceIds,
|
||||
} from "../scanJobs.js";
|
||||
import type { Device } from "@launchpad/shared";
|
||||
|
||||
@@ -271,6 +272,15 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
|
||||
return { dismissed: true };
|
||||
});
|
||||
|
||||
// Geräteübergreifende Sichtbarkeit für manuelle Einzelgeräte-Scans (siehe
|
||||
// getScanningDeviceIds() in scanJobs.ts) - wird von der Seitenleiste
|
||||
// gepollt, damit "Ein Scan läuft gerade" auch für einen per Button auf der
|
||||
// Geräteseite gestarteten Scan angezeigt wird, nicht nur für den
|
||||
// Sammel-Scan.
|
||||
app.get("/api/scan/devices/active", async () => {
|
||||
return { deviceIds: getScanningDeviceIds() };
|
||||
});
|
||||
|
||||
app.post("/api/scan/devices/:id", async (request, reply) => {
|
||||
const { id } = request.params as { id: string };
|
||||
const { full } = request.query as { full?: string };
|
||||
|
||||
@@ -100,3 +100,18 @@ export function tryLockDevice(deviceId: string): boolean {
|
||||
export function unlockDevice(deviceId: string): void {
|
||||
devicesCurrentlyScanning.delete(deviceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert die IDs aller Geräte, die GERADE JETZT gescannt werden - egal ob
|
||||
* über den Einzelgerät-Endpunkt (manueller "Jetzt scannen"-Button auf der
|
||||
* Geräteseite) oder als Teil eines laufenden Sammel-Scans. Genutzt für die
|
||||
* geräteübergreifende Anzeige "Ein Scan läuft gerade" in der Seitenleiste
|
||||
* (siehe AdminLayout.tsx/useScanActivity.ts) - vorher war ein einzelner
|
||||
* manueller Geräte-Scan NUR im Browser sichtbar, der ihn ausgelöst hat (der
|
||||
* Einzelgerät-Endpunkt ist eine simple, blockierende Anfrage ohne eigenen
|
||||
* Job-Status wie der Sammel-Scan), auf jedem anderen Browser/Gerät gab es
|
||||
* dafür überhaupt keine Anzeige.
|
||||
*/
|
||||
export function getScanningDeviceIds(): string[] {
|
||||
return Array.from(devicesCurrentlyScanning);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user