ExWapp.AppState.Engine.Builders (ExWapp v0.1.2)

Copy Markdown View Source

Builders for outgoing app-state mutations.

Each helper returns a logical patch description that mirrors one user action such as archiving a chat or updating a contact. The encoder later turns these maps into protobuf payloads and cryptographic MACs.

Summary

Functions

Builds an archive or unarchive mutation for a chat.

Builds a clear-chat mutation.

Builds a contact upsert mutation.

Builds a delete-chat mutation.

Builds a remove mutation for a contact.

Builds a mark-read or mark-unread mutation for a chat.

Builds a mute or unmute mutation for a chat.

Builds a pin or unpin mutation for a chat.

Types

message_range()

@type message_range() :: WAWebProtobufSyncAction.SyncActionMessageRange.t()

patch_info()

@type patch_info() :: %{
  type: String.t(),
  mutations: [map()],
  timestamp: integer() | nil
}

Functions

build_archive(jid, archived, last_msg_ts \\ nil)

@spec build_archive(String.t(), boolean(), integer() | nil) :: patch_info()

Builds an archive or unarchive mutation for a chat.

When archiving we also emit the unpin mutation that WhatsApp Web sends, so the local behavior stays aligned with the server's expectations.

build_clear_chat(jid, last_msg_ts \\ nil)

@spec build_clear_chat(String.t(), integer() | nil) :: patch_info()

Builds a clear-chat mutation.

build_contact(jid, full_name, first_name \\ nil)

@spec build_contact(String.t(), String.t(), String.t() | nil) :: patch_info()

Builds a contact upsert mutation.

build_delete_chat(jid, last_msg_ts \\ nil)

@spec build_delete_chat(String.t(), integer() | nil) :: patch_info()

Builds a delete-chat mutation.

build_delete_contact(jid)

@spec build_delete_contact(String.t()) :: patch_info()

Builds a remove mutation for a contact.

build_mark_read(jid, read, last_msg_ts \\ nil)

@spec build_mark_read(String.t(), boolean(), integer() | nil) :: patch_info()

Builds a mark-read or mark-unread mutation for a chat.

build_mute(jid, muted, mute_end_timestamp \\ -1)

@spec build_mute(String.t(), boolean(), integer()) :: patch_info()

Builds a mute or unmute mutation for a chat.

build_pin(jid, pinned)

@spec build_pin(String.t(), boolean()) :: patch_info()

Builds a pin or unpin mutation for a chat.