Files
echo-mvp/main.py
2025-06-11 03:47:42 +12:00

81 lines
1.9 KiB
Python

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('/settings')
def settings():
return render_template("settings.html")
@app.route('/room/<room_code>')
def room(room_code):
return render_template('room.html', room_code=room_code)
@app.route('/api/room/<code>', methods=['GET'])
def check_room(code):
room = registry.get_room(code)
if not room:
return jsonify({"error": "Room not found"}), 404
return jsonify({"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/<code>/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)