import datetime
import csv
import os
import huggingface_hub
from huggingface_hub import Repository
import gradio as gr
from datasets import load_dataset, DatasetDict, Dataset, concatenate_datasets




# Define the dataset repository on Hugging Face Hub
HF_DATASET_REPO = "florentgbelidji/alpine-agent-feedback"


# Load or initialize the dataset
try:
    dataset = load_dataset(HF_DATASET_REPO)
except FileNotFoundError:
    # Initialize an empty dataset if it doesn't exist
    dataset = DatasetDict({
        "train": Dataset.from_dict({
            "timestamp": [datetime.datetime.now().isoformat()],
            "user_feedback": ["Initial feedback"],
        })
    })
    dataset.push_to_hub(HF_DATASET_REPO, token=os.getenv("HF_TOKEN"))


def get_feedback_interface():
    with gr.Tab("Feedback Form"):
        feedback_input = gr.Textbox(label="Your Feedback", lines=4, placeholder="Type your feedback here...")
        submit_button = gr.Button("Submit")
        feedback_response = gr.Markdown(label="feedback_response")

        def add_feedback(feedback):
            from datetime import datetime

            # Append feedback to the dataset
            new_data = {
                "timestamp": [datetime.now().isoformat()],
                "user_feedback": [feedback],
            }
            new_entry = Dataset.from_dict(new_data)
            global dataset
            dataset["train"] = concatenate_datasets([dataset["train"], new_entry])

            # Push updated dataset to the Hub
            dataset.push_to_hub(HF_DATASET_REPO)

            return "Thank you for your feedback!"

        submit_button.click(add_feedback, inputs=[feedback_input], outputs=[feedback_response])