diff --git a/app.py b/app.py index bb5d385..3cf67c2 100644 --- a/app.py +++ b/app.py @@ -145,13 +145,13 @@ def urls() -> Union[Response, str]: ) @app.route("/accounts", methods=["GET"]) +@cache.cached(timeout=60) def user_accounts() -> Union[Response, str]: """Renders the user accounts page.""" if not session.get("logged_in"): return redirect(url_for("home")) base_url = app.config["BASE_URL"] user_accounts_data = get_user_accounts(base_url, session["auth_credentials"]) - cache.delete_memoized(user_accounts) return render_template( "user_accounts.html", username=session["username"], @@ -172,7 +172,7 @@ def add_account() -> Union[Response, str]: if add_user_account( base_url, session["auth_credentials"], username, password, stream ): - cache.clear() + cache.delete_memoized(user_accounts) return redirect(url_for("user_accounts")) return render_template( @@ -189,6 +189,7 @@ def delete_account() -> Response: username = request.form.get("username") base_url = app.config["BASE_URL"] delete_user_account(base_url, session["auth_credentials"], stream, username) + cache.delete_memoized(user_accounts) return redirect(url_for("user_accounts")) @app.route("/validateAccount", methods=["POST"]) @@ -206,7 +207,10 @@ def validate_account() -> Tuple[Response, int]: json=request.get_json() ) response.raise_for_status() - return jsonify(response.json()), response.status_code + response_data = response.json() + if response_data.get("message") == "Account is valid and updated": + cache.delete_memoized(user_accounts) + return jsonify(response_data), response.status_code except requests.exceptions.RequestException as e: return jsonify({"error": str(e)}), 500 diff --git a/templates/user_accounts.html b/templates/user_accounts.html index 2402133..783ec5c 100644 --- a/templates/user_accounts.html +++ b/templates/user_accounts.html @@ -122,11 +122,17 @@ max_connections: maxConnections }), success: function(response) { + spinner.hide(); + buttonText.show(); if (response.message === 'Account is valid and updated') { - location.reload(); + button.prop('disabled', false); + button.removeClass('btn-info').addClass('btn-success'); + buttonText.text('Valid & Updated'); + setTimeout(function() { + button.removeClass('btn-success').addClass('btn-info'); + buttonText.text('Validate'); + }, 3000); } else { - spinner.hide(); - buttonText.show(); button.prop('disabled', false); button.removeClass('btn-info').addClass('btn-success'); buttonText.text('Valid');