Add settings to Vault type
							parent
							
								
									f5f5c14e10
								
							
						
					
					
						commit
						2cb21dc102
					
				|  | @ -1,6 +1,7 @@ | |||
| module Internal.Api.Snackbar exposing (..) | ||||
| 
 | ||||
| {-| The snackbar module helps wraps relevant credentials, access tokens, refresh tokens and more around internal types. | ||||
| {-| The snackbar module helps wraps relevant credentials, access tokens,  | ||||
| refresh tokens and more around internal types. | ||||
| 
 | ||||
| Vault, Room and Event types don't need access to API tokens, | ||||
| but a user may way to redact an event, leave a room or reject an invite. | ||||
|  | @ -14,6 +15,7 @@ without needing to update every data type whenever any of the tokens change. | |||
| 
 | ||||
| import Dict exposing (Dict) | ||||
| import Internal.Api.Versions.V1.Versions as V | ||||
| import Internal.Config.DefaultSettings as DS | ||||
| import Internal.Tools.LoginValues as Login exposing (AccessToken(..)) | ||||
| import Task exposing (Task) | ||||
| 
 | ||||
|  | @ -27,9 +29,14 @@ type Snackbar a vu | |||
|         , homeserver : String | ||||
|         , transactionOffset : Int | ||||
|         , vs : Maybe V.Versions | ||||
|         , settings : Settings | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| type alias Settings = | ||||
|     { syncTimeout : Int } | ||||
| 
 | ||||
| 
 | ||||
| accessToken : Snackbar a vu -> AccessToken | ||||
| accessToken (Snackbar { access }) = | ||||
|     access | ||||
|  | @ -92,6 +99,9 @@ init data = | |||
|         , failedTasks = Dict.empty | ||||
|         , failedTasksOffset = 0 | ||||
|         , homeserver = data.baseUrl | ||||
|         , settings = | ||||
|             { syncTimeout = DS.syncTimeout | ||||
|             } | ||||
|         , transactionOffset = 0 | ||||
|         , vs = Nothing | ||||
|         } | ||||
|  | @ -105,6 +115,7 @@ map f (Snackbar data) = | |||
|         , failedTasks = data.failedTasks | ||||
|         , failedTasksOffset = 0 | ||||
|         , homeserver = data.homeserver | ||||
|         , settings = data.settings | ||||
|         , transactionOffset = data.transactionOffset | ||||
|         , vs = data.vs | ||||
|         } | ||||
|  | @ -135,6 +146,11 @@ setTransactionOffset i (Snackbar data) = | |||
|     Snackbar { data | transactionOffset = max (data.transactionOffset + 1) (i + 1) } | ||||
| 
 | ||||
| 
 | ||||
| updateSettings : (Settings -> Settings) -> Snackbar a vu -> Snackbar a vu | ||||
| updateSettings f (Snackbar ({ settings } as data)) = | ||||
|     Snackbar { data | settings = f settings } | ||||
| 
 | ||||
| 
 | ||||
| userId : Snackbar a vu -> Maybe String | ||||
| userId (Snackbar { access }) = | ||||
|     Login.getUserId access | ||||
|  |  | |||
|  | @ -33,3 +33,10 @@ supportedVersions = | |||
| defaultDeviceName : String | ||||
| defaultDeviceName = | ||||
|     "Elm Matrix SDK (v" ++ currentVersion ++ ")" | ||||
| 
 | ||||
| 
 | ||||
| {-| The amount of seconds that the Matrix Vault should wait for a response from the Matrix homeserver. | ||||
| -} | ||||
| syncTimeout : Int | ||||
| syncTimeout = | ||||
|     10 | ||||
|  |  | |||
|  | @ -68,9 +68,7 @@ allowed for every room admin. | |||
| import Internal.Api.VaultUpdate exposing (VaultUpdate) | ||||
| import Internal.Event as Event | ||||
| import Internal.Room as Internal | ||||
| import Internal.Tools.Exceptions as X | ||||
| import Json.Decode as D | ||||
| import Task exposing (Task) | ||||
| 
 | ||||
| 
 | ||||
| {-| A room represents a channel of communication within a Matrix home server. | ||||
|  |  | |||
|  | @ -0,0 +1,27 @@ | |||
| module Matrix.Settings exposing (..) | ||||
| {-| There are a lot of settings that you can change! | ||||
| 
 | ||||
| These settings change how the Vault interacts with the Matrix API. | ||||
| You can adjust these values for performance reasons, for customizability, benchmarking, | ||||
| or maybe just because you like it. :) | ||||
| 
 | ||||
| It is common to set all settings in the `init` function, but you can adjust all settings on the fly. | ||||
| -} | ||||
| 
 | ||||
| import Internal.Vault exposing (Vault) | ||||
| 
 | ||||
| {-| When your Matrix client synchronizes with the homeserver, the homeserver often | ||||
| responds quite quickly, giving all the information that you need. | ||||
| 
 | ||||
| Sometimes, the homeserver has nothing new to report, and instead makes you wait for a response. | ||||
| This is called long-polling, and it's the homeserver waiting for an update to give to you. | ||||
| Long-polling is very useful! | ||||
| 
 | ||||
| This setting sets a limit on how long the long-polling should last. It is smart | ||||
| to make this equal to the interval at which you run the `sync` function. | ||||
| 
 | ||||
| **Default:** 10 (seconds) | ||||
| -} | ||||
| syncTimeout : Int -> Vault -> Vault | ||||
| syncTimeout timeout = | ||||
|     Internal.Vault.settings \data -> { data | syncTimeout = timeout } | ||||
		Loading…
	
		Reference in New Issue