import os

import dotenv
import requests
import streamlit as st

dotenv.load_dotenv()

# Set the backend API base URL
BACKEND_URL = os.environ.get("BACKEND_URL")

# Database variables
available_sources = requests.get(
    f"{BACKEND_URL}/import/available_sources"
).json()

# Application tabs
tabs = st.tabs(["Conversion", "Analysis", "Data", "Settings", "Dashboard"])

# Application core
with tabs[0]:
    st.header("Conversion de source")
    with st.form("conversion_form"):
        input_file = st.file_uploader("Télécharge un fichier à convertir")
        input_text = st.text_area("Saisis du texte à convertir")
        source_type = st.selectbox(
            label="Sélectionne la source",
            options=[
                source.get("name")
                for source in available_sources.get("sources")
            ],
            format_func=lambda x: {
                source.get("name"): source.get("display_name")
                for source in available_sources.get("sources")
            }.get(x),
        )
        if input_text:
            source_data = input_text
        elif input_file:
            source_data = input_file
        else:
            st.error("Tu dois fournir un fichier ou du texte")
        submitted = st.form_submit_button("Convertir")
        if submitted:
            response = requests.post(
                f"{BACKEND_URL}/convert",
                json={"source_type": source_type, "source_data": source_data},
            )
            st.success("Conversion Result:")
            st.write(response.json())

with tabs[1]:
    st.header("Importer des données")

with tabs[2]:
    st.header("Analyser des données")

with tabs[3]:
    st.header("Exporter des données")

with tabs[4]:
    st.header("Générer une publication")
