Current section
Files
Jump to
Current section
Files
src/shimmer@builders@presence_builder.erl
-module(shimmer@builders@presence_builder).
-compile(no_auto_import).
-export([new/0, build/1, set_status/2, set_afk/2, set_since/2, set_activities/2, add_activity/2, add_activity_from_builder/2]).
-export_type([presence_builder/0]).
-type presence_builder() :: {presence_builder,
gleam@option:option(shimmer@types@presence:presence_status()),
list(shimmer@types@presence:presence_activity()),
gleam@option:option(boolean()),
gleam@option:option(integer())}.
-spec new() -> presence_builder().
new() ->
{presence_builder, none, [], none, none}.
-spec build(presence_builder()) -> {ok, shimmer@types@presence:presence()} |
{error, shimmer@internal@error:shimmer_error()}.
build(Self) ->
{ok,
{presence,
begin
_pipe = erlang:element(2, Self),
gleam@option:unwrap(_pipe, online)
end,
erlang:element(3, Self),
erlang:element(5, Self),
begin
_pipe@1 = erlang:element(4, Self),
gleam@option:unwrap(_pipe@1, false)
end}}.
-spec set_status(presence_builder(), shimmer@types@presence:presence_status()) -> presence_builder().
set_status(Self, Status) ->
erlang:setelement(2, Self, {some, Status}).
-spec set_afk(presence_builder(), boolean()) -> presence_builder().
set_afk(Self, Afk) ->
erlang:setelement(4, Self, {some, Afk}).
-spec set_since(presence_builder(), integer()) -> presence_builder().
set_since(Self, Since) ->
erlang:setelement(5, Self, {some, Since}).
-spec set_activities(
presence_builder(),
list(shimmer@types@presence:presence_activity())
) -> presence_builder().
set_activities(Self, Activities) ->
erlang:setelement(3, Self, Activities).
-spec add_activity(
presence_builder(),
shimmer@types@presence:presence_activity()
) -> presence_builder().
add_activity(Self, Activity) ->
erlang:setelement(3, Self, [Activity | erlang:element(3, Self)]).
-spec add_activity_from_builder(
presence_builder(),
shimmer@builders@presence_activity_builder:presence_activity_builder()
) -> {ok, presence_builder()} | {error, shimmer@internal@error:shimmer_error()}.
add_activity_from_builder(Self, Activity_builder) ->
case begin
_pipe = Activity_builder,
shimmer@builders@presence_activity_builder:build(_pipe)
end of
{error, _try} -> {error, _try};
{ok, Activity} ->
{ok,
erlang:setelement(3, Self, [Activity | erlang:element(3, Self)])}
end.