Compare commits
4 Commits
f3799add87
...
1ed9fa7d22
Author | SHA1 | Date |
---|---|---|
Bram | 1ed9fa7d22 | |
Bram | cacb876a95 | |
Bram | 20504d4a8b | |
Bram | a401c25a47 |
2
elm.json
2
elm.json
|
@ -3,7 +3,7 @@
|
|||
"name": "noordstar/elm-matrix-sdk-beta",
|
||||
"summary": "Matrix SDK for instant communication. Unstable beta version for testing only.",
|
||||
"license": "EUPL-1.1",
|
||||
"version": "3.3.1",
|
||||
"version": "3.4.0",
|
||||
"exposed-modules": [
|
||||
"Matrix",
|
||||
"Matrix.Event",
|
||||
|
|
|
@ -13,7 +13,6 @@ This module looks for the right homeserver address.
|
|||
|
||||
import Internal.Api.Chain as C
|
||||
import Internal.Api.Request as R
|
||||
import Internal.Config.Leaks as L
|
||||
import Internal.Config.Log exposing (log)
|
||||
import Internal.Config.Text as Text
|
||||
import Internal.Tools.Json as Json
|
||||
|
|
|
@ -204,7 +204,7 @@ getEventCoderV1 =
|
|||
[ "UnsignedData as described by the Matrix spec"
|
||||
, "https://spec.matrix.org/v1.10/client-server-api/#get_matrixclientv3roomsroomideventeventid"
|
||||
]
|
||||
, init = \a b c d -> Event.UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||
, init = \a b c d -> Event.UnsignedData { age = a, membership = Nothing, prevContent = b, redactedBecause = c, transactionId = d }
|
||||
}
|
||||
(Json.field.optional.value
|
||||
{ fieldName = "age"
|
||||
|
|
|
@ -13,7 +13,6 @@ This module allows the user to log in using a username and password.
|
|||
|
||||
import Internal.Api.Api as A
|
||||
import Internal.Api.Request as R
|
||||
import Internal.Config.Leaks as L
|
||||
import Internal.Config.Log exposing (log)
|
||||
import Internal.Config.Text as Text
|
||||
import Internal.Tools.Json as Json
|
||||
|
|
|
@ -13,7 +13,6 @@ This module helps send message events to rooms on the Matrix API.
|
|||
|
||||
import Internal.Api.Api as A
|
||||
import Internal.Api.Request as R
|
||||
import Internal.Config.Leaks as L
|
||||
import Internal.Config.Log exposing (log)
|
||||
import Internal.Config.Text as Text
|
||||
import Internal.Tools.Json as Json
|
||||
|
|
|
@ -12,7 +12,6 @@ This API module represents the /sync endpoint on Matrix spec version v1.11.
|
|||
-}
|
||||
|
||||
import FastDict as Dict exposing (Dict)
|
||||
import Internal.Api.Sync.V3 as PV
|
||||
import Internal.Config.Log exposing (Log, log)
|
||||
import Internal.Config.Text as Text
|
||||
import Internal.Filter.Timeline exposing (Filter)
|
||||
|
|
|
@ -29,7 +29,7 @@ will assume until overriden by the user.
|
|||
-}
|
||||
currentVersion : String
|
||||
currentVersion =
|
||||
"beta 3.3.1"
|
||||
"beta 3.4.0"
|
||||
|
||||
|
||||
{-| The default device name that is being communicated with the Matrix API.
|
||||
|
|
|
@ -189,21 +189,20 @@ ipv6RightParser n =
|
|||
|. P.symbol ":"
|
||||
|
||||
|
||||
{-| Convert an IPv6 address to a readable string format
|
||||
-}
|
||||
ipv6ToString : IPv6Address -> String
|
||||
ipv6ToString { front, back } =
|
||||
(if List.length front == 8 then
|
||||
front
|
||||
|
||||
else if List.length back == 8 then
|
||||
back
|
||||
|
||||
else
|
||||
List.concat [ front, [ "" ], back ]
|
||||
)
|
||||
|> List.intersperse ":"
|
||||
|> String.concat
|
||||
-- {-| Convert an IPv6 address to a readable string format
|
||||
-- -}
|
||||
-- ipv6ToString : IPv6Address -> String
|
||||
-- ipv6ToString { front, back } =
|
||||
-- (if List.length front == 8 then
|
||||
-- front
|
||||
-- else if List.length back == 8 then
|
||||
-- back
|
||||
-- else
|
||||
-- List.concat [ front, [ "" ], back ]
|
||||
-- )
|
||||
-- |> List.intersperse ":"
|
||||
-- |> String.concat
|
||||
|
||||
|
||||
portParser : Parser Int
|
||||
|
|
|
@ -477,13 +477,14 @@ iddict (Coder old) =
|
|||
Coder
|
||||
{ encoder = Iddict.encode old.encoder
|
||||
, decoder =
|
||||
D.andThen
|
||||
(\( out, logs ) ->
|
||||
D.succeed out
|
||||
|> Iddict.decoder
|
||||
|> D.map (\o -> ( o, logs ))
|
||||
Iddict.decoder old.decoder
|
||||
|> D.map
|
||||
(\out ->
|
||||
( Iddict.map (always Tuple.first) out
|
||||
, Iddict.values out
|
||||
|> List.concatMap Tuple.second
|
||||
)
|
||||
)
|
||||
old.decoder
|
||||
, docs = DocsIddict old.docs
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ import Internal.Config.Text as Text
|
|||
import Internal.Tools.Hashdict as Hashdict exposing (Hashdict)
|
||||
import Internal.Tools.Json as Json
|
||||
import Internal.Tools.Timestamp as Timestamp exposing (Timestamp)
|
||||
import Json.Encode as E
|
||||
import Set exposing (Set)
|
||||
import Time
|
||||
|
||||
|
|
|
@ -58,7 +58,6 @@ import Internal.Values.Event as Event exposing (Event)
|
|||
import Internal.Values.StateManager as StateManager exposing (StateManager)
|
||||
import Internal.Values.Timeline as Timeline exposing (Timeline)
|
||||
import Internal.Values.User exposing (User)
|
||||
import Json.Encode as E
|
||||
import Recursion
|
||||
import Recursion.Fold
|
||||
|
||||
|
|
|
@ -678,20 +678,21 @@ mostRecentFrom filter timeline ptr =
|
|||
{ ptr = ptr, visited = Set.empty }
|
||||
|
||||
|
||||
{-| Recount the Timeline's amount of filled batches. Since the Timeline
|
||||
automatically tracks the count on itself, this is generally exclusively used in
|
||||
specific scenarios like decoding JSON values.
|
||||
-}
|
||||
recountFilledBatches : Timeline -> Timeline
|
||||
recountFilledBatches (Timeline tl) =
|
||||
Timeline
|
||||
{ tl
|
||||
| filledBatches =
|
||||
tl.batches
|
||||
|> Iddict.values
|
||||
|> List.filter (\v -> v.events /= [])
|
||||
|> List.length
|
||||
}
|
||||
|
||||
-- {-| Recount the Timeline's amount of filled batches. Since the Timeline
|
||||
-- automatically tracks the count on itself, this is generally exclusively used in
|
||||
-- specific scenarios like decoding JSON values.
|
||||
-- -}
|
||||
-- recountFilledBatches : Timeline -> Timeline
|
||||
-- recountFilledBatches (Timeline tl) =
|
||||
-- Timeline
|
||||
-- { tl
|
||||
-- | filledBatches =
|
||||
-- tl.batches
|
||||
-- |> Iddict.values
|
||||
-- |> List.filter (\v -> v.events /= [])
|
||||
-- |> List.length
|
||||
-- }
|
||||
|
||||
|
||||
{-| Create a timeline with a single batch inserted. This batch is considered the
|
||||
|
|
|
@ -3,6 +3,7 @@ module Internal.Values.Vault exposing
|
|||
, VaultUpdate(..), update
|
||||
, rooms, fromRoomId, mapRoom, updateRoom
|
||||
, getAccountData, setAccountData
|
||||
, coder
|
||||
)
|
||||
|
||||
{-| This module hosts the Vault module. The Vault is the data type storing all
|
||||
|
@ -30,6 +31,11 @@ Rooms are environments where people can have a conversation with each other.
|
|||
|
||||
@docs getAccountData, setAccountData
|
||||
|
||||
|
||||
## JSON
|
||||
|
||||
@docs coder
|
||||
|
||||
-}
|
||||
|
||||
import FastDict as Dict exposing (Dict)
|
||||
|
@ -65,6 +71,8 @@ type VaultUpdate
|
|||
| SetUser User
|
||||
|
||||
|
||||
{-| Convert a Vault to and from a JSON object.
|
||||
-}
|
||||
coder : Json.Coder Vault
|
||||
coder =
|
||||
Json.object4
|
||||
|
|
|
@ -5,8 +5,6 @@ import Fuzz exposing (Fuzzer)
|
|||
import Internal.Config.Leaks as Leaks
|
||||
import Internal.Tools.Hashdict as Hashdict
|
||||
import Internal.Values.Context as Context exposing (Context, Versions)
|
||||
import Json.Decode as D
|
||||
import Json.Encode as E
|
||||
import Set
|
||||
import Test exposing (..)
|
||||
import Test.Tools.Timestamp as TestTimestamp
|
||||
|
@ -19,12 +17,15 @@ fuzzer =
|
|||
maybeString =
|
||||
Fuzz.maybe Fuzz.string
|
||||
in
|
||||
Fuzz.map8 (\a b c d e ( f, g ) ( h, i ) ( j, k ) -> Context a b c d e f g h i j k)
|
||||
Fuzz.map8 (\a b c d ( e, f ) ( g, h ) ( i, j ) ( k, l ) -> Context a b c d e f g h i j k l)
|
||||
(Fuzz.constant <| Hashdict.empty .value)
|
||||
maybeString
|
||||
maybeString
|
||||
maybeString
|
||||
(Fuzz.pair
|
||||
(Fuzz.maybe TestTimestamp.fuzzer)
|
||||
maybeString
|
||||
)
|
||||
(Fuzz.pair
|
||||
maybeString
|
||||
Fuzz.string
|
||||
|
|
|
@ -3,10 +3,7 @@ module Test.Values.Envelope exposing (..)
|
|||
import Expect
|
||||
import Fuzz exposing (Fuzzer)
|
||||
import Internal.Config.Default as Default
|
||||
import Internal.Tools.Json as Json
|
||||
import Internal.Values.Envelope as Envelope exposing (Envelope)
|
||||
import Json.Decode as D
|
||||
import Json.Encode as E
|
||||
import Test exposing (..)
|
||||
import Test.Values.Context as TestContext
|
||||
import Test.Values.Settings as TestSettings
|
||||
|
|
|
@ -41,16 +41,18 @@ fuzzerState =
|
|||
|
||||
unsignedDataFuzzer : Fuzzer Event.UnsignedData
|
||||
unsignedDataFuzzer =
|
||||
Fuzz.map4
|
||||
(\age prev redact trans ->
|
||||
Fuzz.map5
|
||||
(\age memb prev redact trans ->
|
||||
Event.UnsignedData
|
||||
{ age = age
|
||||
, membership = memb
|
||||
, prevContent = prev
|
||||
, redactedBecause = redact
|
||||
, transactionId = trans
|
||||
}
|
||||
)
|
||||
(Fuzz.maybe Fuzz.int)
|
||||
(Fuzz.maybe Fuzz.string)
|
||||
(Fuzz.maybe valueFuzzer)
|
||||
(Fuzz.maybe <| Fuzz.lazy (\_ -> fuzzer))
|
||||
(Fuzz.maybe Fuzz.string)
|
||||
|
|
|
@ -4,8 +4,6 @@ import Fuzz exposing (Fuzzer)
|
|||
import Internal.Values.Room as Room exposing (Room)
|
||||
import Json.Encode as E
|
||||
import Test exposing (..)
|
||||
import Test.Filter.Timeline as TestFilter
|
||||
import Test.Values.Event as TestEvent
|
||||
|
||||
|
||||
placeholderValue : E.Value
|
||||
|
|
|
@ -11,7 +11,7 @@ import Test exposing (..)
|
|||
|
||||
fuzzer : Fuzzer Settings
|
||||
fuzzer =
|
||||
Fuzz.map4 Settings
|
||||
Fuzz.map5 Settings
|
||||
(Fuzz.oneOf
|
||||
[ Fuzz.constant Default.currentVersion
|
||||
, Fuzz.string
|
||||
|
@ -22,6 +22,7 @@ fuzzer =
|
|||
, Fuzz.string
|
||||
]
|
||||
)
|
||||
(Fuzz.maybe Fuzz.string)
|
||||
(Fuzz.oneOf
|
||||
[ Fuzz.constant Default.removePasswordOnLogin
|
||||
, Fuzz.bool
|
||||
|
|
|
@ -6,6 +6,7 @@ import Internal.Filter.Timeline as Filter
|
|||
import Internal.Tools.Json as Json
|
||||
import Internal.Values.Timeline as Timeline exposing (Batch, Timeline)
|
||||
import Json.Decode as D
|
||||
import Json.Encode as E
|
||||
import Test exposing (..)
|
||||
import Test.Filter.Timeline as TestFilter
|
||||
|
||||
|
@ -250,7 +251,8 @@ suite =
|
|||
(\timeline ->
|
||||
timeline
|
||||
|> Json.encode Timeline.coder
|
||||
|> D.decodeValue (Json.decode Timeline.coder)
|
||||
|> E.encode 0
|
||||
|> D.decodeString (Json.decode Timeline.coder)
|
||||
|> Result.map Tuple.first
|
||||
|> Result.map (Timeline.mostRecentEvents Filter.pass)
|
||||
|> Expect.equal (Ok <| Timeline.mostRecentEvents Filter.pass timeline)
|
||||
|
|
Loading…
Reference in New Issue