22from flask import request
33from flask_jwt_extended import current_user
44from flask_jwt_extended import jwt_required
5+ from PyMatcha import redis
56from PyMatcha .models .like import Like
67from PyMatcha .models .match import Match
78from PyMatcha .models .user import get_user
1011from PyMatcha .utils .errors import NotFoundError
1112from PyMatcha .utils .success import Success
1213from PyMatcha .utils .success import SuccessOutput
14+ from PyMatcha .utils .tasks import set_user_superlikes
1315
1416like_bp = Blueprint ("like" , __name__ )
1517
1618
1719@like_bp .route ("/like/<uid>" , methods = ["POST" ])
18- @jwt_required
1920@validate_params ({"is_superlike" : bool })
21+ @jwt_required
2022def like_profile (uid ):
2123
2224 is_superlike = request .get_json ()["is_superlike" ]
2325
24- if is_superlike :
25- # TODO: Check that user has superlikes left today
26- pass
27-
2826 try :
2927 u = get_user (uid )
3028 except NotFoundError :
@@ -33,6 +31,15 @@ def like_profile(uid):
3331 raise BadRequestError ("Cannot like yourself." )
3432 if current_user .already_likes (u .id ):
3533 raise BadRequestError ("You already liked this person." )
34+
35+ if is_superlike :
36+ superlike_counter = int (redis .get (f"superlikes:{ current_user .id } " ))
37+ if superlike_counter <= 0 :
38+ set_user_superlikes .apply_async (current_user .id , amount = 5 , eta = 86400 )
39+ raise BadRequestError ("No more superlikes today !" , "Try later" )
40+ else :
41+ redis .decr (f"superlikes:{ current_user .id } " )
42+
3643 Like .create (liker_id = current_user .id , liked_id = u .id , is_superlike = is_superlike )
3744
3845 if u .already_likes (current_user .id ):
0 commit comments