fix: serve lan-client from backend at /lan on port 8080
- Mount lan-client/ as static files at /lan with html=True - Mount precon-decks/ at /precon-decks/ for direct .dck access - ai-bridge.js: use same-origin (empty URLs, auto-detect from window.location) - engine.js: simplify deck fetch to use /api/lab/precons/deck endpoint + /precon-decks/ static fallback - Eliminates cross-origin issues by serving everything from localhost:8080 Access the LAN battlefield at http://localhost:8080/lan/
This commit is contained in:
1 parent
bf701397b0
commit
e90efe1654
3 files changed
+38
-30
No files matched your search
+14
-27
@@ -12723,39 +12723,26 @@ async function loadPreconForPlayer(playerIdx, preconId) {
|
||||
var player = gameState.players[playerIdx];
|
||||
if (!player) return;
|
||||
|
||||
// Try to get decklist text: embedded first, then fetch from backend .dck file
|
||||
// Try to get decklist text: embedded first, then fetch .dck from server
|
||||
var decklistText = precon.decklist || '';
|
||||
if (!decklistText && precon.fileName) {
|
||||
// Fetch .dck file from backend if available
|
||||
if (typeof AIBridge !== 'undefined' && AIBridge.connector.connected) {
|
||||
try {
|
||||
var deckData = await AIBridge.deckSource.fetchPreconDeck(precon.fileName);
|
||||
if (deckData && deckData.decklist) {
|
||||
decklistText = deckData.decklist;
|
||||
} else if (deckData && typeof deckData === 'string') {
|
||||
decklistText = deckData;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('[loadPreconForPlayer] Backend deck fetch failed:', e);
|
||||
// 1. Try the API endpoint (returns JSON with decklist field)
|
||||
try {
|
||||
var apiResp = await fetch('/api/lab/precons/deck?fileName=' + encodeURIComponent(precon.fileName));
|
||||
if (apiResp.ok) {
|
||||
var deckData = await apiResp.json();
|
||||
if (deckData && deckData.decklist) decklistText = deckData.decklist;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('[loadPreconForPlayer] API deck fetch failed:', e);
|
||||
}
|
||||
// Fallback: try to fetch .dck file directly from precon-decks/ (same origin)
|
||||
// 2. Fallback: fetch .dck file directly from static mount
|
||||
if (!decklistText) {
|
||||
try {
|
||||
var resp = await fetch('precon-decks/' + precon.fileName);
|
||||
if (resp.ok) {
|
||||
decklistText = await resp.text();
|
||||
}
|
||||
} catch (e) {
|
||||
// Fallback: try relative to backend
|
||||
try {
|
||||
var resp2 = await fetch('/precon-decks/' + precon.fileName);
|
||||
if (resp2.ok) {
|
||||
decklistText = await resp2.text();
|
||||
}
|
||||
} catch (e2) {
|
||||
console.warn('[loadPreconForPlayer] Could not fetch .dck file:', precon.fileName);
|
||||
}
|
||||
var staticResp = await fetch('/precon-decks/' + encodeURIComponent(precon.fileName));
|
||||
if (staticResp.ok) decklistText = await staticResp.text();
|
||||
} catch (e2) {
|
||||
console.warn('[loadPreconForPlayer] Static .dck fetch failed:', precon.fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user