noordstar/elm-matrix-sdk-beta/3.3.0

NOTE: the latest version is 3.6.1

Matrix

Matrix SDK

This library forms a mere basis from which an entire functional SDK is developed for the Matrix protocol.

It is generally quite unusual to regularly publish iterative beta versions on the public registry, but it is also generally quite unusual to exclusively support a monolithic public registry. (:

Vault

type alias Vault =
Vault

The Vault type stores all relevant information about the Matrix API.

If you make sure that the data type stays up-to-date, you can use it to explore the latest information about an account.

fromUserId : String -> Maybe Vault

Use a fully-fledged Matrix ID to connect.

case Matrix.fromUserId "@alice:example.org" of
    Just vault ->
        "We got a vault!"


    Nothing ->
        "Invalid username"
{ username : String
, host : String
, port_ : Maybe Int
}
-> Vault

Using a username and an address, create a Vault.

The username can either be the localpart or the full Matrix ID. For example, you can either insert alice or @alice:example.org.

Keeping the Vault up-to-date

type alias VaultUpdate =
VaultUpdate

The VaultUpdate type is the central type that keeps the Vault up-to-date.

update : VaultUpdate -> Vault -> Vault

Using new VaultUpdate information, update the Vault accordingly.

This allows us to change our perception of the Matrix environment: has anyone sent a new message? Did someone send us an invite for a new room?

Debugging

addAccessToken : String -> Vault -> Vault

Adds a custom access token to the Vault. This can be done if no password is provided or known.

{ content : Value
, eventType : String
, roomId : String
, toMsg : VaultUpdate -> msg
, transactionId : String
, vault : Vault
}
-> Cmd msg

Send a message event to a room.

This function can be used in a scenario where the user does not want to sync the client, or is unable to. This function doesn't check whether the given room exists and the user is able to send a message to, and instead just sends the request to the Matrix API.