You've already forked tribes-plugin-sender
forked from tribes/tribes-plugin-template
f8e2bfaada
Move Sender modules under TribeOne.TribesPlugin.Sender and replace the Aether-specific chat integration with the public chat@1 surface contract.
42 lines
1.5 KiB
Elixir
42 lines
1.5 KiB
Elixir
defmodule TribeOne.TribesPlugin.Sender.Management.Stream do
|
|
@moduledoc false
|
|
|
|
alias TribeOne.TribesPlugin.Sender.Management
|
|
alias TribeOne.TribesPlugin.Sender.Streaming
|
|
|
|
def get_default(context, params) do
|
|
ash_opts = Management.ash_opts(context)
|
|
slug = Map.get(params, "slug", Management.default_stream_slug())
|
|
|
|
case Management.get_default_stream(slug: slug, ash_opts: ash_opts) do
|
|
{:ok, nil} -> {:ok, %{"ok" => true, "stream" => nil}}
|
|
{:ok, stream} -> {:ok, %{"ok" => true, "stream" => Management.stream_payload(stream)}}
|
|
{:error, _reason} = error -> error
|
|
end
|
|
end
|
|
|
|
def ensure_default(context, params) do
|
|
ash_opts = Management.ash_opts(context)
|
|
|
|
case Management.ensure_default_stream(params, ash_opts: ash_opts) do
|
|
{:ok, stream} -> {:ok, %{"ok" => true, "stream" => Management.stream_payload(stream)}}
|
|
{:error, _reason} = error -> error
|
|
end
|
|
end
|
|
|
|
def update_default(context, params) do
|
|
ash_opts = Management.ash_opts(context)
|
|
slug = Map.get(params, "slug", Management.default_stream_slug())
|
|
|
|
with {:ok, stream} when not is_nil(stream) <-
|
|
Management.get_default_stream(slug: slug, ash_opts: ash_opts),
|
|
{:ok, updated} <-
|
|
Streaming.update_stream(stream, Management.normalize_stream_attrs(params), ash_opts) do
|
|
{:ok, %{"ok" => true, "stream" => Management.stream_payload(updated)}}
|
|
else
|
|
{:ok, nil} -> {:error, :stream_not_found}
|
|
{:error, _reason} = error -> error
|
|
end
|
|
end
|
|
end
|