From f246cc7c516b328bae29b23d311243c9d28fa9d3 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Wed, 26 Mar 2025 14:54:26 -0700 Subject: [PATCH] cleaned up init --- app/__init__.py | 6 ++--- app/assets/javascripts/socketio.js | 16 ++++---------- app/main/views/jobs.py | 35 ------------------------------ 3 files changed, 7 insertions(+), 50 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index f23480c9f..523d1c2e3 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -20,7 +20,6 @@ from flask import ( ) from flask.globals import request_ctx from flask_login import LoginManager, current_user -from flask_socketio import SocketIO from flask_talisman import Talisman from flask_wtf import CSRFProtect from flask_wtf.csrf import CSRFError @@ -122,7 +121,6 @@ from notifications_utils.url_safe_token import generate_token login_manager = LoginManager() csrf = CSRFProtect() talisman = Talisman() -socketio = SocketIO() # The current service attached to the request stack. current_service = LocalProxy(partial(getattr, request_ctx, "service")) @@ -159,11 +157,14 @@ def _csp(config): "https://www.googletagmanager.com", "https://www.google-analytics.com", "https://dap.digitalgov.gov", + "https://cdn.socket.io", ], "connect-src": [ "'self'", "https://gov-bam.nr-data.net", "https://www.google-analytics.com", + "http://localhost:6011", + "ws://localhost:6011" ], "style-src": ["'self'", asset_domain], "img-src": ["'self'", asset_domain, logo_domain], @@ -219,7 +220,6 @@ def create_app(application): init_govuk_frontend(application) init_jinja(application) - socketio.init_app(application, cors_allowed_origins=['http://localhost:6012']) for client in ( csrf, diff --git a/app/assets/javascripts/socketio.js b/app/assets/javascripts/socketio.js index 64d1bdcb4..44f06be0d 100644 --- a/app/assets/javascripts/socketio.js +++ b/app/assets/javascripts/socketio.js @@ -1,4 +1,4 @@ -const socket = io(); +const socket = io('http://localhost:6011'); const jobId = document.querySelector("[data-job-id]").dataset.jobId; socket.on('connect', () => { @@ -6,15 +6,7 @@ socket.on('connect', () => { }); - // Join a room - socket.emit("join", { room: `job-${jobId}` }); - console.log("🧠 Joined room:", `job-${jobId}`); - - // Listen for job updates - socket.on("job_update", function (data) { - const el = document.querySelector(`[data-key="${data.key}"]`); - if (el) { - el.textContent = "✅ Real-time update success!"; - el.classList.add("text-success"); // Add a class instead - } + socket.on('job_update', (data) => { + console.log('📡 Received job update:', data); + document.getElementById('status').innerText = `Job ${data.job_id}: ${data.status}`; }); diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 285f8d90f..f255eb67f 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -21,7 +21,6 @@ from app import ( format_datetime_table, notification_api_client, service_api_client, - socketio, ) from app.formatters import get_time_left, message_count_noun from app.main import main @@ -29,7 +28,6 @@ from app.main.forms import SearchNotificationsForm from app.models.job import Job from app.utils import parse_filter_args, set_status_filters from app.utils.csv import generate_notifications_csv -from flask_socketio import emit, SocketIO, send, join_room from app.utils.pagination import ( generate_next_dict, generate_previous_dict, @@ -59,7 +57,6 @@ def view_job(service_id, job_id): filter_args = parse_filter_args(request.args) filter_args["status"] = set_status_filters(filter_args) - return render_template( "views/jobs/job.html", job=job, @@ -118,38 +115,6 @@ def view_job_updates(service_id, job_id): return jsonify(**get_job_partials(job)) -# def emit_job_update(service_id, job, job_id): -# print("⚡️ Emitting job update for:", job_id) -# socketio.emit( -# "job_update", -# {"key": "status", "html": render_template("partials/jobs/status.html", job=job)}, -# room=f"job-{job_id}" -# ) - -@socketio.on("join") -def on_join(data): - room = data["room"] - join_room(room) - print(f"Client joined room {room}") - -@main.route("/services//jobs//test-socket-update") -def test_socket_update(service_id,job_id): - print(f"⚡️ Emitting job update for: {job_id}") - # Replace with a real job ID and service ID for testing - job = Job.from_id(job_id, service_id) - service_id=service_id - job_id = job_id - - # Call your emit function - socketio.emit( - "job_update", - { - "key": "status", - "html": "
✅ Real-time update success!
" - }, - room=f"job-{job_id}" # match the room name used in frontend - ) - return "Update sent!" @main.route("/services//notifications", methods=["GET", "POST"]) @main.route(