File size: 3,299 Bytes
66dbebd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# mobile_events.py
# NOTE: This file contains framework references that must be integrated with app.py
# The variables (message_input, chatbot, etc.) are defined in app.py and must be
# passed as parameters or accessed through proper integration
import gradio as gr
def setup_mobile_event_handlers(demo, handlers, message_input, chatbot, session_info,
show_reasoning, show_agent_trace, reasoning_display,
performance_display, send_btn, mobile_navigation):
"""
Set up mobile-optimized event handlers
NOTE: All UI components must be passed as parameters
"""
# Main message submission with mobile optimizations
# demo.load(lambda: gr.update(visible=is_mobile()), None, mobile_navigation)
# Mobile-specific event handlers
message_input.submit(
fn=handlers.handle_mobile_submit,
inputs=[message_input, chatbot, session_info, show_reasoning, show_agent_trace],
outputs=[chatbot, message_input, reasoning_display, performance_display],
queue=True,
show_progress="minimal" # Mobile-friendly progress indicator
)
send_btn.click(
fn=handlers.handle_mobile_submit,
inputs=[message_input, chatbot, session_info, show_reasoning, show_agent_trace],
outputs=[chatbot, message_input, reasoning_display, performance_display],
queue=True,
show_progress="minimal"
)
# Mobile navigation handlers
chat_nav_btn.click(lambda: ("chat_tab", False), None, [main_tabs, mobile_navigation])
details_nav_btn.click(lambda: ("details_tab", False), None, [main_tabs, mobile_navigation])
# Settings panel toggle
menu_toggle.click(
lambda visible: not visible,
settings.visible,
settings.visible
)
return demo
def is_mobile():
"""
Detect if user is on mobile device (simplified)
"""
# In production, this would use proper user agent detection
return False # Placeholder
def setup_advanced_mobile_handlers(demo, handlers, performance_manager):
"""
Set up advanced mobile event handlers with performance optimization
"""
# Keyboard shortcuts for mobile
demo.keypress(
("Enter", message_input),
fn=handlers.handle_mobile_submit,
inputs=[message_input, chatbot, session_info, show_reasoning, show_agent_trace],
outputs=[chatbot, message_input, reasoning_display, performance_display],
queue=True
)
# New session handler
new_session_btn.click(
fn=lambda: str(uuid.uuid4())[:8],
outputs=session_info
)
# Auto-refresh on mobile
if is_mobile():
demo.load(
fn=refresh_context,
inputs=[session_info],
outputs=[context_display],
every=30 # Refresh every 30 seconds
)
return demo
def refresh_context(session_id):
"""
Refresh session context for mobile
"""
# TODO: Implement context refresh
return {}
def setup_mobile_gestures():
"""
Set up mobile gesture handlers
"""
return {
"swipe_left": "next_tab",
"swipe_right": "prev_tab",
"pull_down": "refresh",
"long_press": "context_menu"
}
|