From fa52c6e09ce91c7eb4356607a0d0181fd95023f7 Mon Sep 17 00:00:00 2001 From: Callum Brown Date: Thu, 13 Jul 2023 12:46:21 +0100 Subject: [PATCH 1/2] Change Credentials to Vault/IVault in docstrings References to `Credentials` leftover from e62b6a09c4b4bd9c7af3b3b2fa11bce6b49ad00c --- src/Internal/Api/Chain.elm | 2 +- src/Internal/Values/Vault.elm | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Internal/Api/Chain.elm b/src/Internal/Api/Chain.elm index bcb5ba7..9e607b0 100644 --- a/src/Internal/Api/Chain.elm +++ b/src/Internal/Api/Chain.elm @@ -26,7 +26,7 @@ superior ASCII snake model.) Every task will add another value to an extensible record, which can be used by later tasks in the chain. Additionally, every subtask can leave a `VaultUpdate` -type as a message to the Credentials to update certain information. +type as a message to the Vault to update certain information. -} diff --git a/src/Internal/Values/Vault.elm b/src/Internal/Values/Vault.elm index af7b7c8..a6f23c3 100644 --- a/src/Internal/Values/Vault.elm +++ b/src/Internal/Values/Vault.elm @@ -1,6 +1,6 @@ module Internal.Values.Vault exposing (..) -{-| The Credentials type is the keychain of the Matrix SDK. +{-| The IVault (Internal Vault) type is the keychain of the Matrix SDK. It handles all communication with the homeserver. -} @@ -51,7 +51,7 @@ getInvites (IVault data) = data.invites -{-| Get a room from the Credentials type by the room's id. +{-| Get a room from the IVault type by the room's id. -} getRoomById : String -> IVault -> Maybe IRoom getRoomById roomId (IVault cred) = @@ -72,7 +72,7 @@ getSince (IVault { since }) = since -{-| Create new empty Credentials. +{-| Create new empty IVault. -} init : IVault init = @@ -102,7 +102,7 @@ insertAccountData { content, eventType, roomId } (IVault data) = IVault { data | accountData = Dict.insert eventType content data.accountData } -{-| Add a new room to the Credentials type. If a room with this id already exists, it is overwritten. +{-| Add a new room to the IVault type. If a room with this id already exists, it is overwritten. This function can hence also be used as an update function for rooms. From ef9a22bde5b37462d5bff50af52bf54fe03e48fe Mon Sep 17 00:00:00 2001 From: Callum Brown Date: Thu, 13 Jul 2023 14:14:56 +0100 Subject: [PATCH 2/2] Update examples in Room docstrings after refactor The examples given for safe and unsafe multiple message/event sending are updated to match the call signatures introduced in 770423bcd2f3336b1ed553976e94eefd108652a6 --- src/Matrix/Room.elm | 68 ++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/src/Matrix/Room.elm b/src/Matrix/Room.elm index 09dcf75..1c9bcac 100644 --- a/src/Matrix/Room.elm +++ b/src/Matrix/Room.elm @@ -168,10 +168,7 @@ roomId = {-| Send an unformatted text message to a room. - task = - room - |> sendMessage "Hello, world!" - |> Task.attempt onResponse + sendMessage { room = someRoom, onResponse = MessageSent, text = "Hello!" } **Hint:** are you trying to send multiple messages at the same time? You might want to use `sendMessages` instead. @@ -188,17 +185,27 @@ This way, you will lose messages! If you're intending to send the same message multiple times, this function will emphasize that these messages are not the same. + data = { room = someRoom, onResponse = MessageSent, text = "Hello!" } + -- SAFE - Task.sequence [ sendMessage "Hello, world!", sendMessage "hi mom!" ] + Cmd.batch [ sendMessage data, sendMessage { data | text = "hi mom!" } ] -- NOT SAFE - Task.sequence [ sendMessage "Hello, world!", sendMessage "Hello world!" ] + Cmd.batch [ sendMessage data, sendMessage data ] -- SAFE - Task.sequence <| sendMessages [ "Hello, world!", "hi mom!" ] + sendMessages + { room = someRoom + , textPieces = [ "Hello!", "hi mom!" ] + , onResponse = MessageSent + } -- SAFE - Task.sequence <| sendMessages [ "Hello, world!", "Hello, world!" ] + sendMessages + { room = someRoom + , textPieces = [ "Hello!", "Hello!" ] + , onResponse = MessageSent + } -} sendMessages : { room : Room, textPieces : List String, onResponse : VaultUpdate -> msg } -> Cmd msg @@ -210,18 +217,19 @@ sendMessages { room, textPieces, onResponse } = Keep in mind that this function is not safe to use if you're sending exactly the same messages multiple times: + data = + { content = E.object [] + , eventType = "com.example.foo" + , room = someRoom + , stateKey = Nothing + , onResponse = EventSent + } + -- SAFE - Task.sequence - [ sendOneEvent { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - , sendOneEvent { content = E.int 0, eventType = "com.example.foo", stateKey = Nothing } room - ] + Cmd.batch [ sendOneEvent data , sendOneEvent { data | content = E.int 0 } ] -- NOT SAFE - Task.sequence - [ sendOneEvent { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - , sendOneEvent { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - ] - + Cmd.batch [ sendOneEvent data , sendOneEvent data ] -} sendOneEvent : { content : D.Value, eventType : String, room : Room, stateKey : Maybe String, onResponse : VaultUpdate -> msg } -> Cmd msg sendOneEvent = @@ -236,17 +244,25 @@ This function ensures that every messages is treated separately. Keep in mind that this function doesn't send the events in order, it just makes them safe to send at the same time. -- NOT SAFE - [ sendOneEvent { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - , sendOneEvent { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - ] - |> Task.sequence + data = + { content = E.object [] + , eventType = "com.example.foo" + , room = someRoom + , stateKey = Nothing + , onResponse = EventSent + } + + Cmd.batch [ sendOneEvent data , sendOneEvent data ] -- SAFE - [ { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - , { content = E.object [], eventType = "com.example.foo", stateKey = Nothing } room - ] - |> sendMultipleEvents - |> Task.sequence + data = + { content = E.object [] + , eventType = "com.example.foo" + , stateKey = Nothing + , onResponse = EventSent + } + + sendMultipleEvents [ data, data ] someRoom -} sendMultipleEvents : List { content : D.Value, eventType : String, stateKey : Maybe String, onResponse : VaultUpdate -> msg } -> Room -> Cmd msg