Skip to main content

src/rocksky@player.erl

-module(rocksky@player).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/player.gleam").
-export([with_player_id/2, get_currently_playing/0, with_actor/2, get_queue/0, play/0, pause/0, next/0, previous/0, seek/1, play_file/1, play_directory/1, with_shuffle/2, with_recurse/2, with_position/2, add_items_to_queue/1]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(" `app.rocksky.player.*` — control the user's local player.\n").

-file("src/rocksky/player.gleam", 8).
?DOC(" Scope a player request to a specific player instance.\n").
-spec with_player_id(rocksky:request(HVK), binary()) -> rocksky:request(HVK).
with_player_id(Req, Id) ->
    rocksky:param(Req, <<"playerId"/utf8>>, Id).

-file("src/rocksky/player.gleam", 14).
?DOC(
    " `app.rocksky.player.getCurrentlyPlaying`. Add `with_actor` to fetch another\n"
    " user's player state if you have permission.\n"
).
-spec get_currently_playing() -> rocksky:request(gleam@dynamic:dynamic_()).
get_currently_playing() ->
    rocksky:'query'(
        <<"app.rocksky.player.getCurrentlyPlaying"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/player.gleam", 18).
-spec with_actor(rocksky:request(HVO), binary()) -> rocksky:request(HVO).
with_actor(Req, Actor) ->
    rocksky:param(Req, <<"actor"/utf8>>, Actor).

-file("src/rocksky/player.gleam", 23).
?DOC(" `app.rocksky.player.getPlaybackQueue`.\n").
-spec get_queue() -> rocksky:request(gleam@dynamic:dynamic_()).
get_queue() ->
    rocksky:'query'(
        <<"app.rocksky.player.getPlaybackQueue"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/player.gleam", 28).
?DOC(" `app.rocksky.player.play`.\n").
-spec play() -> rocksky:request(gleam@dynamic:dynamic_()).
play() ->
    rocksky:procedure(
        <<"app.rocksky.player.play"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/player.gleam", 33).
?DOC(" `app.rocksky.player.pause`.\n").
-spec pause() -> rocksky:request(gleam@dynamic:dynamic_()).
pause() ->
    rocksky:procedure(
        <<"app.rocksky.player.pause"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/player.gleam", 38).
?DOC(" `app.rocksky.player.next`.\n").
-spec next() -> rocksky:request(gleam@dynamic:dynamic_()).
next() ->
    rocksky:procedure(
        <<"app.rocksky.player.next"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/player.gleam", 43).
?DOC(" `app.rocksky.player.previous`.\n").
-spec previous() -> rocksky:request(gleam@dynamic:dynamic_()).
previous() ->
    rocksky:procedure(
        <<"app.rocksky.player.previous"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/player.gleam", 48).
?DOC(" `app.rocksky.player.seek` — `position` is in milliseconds.\n").
-spec seek(integer()) -> rocksky:request(gleam@dynamic:dynamic_()).
seek(Position) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.player.seek"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:int_param(_pipe, <<"position"/utf8>>, Position).

-file("src/rocksky/player.gleam", 54).
?DOC(" `app.rocksky.player.playFile` — play a single file by id.\n").
-spec play_file(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
play_file(File_id) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.player.playFile"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"fileId"/utf8>>, File_id).

-file("src/rocksky/player.gleam", 60).
?DOC(" `app.rocksky.player.playDirectory` — play a directory of files.\n").
-spec play_directory(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
play_directory(Directory_id) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.player.playDirectory"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"directoryId"/utf8>>, Directory_id).

-file("src/rocksky/player.gleam", 65).
-spec with_shuffle(rocksky:request(HVZ), boolean()) -> rocksky:request(HVZ).
with_shuffle(Req, Shuffle) ->
    rocksky:bool_param(Req, <<"shuffle"/utf8>>, Shuffle).

-file("src/rocksky/player.gleam", 69).
-spec with_recurse(rocksky:request(HWC), boolean()) -> rocksky:request(HWC).
with_recurse(Req, Recurse) ->
    rocksky:bool_param(Req, <<"recurse"/utf8>>, Recurse).

-file("src/rocksky/player.gleam", 73).
-spec with_position(rocksky:request(HWF), integer()) -> rocksky:request(HWF).
with_position(Req, Position) ->
    rocksky:int_param(Req, <<"position"/utf8>>, Position).

-file("src/rocksky/player.gleam", 78).
?DOC(" `app.rocksky.player.addItemsToQueue`.\n").
-spec add_items_to_queue(list(binary())) -> rocksky:request(gleam@dynamic:dynamic_()).
add_items_to_queue(Items) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.player.addItemsToQueue"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:repeated_param(_pipe, <<"items"/utf8>>, Items).