1
0
Fork 0
forked from s3lph/matemat

feat: add logout after purchase setting to productlist

This commit is contained in:
s3lph 2024-12-07 21:15:46 +01:00
parent 51adba2e25
commit 43ac5d656f
Signed by untrusted user: s3lph
GPG key ID: 0AA29A52FB33CFB5
5 changed files with 102 additions and 73 deletions

View file

@ -24,6 +24,8 @@ def buy():
# Fetch the authenticated user from the database
uid: int = session.get(session_id, 'authenticated_user')
user = db.get_user(uid)
if 'logout_after_purchase' in request.params:
db.change_user(user, agent=user, logout_after_purchase=request.params.logout_after_purchase != '0')
# Read the product from the database, identified by the product ID passed as request argument
if 'pid' in request.params:
pid = int(str(request.params.pid))

View file

@ -23,6 +23,8 @@ def deposit():
# Fetch the authenticated user from the database
uid: int = session.get(session_id, 'authenticated_user')
user = db.get_user(uid)
if 'logout_after_purchase' in request.params:
db.change_user(user, agent=user, logout_after_purchase=request.params.logout_after_purchase != '0')
if 'n' in request.params:
# Read the amount of cash to deposit from the request arguments
n = int(str(request.params.n))

View file

@ -21,6 +21,8 @@ def transfer():
# Fetch the authenticated user from the database
uid: int = session.get(session_id, 'authenticated_user')
user = db.get_user(uid)
if 'logout_after_purchase' in request.params:
db.change_user(user, agent=user, logout_after_purchase=request.params.logout_after_purchase != '0')
if 'target' not in request.params or 'n' not in request.params:
redirect('/')
return

View file

@ -10,6 +10,8 @@ const Mode = {
Transfer: 2,
}
var append_query_string = '';
let mode = Mode.Deposit;
let product_id = null;
let target_user = null;
@ -81,16 +83,16 @@ deposit_key = (k) => {
if (k == 'ok') {
switch (mode) {
case Mode.Deposit:
window.location.href = '/deposit?n=' + parseInt(deposit);
window.location.href = '/deposit?n=' + parseInt(deposit) + append_query_string;
break;
case Mode.Buy:
window.location.href = '/buy?pid=' + product_id + '&price=' + parseInt(deposit);
window.location.href = '/buy?pid=' + product_id + '&price=' + parseInt(deposit) + append_query_string;
break;
case Mode.Transfer:
if (target_user == null) {
return;
}
window.location.href = '/transfer?target=' + target_user + '&n=' + parseInt(deposit);
window.location.href = '/transfer?target=' + target_user + '&n=' + parseInt(deposit) + append_query_string;
break;
}
mode = Mode.Deposit;
@ -127,7 +129,9 @@ deposit_key = (k) => {
}
};
let list = document.getElementById('depositlist');
list.innerHTML = '';
list.appendChild(button);
list.appendChild(button_transfer);
let list = document.getElementById("depositlist");
for (let i = 0; i < list.children.length; ++i) {
list.removeChild(list.children[0]);
}
list.insertBefore(button_transfer, list.children[0]);
list.insertBefore(button, list.children[0]);

View file

@ -11,6 +11,10 @@
<div id="depositlist">
<a class="btn btn-primary me-2" href="/deposit?n=100">Deposit CHF 1</a>
<a class="btn btn-primary me-2" href="/deposit?n=1000">Deposit CHF 10</a>
<div class="form-check">
<input class="form-check-input" id="productlist-logout-after-purchase" type="checkbox"{% if authuser.logout_after_purchase %} checked="checked"{% endif %}>
<label class="form-check-label" for="productlist-logout-after-purchase">Logout after purchase</label>
</div>
</div>
<div id="deposit-wrapper">
<div id="deposit-input">
@ -72,6 +76,21 @@
{% endfor %}
</div>
<script>
document.getElementById("productlist-logout-after-purchase").onchange = (e) => {
var append_query_string = "&logout_after_purchase=" + (e.target.checked ? "1" : "0");
[].forEach.call(document.getElementsByClassName("card"), (a) => {
console.log(a.href);
if (a.href) {
let url = new URL(a.href);
url.searchParams.delete("logout_after_purchase");
url.searchParams.append("logout_after_purchase", e.target.checked ? "1" : "0");
a.href = url.href;
}
});
};
</script>
{{ super() }}
{% endblock %}