Compare commits
	
		
			4 Commits 
		
	
	
		
			f3799add87
			...
			1ed9fa7d22
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 1ed9fa7d22 | |
|  | cacb876a95 | |
|  | 20504d4a8b | |
|  | 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 )) | ||||
|                 ) | ||||
|                 old.decoder | ||||
|             Iddict.decoder old.decoder | ||||
|                 |> D.map | ||||
|                     (\out -> | ||||
|                         ( Iddict.map (always Tuple.first) out | ||||
|                         , Iddict.values out | ||||
|                             |> List.concatMap Tuple.second | ||||
|                         ) | ||||
|                     ) | ||||
|         , 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 | ||||
|         (Fuzz.maybe TestTimestamp.fuzzer) | ||||
|         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