aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <l.leblansch@gmail.com>2021-04-21 15:13:10 +0200
committerlonkaars <l.leblansch@gmail.com>2021-04-21 15:13:10 +0200
commit4254f328f9e85fcb838815bbee1ccedbcb41daf4 (patch)
treea80fd48b956f7ad0ecf1e5ccb7b5cbc044ace6ea
parentdadc722875b2095bd3d6c4ab628a644197b85f7b (diff)
dark mode notifications + /api/social/list endpoints working
-rw-r--r--api/social/list.py67
-rw-r--r--api/social/request_list.py27
-rw-r--r--components/notificationsArea.tsx4
-rw-r--r--styles/notifications.css3
4 files changed, 72 insertions, 29 deletions
diff --git a/api/social/list.py b/api/social/list.py
new file mode 100644
index 0000000..ce0f4d9
--- /dev/null
+++ b/api/social/list.py
@@ -0,0 +1,67 @@
+from flask import Blueprint, request
+from db import cursor, connection
+from hierarchy import auth_required
+from user.info import format_user
+import time
+
+
+def format_user_list(user_ids, viewer=None):
+ formatted_request_list = []
+
+ for user_1_id in user_ids:
+ formatted_request_list.append(format_user(user_1_id, viewer))
+
+ return formatted_request_list
+
+
+requests = Blueprint('requests', __name__)
+
+
+@requests.route("/requests")
+@auth_required("user")
+def route(user_2_id):
+ # get a list of friend requests
+ request_list = cursor.execute(
+ "select user_1_id from social where user_2_id = ? and type = \"outgoing\"",
+ [user_2_id]
+ ).fetchall()
+
+ return {"requests": format_user_list([q[0] for q in request_list])}, 200
+
+
+friends = Blueprint('friends', __name__)
+
+
+@friends.route("/friends")
+@auth_required("user")
+def route(user_id):
+ # get a list of friend requests
+ request_list = cursor.execute(
+ "select user_1_id, user_2_id from social where (user_1_id = ? or user_2_id = ?) and type = \"friendship\"",
+ [user_id, user_id]
+ ).fetchall()
+
+ friend_id_list = [q[0] if q[1] == user_id else q[1] for q in request_list]
+
+ return {"friends": format_user_list(friend_id_list)}, 200
+
+
+blocked = Blueprint('blocked', __name__)
+
+
+@blocked.route("/blocked")
+@auth_required("user")
+def route(user_id):
+ # get a list of friend requests
+ request_list = cursor.execute(
+ "select user_2_id from social where user_1_id = ? and type = \"block\"",
+ [user_id]
+ ).fetchall()
+
+ return {"blocked": format_user_list([q[0] for q in request_list])}, 200
+
+
+dynamic_routes = [
+ ["/social/list", requests], ["/social/list", friends],
+ ["/social/list", blocked]
+]
diff --git a/api/social/request_list.py b/api/social/request_list.py
deleted file mode 100644
index f991ce2..0000000
--- a/api/social/request_list.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from flask import Blueprint, request
-from db import cursor, connection
-from hierarchy import auth_required
-from user.info import format_user
-import time
-
-requests = Blueprint('requests', __name__)
-
-
-@requests.route("/requests")
-@auth_required("user")
-def route(user_2_id):
- # get a list of friend requests
- request_list = cursor.execute(
- "select user_1_id from social where user_2_id = ? and type = \"outgoing\"",
- [user_2_id]
- ).fetchall()
-
- # get user_id for each result to prevent repeat user/info requests
- formatted_request_list = []
- for user_1_id in [q[0] for q in request_list]:
- formatted_request_list.append(format_user(user_1_id))
-
- return {"requests": formatted_request_list}, 200
-
-
-dynamic_route = ["/social/list", requests]
diff --git a/components/notificationsArea.tsx b/components/notificationsArea.tsx
index 8ee554a..d000669 100644
--- a/components/notificationsArea.tsx
+++ b/components/notificationsArea.tsx
@@ -35,7 +35,7 @@ export function NotificationsArea(props: {
setPreviousMessages(messages);
});
- return props.visible && <Bubble className='notificationsArea bg-700 pad-l'>
+ return props.visible && <Bubble className='notificationsArea bg-800 pad-l'>
<h2 className='title'>Meldingen</h2>
<div className='inner round-t'>
{props.gameInvites?.map(game => <GameInvite hide={props.rerender} game={game} />)}
@@ -55,7 +55,7 @@ function Acceptable(props: {
onAccept?: () => void;
onDeny?: () => void;
}) {
- return <Vierkant className='acceptable bg-800 round-t pad-m fullwidth'>
+ return <Vierkant className='acceptable bg-700 round-t pad-m fullwidth'>
<div className='posrel'>
{props.children}
<div className='sidebyside buttons'>
diff --git a/styles/notifications.css b/styles/notifications.css
index db1598d..02170ae 100644
--- a/styles/notifications.css
+++ b/styles/notifications.css
@@ -8,6 +8,9 @@ a.notificationsArea {
height: 450px;
}
+html.dark a.notificationsArea { background-color: var(--gray-700); }
+html.dark .notificationsArea .acceptable { background-color: var(--gray-800); }
+
a.notificationsArea .tuitje {
left: var(--spacing-medium);
bottom: 86px;