Packages

WhatsApp Web API client for Elixir. Full-featured port of Baileys with end-to-end Signal Protocol encryption, multi-device support, groups, communities, media, newsletters, and native BEAM fault tolerance.

Current section

Files

Jump to
baileys_ex lib baileys_ex feature label.ex
Raw

lib/baileys_ex/feature/label.ex

defmodule BaileysEx.Feature.Label do
@moduledoc """
Label CRUD and association helpers backed by Baileys app-state patches.
"""
alias BaileysEx.Feature.AppState
@doc "Create or edit a label via the `addLabel` patch shape."
@spec add_or_edit(term(), map()) :: {:ok, map()} | {:error, term()}
def add_or_edit(conn, %{} = label), do: AppState.push_patch(conn, :add_label, "", label)
@doc "Associate a label with a chat."
@spec add_to_chat(term(), String.t(), String.t()) :: {:ok, map()} | {:error, term()}
def add_to_chat(conn, jid, label_id) when is_binary(jid) and is_binary(label_id) do
AppState.push_patch(conn, :add_chat_label, jid, %{label_id: label_id})
end
@doc "Remove a label association from a chat."
@spec remove_from_chat(term(), String.t(), String.t()) :: {:ok, map()} | {:error, term()}
def remove_from_chat(conn, jid, label_id) when is_binary(jid) and is_binary(label_id) do
AppState.push_patch(conn, :remove_chat_label, jid, %{label_id: label_id})
end
@doc "Associate a label with a specific message."
@spec add_to_message(term(), String.t(), String.t(), String.t()) ::
{:ok, map()} | {:error, term()}
def add_to_message(conn, jid, message_id, label_id)
when is_binary(jid) and is_binary(message_id) and is_binary(label_id) do
AppState.push_patch(conn, :add_message_label, jid, %{
message_id: message_id,
label_id: label_id
})
end
@doc "Remove a label association from a specific message."
@spec remove_from_message(term(), String.t(), String.t(), String.t()) ::
{:ok, map()} | {:error, term()}
def remove_from_message(conn, jid, message_id, label_id)
when is_binary(jid) and is_binary(message_id) and is_binary(label_id) do
AppState.push_patch(conn, :remove_message_label, jid, %{
message_id: message_id,
label_id: label_id
})
end
end