Files
Nodecast/server/routes/laya.js
blomios d276d3b4c3 fix: show Laya model download progress and surface errors in Settings (#12)
Track download progress in layaService (bytes/total, phase, error
state) and expose it through the laya status route. Render a progress
bar during model download in Settings via a layaStatusPresentation
service, and display download/status errors inline instead of failing
silently. Cover progress tracking and status presentation with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 11:49:36 +02:00

43 lines
1.2 KiB
JavaScript

const express = require('express');
const { requireAuth, requireAdmin } = require('../auth');
const { LayaRequestError, LayaService } = require('../services/layaService');
const router = express.Router();
const laya = new LayaService();
function sendError(res, error) {
const status = error instanceof LayaRequestError ? error.statusCode : 500;
const message = error instanceof LayaRequestError ? error.message : 'Internal server error';
res.status(status).json({ runtimeAvailable: false, error: message });
}
router.get('/status', requireAuth, async (req, res) => {
res.json(await laya.status());
});
router.post('/model/download', requireAuth, requireAdmin, async (req, res) => {
try {
res.status(202).json(laya.startModelDownload(req.body?.model));
} catch (error) {
sendError(res, error);
}
});
router.delete('/model', requireAuth, requireAdmin, async (req, res) => {
try {
res.json(await laya.deleteModel());
} catch (error) {
sendError(res, error);
}
});
router.post('/language/batch', requireAuth, async (req, res) => {
try {
res.json(await laya.detectBatch(req.body));
} catch (error) {
sendError(res, error);
}
});
module.exports = router;