View Source Bonfire.Social.Boosts (Bonfire v0.9.11-social-beta.6)

Mutate, query, and federate boosts (re-sharing an activity or object).

Boosts are implemented on top of the Bonfire.Data.Edges.Edge schema (see Bonfire.Social.Edges for shared functions)

Summary

Functions

Publishes a federated activity for a boost action.

Receives and processes a federated boost activity.

Boosts an object for a user.

Checks if a user has boosted an object.

Counts boosts based on filters and options.

Gets the date of the latest boost by a user for an object.

Retrieves a boost edge by subject and object.

Retrieves a boost edge, raising an error if not found.

Lists boosts by a specific user.

Lists boosts by the current user.

Lists boosts of a specific object.

Lists boosts with pagination.

Removes a boost from an object for a user, if one exists

Functions

ap_publish_activity(subject, arg2, boost)

Publishes a federated activity for a boost action.

Examples

iex> Bonfire.Social.Boosts.ap_publish_activity(subject, :create, boost)
{:ok, _activity}

ap_receive_activity(creator, activity, object)

Receives and processes a federated boost activity.

Examples

iex> Bonfire.Social.Boosts.ap_receive_activity(creator, activity, object)
{:ok, _boost}

boost(booster, boosted, opts \\ [])

Boosts an object for a user.

Examples

iex> Bonfire.Social.Boosts.boost(user, object)
{:ok, %Bonfire.Data.Social.Boost{}}

boosted?(user, object)

Checks if a user has boosted an object.

Examples

iex> Bonfire.Social.Boosts.boosted?(user, object)
true

count(filters \\ [], opts \\ [])

Counts boosts based on filters and options.

Examples

iex> Bonfire.Social.Boosts.count([subjects: user_id], [])
5 # user made 5 boosts, across all objects

iex> Bonfire.Social.Boosts.count(user, object)
3 # user boosted object 3 times

iex> Bonfire.Social.Boosts.count(object, [])
10 # object was boosted 5 times, across all users

date_last_boosted(user, object)

Gets the date of the latest boost by a user for an object.

Examples

iex> Bonfire.Social.Boosts.date_last_boosted(user, object)
~U[2023-07-29 12:34:56Z]

federation_module()

Callback implementation for Bonfire.Federate.ActivityPub.FederationModules.federation_module/0.

get(subject, object, opts \\ [])

Retrieves a boost edge by subject and object.

Examples

iex> Bonfire.Social.Boosts.get(subject, object)
{:ok, %Bonfire.Data.Social.Boost{}}

get!(subject, object, opts \\ [])

Retrieves a boost edge, raising an error if not found.

list_by(by_user, opts \\ [])

Lists boosts by a specific user.

Examples

iex> Bonfire.Social.Boosts.list_by(user_id)
[%Bonfire.Data.Social.Boost{}, ...]

list_my(opts)

Lists boosts by the current user.

Examples

iex> Bonfire.Social.Boosts.list_my(current_user: me)
[%Bonfire.Data.Social.Boost{}, ...]

list_of(id, opts \\ [])

Lists boosts of a specific object.

Examples

iex> Bonfire.Social.Boosts.list_of(object_id)
[%Bonfire.Data.Social.Boost{}, ...]

list_paginated(filters, opts \\ [])

Lists boosts with pagination.

Examples

iex> Bonfire.Social.Boosts.list_paginated([subjects: user_id], [limit: 10])
%{edges: [%Bonfire.Data.Social.Boost{}, ...], page_info: %{...}}

maybe_boost(booster, boosted, opts \\ [])

query(filters, opts)

query_module()

Callback implementation for Bonfire.Common.ContextModule.query_module/0.

schema_module()

Callback implementation for Bonfire.Common.ContextModule.schema_module/0.

unboost(booster, boosted, opts \\ [])

Removes a boost from an object for a user, if one exists

Examples

iex> Bonfire.Social.Boosts.unboost(user, object)
{:ok, _}