import { fetchWithAuth } from './auth.js';

/**
 * Die Basis-URL für alle Sektor-spezifischen Anfragen an das Backend.
 * Auch hier zentralisiert, um zukünftige Server-Umzüge zu erleichtern.
 */
const API_BASE_URL = 'https://api-lobby.void-genesis.de/api/sectors';

/**
 * Ruft die Liste aller verfügbaren Sektoren vom Backend ab.
 * Da diese Route geschützt ist, müssen wir das Access-Token mitsenden.
 * 
 * @param {string} token - Das JWT Access Token des aktuell eingeloggten Nutzers
 * 
 * @returns {Promise<Object>} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON)
 */
export async function fetchSectorsList() {
    try {
        const response = await fetchWithAuth(`${API_BASE_URL}/list`, {
            method: 'GET',
            headers: { 
                'Content-Type': 'application/json' 
            }
        });

        const data = await response.json();
        return { ok: response.ok, data };

    } catch (error) {
        console.error("Netzwerkfehler beim Sektor-Abruf:", error);
        throw error;
    }
}

/**
 * Sendet die Anfrage an das Backend, um einem neuen Sektor beizutreten.
 * 
 * @param {string} token - Das JWT Access Token
 * @param {string} sectorId - Die UUID des Sektors
 * @param {string} localUsername - Der gewünschte Commander-Name
 * @param {string} gender - Das gewählte Geschlecht ('male' oder 'female')
 * 
 * @returns {Promise<Object>} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON)
 */
export async function joinSectorUser(token, sectorId, localUsername, gender) {
    try {
        const response = await fetchWithAuth(`${API_BASE_URL}/join`, {
            method: 'POST',
            headers: { 
                'Content-Type': 'application/json' 
            },
            body: JSON.stringify({ sectorId, localUsername, gender })
        });
        
        const data = await response.json();
        return { ok: response.ok, data };

    } catch (error) {
        console.error("Netzwerkfehler beim Sektor-Beitritt:", error);
        throw error;
    }
}