Compare commits

..

No commits in common. "1ed9fa7d22a04ad231a16a0880945d191f977665" and "f3799add8798cb593f657d62c8fbd1b7481bbf08" have entirely different histories.

19 changed files with 57 additions and 61 deletions

View File

@ -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.4.0",
"version": "3.3.1",
"exposed-modules": [
"Matrix",
"Matrix.Event",

View File

@ -13,6 +13,7 @@ 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

View File

@ -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, membership = Nothing, prevContent = b, redactedBecause = c, transactionId = d }
, init = \a b c d -> Event.UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
}
(Json.field.optional.value
{ fieldName = "age"

View File

@ -13,6 +13,7 @@ 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

View File

@ -13,6 +13,7 @@ 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

View File

@ -12,6 +12,7 @@ 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)

View File

@ -29,7 +29,7 @@ will assume until overriden by the user.
-}
currentVersion : String
currentVersion =
"beta 3.4.0"
"beta 3.3.1"
{-| The default device name that is being communicated with the Matrix API.

View File

@ -189,20 +189,21 @@ 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
-- {-| 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
else if List.length back == 8 then
back
else
List.concat [ front, [ "" ], back ]
)
|> List.intersperse ":"
|> String.concat
portParser : Parser Int

View File

@ -477,14 +477,13 @@ iddict (Coder old) =
Coder
{ encoder = Iddict.encode old.encoder
, decoder =
Iddict.decoder old.decoder
|> D.map
(\out ->
( Iddict.map (always Tuple.first) out
, Iddict.values out
|> List.concatMap Tuple.second
)
)
D.andThen
(\( out, logs ) ->
D.succeed out
|> Iddict.decoder
|> D.map (\o -> ( o, logs ))
)
old.decoder
, docs = DocsIddict old.docs
}

View File

@ -71,6 +71,7 @@ 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

View File

@ -58,6 +58,7 @@ 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

View File

@ -678,21 +678,20 @@ 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

View File

@ -3,7 +3,6 @@ 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
@ -31,11 +30,6 @@ Rooms are environments where people can have a conversation with each other.
@docs getAccountData, setAccountData
## JSON
@docs coder
-}
import FastDict as Dict exposing (Dict)
@ -71,8 +65,6 @@ type VaultUpdate
| SetUser User
{-| Convert a Vault to and from a JSON object.
-}
coder : Json.Coder Vault
coder =
Json.object4

View File

@ -5,6 +5,8 @@ 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
@ -17,15 +19,12 @@ fuzzer =
maybeString =
Fuzz.maybe Fuzz.string
in
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.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.constant <| Hashdict.empty .value)
maybeString
maybeString
(Fuzz.maybe TestTimestamp.fuzzer)
maybeString
(Fuzz.pair
(Fuzz.maybe TestTimestamp.fuzzer)
maybeString
)
(Fuzz.pair
maybeString
Fuzz.string

View File

@ -3,7 +3,10 @@ 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

View File

@ -41,18 +41,16 @@ fuzzerState =
unsignedDataFuzzer : Fuzzer Event.UnsignedData
unsignedDataFuzzer =
Fuzz.map5
(\age memb prev redact trans ->
Fuzz.map4
(\age 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)

View File

@ -4,6 +4,8 @@ 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

View File

@ -11,7 +11,7 @@ import Test exposing (..)
fuzzer : Fuzzer Settings
fuzzer =
Fuzz.map5 Settings
Fuzz.map4 Settings
(Fuzz.oneOf
[ Fuzz.constant Default.currentVersion
, Fuzz.string
@ -22,7 +22,6 @@ fuzzer =
, Fuzz.string
]
)
(Fuzz.maybe Fuzz.string)
(Fuzz.oneOf
[ Fuzz.constant Default.removePasswordOnLogin
, Fuzz.bool

View File

@ -6,7 +6,6 @@ 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
@ -251,8 +250,7 @@ suite =
(\timeline ->
timeline
|> Json.encode Timeline.coder
|> E.encode 0
|> D.decodeString (Json.decode Timeline.coder)
|> D.decodeValue (Json.decode Timeline.coder)
|> Result.map Tuple.first
|> Result.map (Timeline.mostRecentEvents Filter.pass)
|> Expect.equal (Ok <| Timeline.mostRecentEvents Filter.pass timeline)