import gradio as gr
from tabs.chat import create_chat_tab, load_chatbot_with_timeout
from tabs.create_chatbot import create_chatbot_tab
# from tabs.admin import create_admin_tab

print("Gradio Version:", gr.__version__)

def create_app():
    with gr.Blocks(
        title="codora KI-App-Ersteller v0",
        head="""
        <script>
            function copyToClipboard(elementId) {
                var copyText = document.getElementById(elementId).querySelector('textarea').value;
                navigator.clipboard.writeText(copyText).then(function() {
                    alert("Text kopiert: " + copyText);
                }, function(err) {
                    console.error("Konnte Text nicht kopieren: ", err);
                });
            }
        </script>
        """
    ) as demo:
        gr.Markdown("# codora KI-App-Ersteller v0")
        
        with gr.Tabs():
            with gr.Tab("Chat"):
                chat_tab = create_chat_tab()
            
            with gr.Tab("Chatbot erstellen"):
                create_tab = create_chatbot_tab()
            
            #with gr.Tab("Admin"):
            #    create_admin_tab()

        @demo.load(inputs=[chat_tab['chatbot_id_input']], outputs=[chat_tab['title'], chat_tab['chatbot_id_input'], chat_tab['share_link'], chat_tab['load_message']])
        def load_chatbot_on_start(chatbot_id, request: gr.Request):
            params = request.query_params
            if "chatbot_id" in params:
                chatbot_id = params["chatbot_id"]
                return load_chatbot_with_timeout(chatbot_id)
            return (
                gr.update(value="Willkommen beim Chatbot"),
                gr.update(value="", visible=True),
                gr.update(value=""),
                gr.update(value="")
            )

        # Add event listener to automatically load newly created chatbot
        
        create_tab["chatbot_id_output"].change(
            fn=load_chatbot_with_timeout,
            inputs=[create_tab["chatbot_id_output"]],
            outputs=[chat_tab['title'], chat_tab['chatbot_id_input'], chat_tab['share_link'], chat_tab['load_message']]
        )

    return demo

demo = create_app()

if __name__ == "__main__":
    demo.launch()