65 lines
1.7 KiB
Elm
65 lines
1.7 KiB
Elm
|
module Matrix.Room exposing
|
|||
|
( Room, mostRecentEvents
|
|||
|
, getAccountData
|
|||
|
)
|
|||
|
|
|||
|
{-|
|
|||
|
|
|||
|
|
|||
|
# Room
|
|||
|
|
|||
|
What is usually called a chat, a channel, a conversation or a group chat on
|
|||
|
other platforms, the term used in Matrix is a "room". A room is a conversation
|
|||
|
where a group of users talk to each other.
|
|||
|
|
|||
|
@docs Room, mostRecentEvents
|
|||
|
|
|||
|
This module exposes various functions that help you inspect various aspects of
|
|||
|
a room.
|
|||
|
|
|||
|
|
|||
|
## Account data
|
|||
|
|
|||
|
Account data is personal information that the user stores about this Matrix
|
|||
|
room. This may include information like:
|
|||
|
|
|||
|
- What type of room this is
|
|||
|
- A list of members in the room to ignore
|
|||
|
- A list of currently ongoing chess matches in the room
|
|||
|
- Personal notes the user may be taking
|
|||
|
|
|||
|
You may consider the account data as a `Dict String Json.Value` type. Account
|
|||
|
data is linked to the user account: other logged in devices can see the account
|
|||
|
data too, as the server synchronizes it, but the server shouldn´t show it to
|
|||
|
other users.
|
|||
|
|
|||
|
@docs getAccountData
|
|||
|
|
|||
|
-}
|
|||
|
|
|||
|
import Internal.Values.Envelope as Envelope
|
|||
|
import Internal.Values.Room as Internal
|
|||
|
import Json.Encode as E
|
|||
|
import Types exposing (Room(..))
|
|||
|
|
|||
|
|
|||
|
{-| The Matrix Room type representing a room that the Matrix user has joined.
|
|||
|
-}
|
|||
|
type alias Room =
|
|||
|
Types.Room
|
|||
|
|
|||
|
|
|||
|
{-| Get a piece of account data linked to a certain string key.
|
|||
|
-}
|
|||
|
getAccountData : String -> Room -> Maybe E.Value
|
|||
|
getAccountData key (Room room) =
|
|||
|
Envelope.extract (Internal.getAccountData key) room
|
|||
|
|
|||
|
|
|||
|
{-| Get a list of the most recent events sent in the room.
|
|||
|
-}
|
|||
|
mostRecentEvents : Room -> List Types.Event
|
|||
|
mostRecentEvents (Room room) =
|
|||
|
Envelope.mapList Internal.mostRecentEvents room
|
|||
|
|> List.map Types.Event
|