FEAT(notifications): accept optional click_url in push_user #13

Merged
Ghasemi merged 1 commit from feature/notification-client-update into master 2026-08-26 03:07:15 -04:00

View file

@ -54,11 +54,12 @@ class _PushBody:
these fields are sent (mirrors the advertising service's client). these fields are sent (mirrors the advertising service's client).
""" """
def __init__(self, title: str, message: str, priority: int, extras): def __init__(self, title: str, message: str, priority: int, extras, click_url=None):
self._title = title self._title = title
self._message = message self._message = message
self._priority = priority self._priority = priority
self._extras = extras self._extras = extras
self._click_url = click_url
def to_dict(self) -> dict: def to_dict(self) -> dict:
return { return {
@ -66,16 +67,20 @@ class _PushBody:
"message": self._message, "message": self._message,
"priority": self._priority, "priority": self._priority,
"extras": self._extras, "extras": self._extras,
"click_url": self._click_url,
} }
def push_user(user_uuid, title: str, message: str, priority: int = 5, extras=None): def push_user(user_uuid, title: str, message: str, priority: int = 5, extras=None, click_url=None):
""" """
Send a push notification to a single user via the gooyal notifications Send a push notification to a single user via the gooyal notifications
service. Requires the `notifications.application.push:send` scope on service. Requires the `notifications.application.push:send` scope on
this app's OAuth2 client credentials. Raises on failure — callers this app's OAuth2 client credentials. Raises on failure — callers
decide whether a down notifications service should be swallowed. decide whether a down notifications service should be swallowed.
`click_url` is optional — most notifications aren't clickable. When set,
the notifications service embeds it as the tap destination.
""" """
client = get_client() client = get_client()
body = _PushBody(title=title, message=message, priority=priority, extras=extras) body = _PushBody(title=title, message=message, priority=priority, extras=extras, click_url=click_url)
return push_application_application_create.sync(user_uuid=str(user_uuid), client=client, body=body) return push_application_application_create.sync(user_uuid=str(user_uuid), client=client, body=body)