feat: implement Players component with data fetching and loading state; remove mock data and enhance error handling in database service

This commit is contained in:
Lars Behrends
2025-12-30 15:58:07 +01:00
parent c6ad8a92ec
commit ea2b803534
12 changed files with 184 additions and 341 deletions

View File

@@ -1,20 +1,18 @@
import { MOCK_PLAYERS, MOCK_ORGS, MOCK_PROJECTS } from '../constants';
import { Player, Organization, Project } from '../types';
const API_URL = 'https://vollidioten.ceraticsoft.de/api';
const MOCK_DATA_HEADER = 'X-Mock-Data';
class DatabaseService {
private players: Player[] = MOCK_PLAYERS;
private orgs: Organization[] = MOCK_ORGS;
private projects: Project[] = MOCK_PROJECTS;
private players: Player[] = [];
private orgs: Organization[] = [];
private projects: Project[] = [];
private listeners: Function[] = [];
constructor() {
this.fetchAll();
}
// Try to fetch real data from backend
// Fetch data from backend - always try to load fresh data
async fetchAll() {
try {
console.log("Fetching data from API...");
@@ -24,11 +22,6 @@ class DatabaseService {
fetch(`${API_URL}/projects`)
]);
// Check if we're getting mock data from nginx fallback
const isMockData = pRes.headers.get(MOCK_DATA_HEADER) === 'true' ||
oRes.headers.get(MOCK_DATA_HEADER) === 'true' ||
prRes.headers.get(MOCK_DATA_HEADER) === 'true';
if (pRes.ok && oRes.ok && prRes.ok) {
const playersData = await pRes.json();
const orgsData = await oRes.json();
@@ -41,19 +34,14 @@ class DatabaseService {
this.projects = projectsData;
this.notify();
if (isMockData) {
console.warn("Backend unavailable - using mock data from nginx fallback");
} else {
console.log("✅ Connected to Backend Database - using real data");
}
console.log("✅ Connected to Backend Database - using real data");
} else {
console.warn(`API returned errors: players=${pRes.status}, orgs=${oRes.status}, projects=${prRes.status}`);
console.warn("Using built-in mock data");
// Data is already set to mock data in constructor
throw new Error("Backend unavailable");
}
} catch (e) {
console.warn("Backend not available, using built-in Mock Data.", e);
// Fallback is already set in constructor
console.warn("Backend not available, data not loaded.", e);
throw e; // Re-throw so components can handle the error
}
}