Bonfire.Notify.WebPush (Bonfire v1.0.1-social-alpha.28)

View Source

Manages web push subscriptions and sends notifications using ExNudge.

Summary

Functions

Broadcasts a message to ALL active subscriptions (admin/testing use). Use with caution - this sends to every subscribed user.

Helper to format a push notification message.

Fetches all subscriptions for a list of user ids. Returns a map of user_id => list of ExNudge.Subscription structs. Only returns active subscriptions.

Removes a subscription by its database ID.

Removes a subscription by endpoint.

Sends a push notification to a single subscription by database ID. Useful for testing individual subscriptions.

Sends a web push notification to all subscriptions for a user or multiple users. Uses ExNudge to handle the actual sending.

Registers a push subscription for a user.

Functions

broadcast(message, opts \\ [])

Broadcasts a message to ALL active subscriptions (admin/testing use). Use with caution - this sends to every subscribed user.

ex_nudge_module()

format_push_message(title, body, opts \\ [])

Helper to format a push notification message.

generate_keys_env()

get_subscriptions(user_ids)

@spec get_subscriptions([String.t()]) :: %{
  optional(String.t()) => [ExNudge.Subscription.t()]
}

Fetches all subscriptions for a list of user ids. Returns a map of user_id => list of ExNudge.Subscription structs. Only returns active subscriptions.

list_all_subscriptions(active? \\ true)

list_subscriptions(user_ids)

remove_device(device_id)

remove_subscription(subscription_id)

Removes a subscription by its database ID.

remove_subscription_by_endpoint(endpoint)

Removes a subscription by endpoint.

send_push_notification(subscription_id, message, opts \\ [])

Sends a push notification to a single subscription by database ID. Useful for testing individual subscriptions.

send_web_push(user_ids, message, opts \\ [])

Sends a web push notification to all subscriptions for a user or multiple users. Uses ExNudge to handle the actual sending.

subscribe(user_id, data)

@spec subscribe(String.t(), map() | String.t()) ::
  {:ok, Bonfire.Notify.UserSubscription.t()}
  | {:error, Ecto.Changeset.t() | atom()}

Registers a push subscription for a user.