from flask_socketio import SocketIO, emit, join_room from flask import Flask, render_template, redirect, request, url_for, jsonify from util.room.registry import RoomRegistry from util.room.logic import generate_room_code ROOMS = set() app = Flask( __name__, template_folder="resource/template", static_folder="resource/static" ) socketio = SocketIO(app) registry = RoomRegistry() @app.route('/') def index(): return render_template("home.html") @app.route('/room/') def room(room_code): return render_template('room.html', room_code=room_code) @socketio.on('message') def handle_message(data): room_code = data['room'] sender = data['sender'] text = data['text'] room = registry.get_room(room_code) if room: room.add_message(sender, text) emit('message', {'sender': sender, 'text': text}, to=room_code) @app.route('/api/room', methods=['POST']) def create_room(): data = request.json code = generate_room_code() password = data.get("password") room = registry.create_room(code, password) return jsonify({"code": room.code}) @app.route('/api/room//messages') def get_messages(code): room = registry.get_room(code) if not room: return jsonify({"error": "Room not found"}), 404 return jsonify(room.messages) @socketio.on('join') def handle_join(data): room = data['room'] sender = data.get('sender', 'Anonymous') join_room(room) emit('message', { 'sender': 'System', 'text': f'{sender} has joined the room.' }, to=room) if __name__ == '__main__': socketio.run(app, debug=False, host='0.0.0.0', port=8080)