Moving logic for push notifications to the service
continuous-integration/drone/push Build is passing Details

master
parent 9c6e1acdb1
commit 163cbfd0ab

@ -3,7 +3,6 @@ import bson
from fastapi import APIRouter, HTTPException, status from fastapi import APIRouter, HTTPException, status
from fastapi.params import Depends from fastapi.params import Depends
import pymongo import pymongo
import json
from app.dto import FriendAddDTO from app.dto import FriendAddDTO
from app.models import HTTPError, User, Friend, PushSubscription from app.models import HTTPError, User, Friend, PushSubscription
@ -62,7 +61,8 @@ async def add_friend(friend_to_add: FriendAddDTO, current_user: User = Depends(g
detail="Friend already exists" detail="Friend already exists"
) )
friend_user = users_collection.find_one({"_id": ObjectId(friend["friend_user_id"])}) friend_user_id = ObjectId(friend["friend_user_id"])
friend_user = users_collection.find_one({"_id": friend_user_id})
# Test if user exists # Test if user exists
if not friend_user: if not friend_user:
@ -75,31 +75,13 @@ async def add_friend(friend_to_add: FriendAddDTO, current_user: User = Depends(g
friend["status"] = "pending" friend["status"] = "pending"
friend_id = friends_collection.insert_one(friend).inserted_id friend_id = friends_collection.insert_one(friend).inserted_id
if friend_user.get("push_subscriptions"): # Send notification to friend
print("friend user has subscriptions") payload = push_service.create_notification_payload(
# Si l'utilisateur a des abonnements push, envoyer une notification title="Nouvelle demande d'ami",
subscriptions = friend_user["push_subscriptions"] body=f"{current_user.username} vous a envoyé une demande d'ami."
)
# Pour chaque abonnement, envoyer une notification await push_service.send_notification(friend_user_id, payload);
for subscription_str in subscriptions:
try:
# Transformation de la chaîne JSON en dictionnaire Python
subscription_dict = json.loads(subscription_str)
print("Sending notification to subscription:", subscription_dict)
# Assurez-vous que l'abonnement est valide avant d'envoyer la notification
if subscription_dict and "endpoint" in subscription_dict:
# Créer le payload de notification
payload = push_service.create_notification_payload(
title="Nouvelle demande d'ami",
body=f"{current_user.username} vous a envoyé une demande d'ami.",
#icon="https://memorymap.fr/icons/icon-72x72.png"
)
await push_service.send_notification(subscription_dict, payload)
except json.JSONDecodeError as e:
print(f"Erreur lors du décodage de la souscription: {e}")
continue
return {"id": str(friend_id)} return {"id": str(friend_id)}
@friends_router.delete( @friends_router.delete(

Loading…
Cancel
Save