from nicegui import ui
import random
import string
import qrcode
import io
import requests

# Function to generate a random session code
def generate_session_code():
    return ''.join(random.choices(string.ascii_uppercase + string.digits, k=6))

# Home page
@ui.page('/')
def home():
    ui.label('Welcome to the Multiplayer Game Platform')
    ui.button('Create Session', on_click=lambda: ui.open('/create'))
    ui.button('Join Session', on_click=lambda: ui.open('/join'))

# Create session page
@ui.page('/create')
def create_session():
    response = requests.post('http://localhost:8000/create_session')
    session_code = response.json()['session_code']
    ui.label(f'Session Code: {session_code}')
    ui.label('Select a game:')
    ui.button('Card Game', on_click=lambda: start_game(session_code, 'card'))
    ui.button('Trivia', on_click=lambda: start_game(session_code, 'trivia'))
    # Generate QR code
    qr_response = requests.get(f'http://localhost:8000/generate_qr/{session_code}')
    ui.image(qr_response.content, format='png')

# Join session page
@ui.page('/join')
def join_session():
    ui.label('Enter Session Code:')
    session_code_input = ui.input()
    ui.button('Join', on_click=lambda: join_game(session_code_input.value))

# Start game function
def start_game(session_code, game_type):
    ui.label(f'Starting {game_type} game in session {session_code}')
    # ...game logic...

# Join game function
def join_game(session_code):
    response = requests.post('http://localhost:8000/join_session', json={'session_code': session_code})
    if response.status_code == 200:
        ui.label(f'Joined session {session_code}')
    else:
        ui.label('Session not found')

# Run the app
ui.run(host='0.0.0.0', port=8067)