Commit Graph

40 Commits

Author SHA1 Message Date
dkadrikj 519765b9bd Rename ServerConnectionListener.kt to ApiConnectionListener.kt,
ServerConnectionHandler.kt to ApiConnectionHandler.kt and
ServerConnectionException.kt to ApiConnectionException.kt
2021-11-22 15:01:26 +00:00
Mateusz Armatys f0bee56b9f Put all API error codes in `ResponseCodes` class 2021-11-22 11:11:12 +01:00
Benjamin Monjoie bd78d8069d Delay OkHttp's initialization
OkHttp's cache initialization is blocking the UI.
As per this trick: https://www.zacsweers.dev/dagger-party-tricks-deferred-okhttp-init/,
it should be better to initialize OkHttp in Retrofit's `callFactory` method.

This currently doesn't solve the issue with coroutines but has no downside either.
Indeed, the `callFactory` SAM is called on the `Dispatcher` which initiate the call.
It's often the `viewModelScope` which is using `Dispatchers.Main`.
Hopefully, an update to Retrofit will solve this issue.
2021-10-07 15:39:19 +00:00
Jorge Martín 102f40d3d6 Add Atlas Proxy for testing, ExtraHeaderProvider to add arbitrary headers to all requests 2021-10-06 09:31:42 +02:00
Neil Marietta ae9280d50b KeyStoreCrypto fallback if Android KeyStore is not properly working. 2021-09-21 16:25:03 +02:00
Benjamin Monjoie befca10552 Fix UI tests are not passing anymore
Due to a breaking change in the experimental Duration API in Kotlin
1.5 and a conflict with inline classes and coroutine in the IR
compiler. I had to update several dependencies.

 * Fix tests won't run anymore by updating Kotlin (and dependencies)
    + turbine
 * Update Store4 since there was a breaking change in Kotlin 1.5's
   experimental Duration API on which Store4 relied
 * Fix some deprecated calls (toUppercase/toLowercase, capitalize,
   expectItem, ...)
2021-09-10 15:06:13 +02:00
Neil Marietta a122d9e893 Added optional OkHttp Cache.
Removed isConnectedToNetwork check before trying a call.
2021-08-19 09:15:15 +00:00
Neil Marietta a5bcf95dae Network: Added TooManyRequest error handling per Session. 2021-08-13 15:19:12 +02:00
Neil Marietta 4784644591 Added ServerTimeListener/ServerTimeInterceptor, updating PGPCrypto time. 2021-06-21 14:11:04 +02:00
Neil Marietta e1c07f1741 Added Force Update error 5005 (API too old). 2021-06-10 11:13:24 +02:00
Neil Marietta 1b7e6eb9e9 Fixed ClientId initialisation issue.
Added ClientIdProvider (rely on ProtonCookieStore).
2021-06-03 17:18:11 +02:00
Neil Marietta 646183da63 Refactored HumanVerification.
Never delete HumanVerification tokens except on Invalid Verification Code (error 12087).

HumanVerification Network Handlers:
- HumanVerificationNeededHandler: call onHumanVerificationNeeded on error 9001 (last of error handler list).
- HumanVerificationInvalidHandler: call onHumanVerificationInvalid (which delete token) on error 12087.
2021-06-03 17:18:11 +02:00
Mateusz Markowicz a0fa1fdb6f Emit current state with NetworkManager.observe() flow 2021-05-31 12:39:06 +02:00
dkadrikj 98ca99f9a6 Various improvements for Signup and Presentation.
Various improvements for User, Human Verification and Presentation modules.
Various improvements for User, Human Verification and Presentation modules.
Remove PayloadRequest.kt.
Update tests suite.
Remove not used files NewUser.kt and NewExternalEmailUser.kt
Take out create address from UserManager.kt
User emailSplit extension instead.
Introduce CreateUserType.kt
Move HumanVerificationResult handler into the ViewModel.
Fix wait to DB write HV ViewModel.
Improve SetupPrimaryKeys.kt.
Fix HV tests.
2021-05-12 21:07:28 +02:00
dkadrikj d41e19e28c Change network module to support refactored Human Verification module. 2021-05-12 17:57:14 +00:00
Neil Marietta 4ac8144f08 Added Refresh Session Scopes. 2021-04-07 11:35:06 +02:00
Neil Marietta 305c3a67f2 Fixed Human Verification race condition. 2021-03-25 16:06:55 +01:00
Neil Marietta 09c4afe41f Fixed Network refresh token race condition. 2021-03-25 16:05:59 +01:00
dkadrikj 5a3666a946 Clean up of HumanVerification handler, DB schema and migration. 2020-12-30 18:13:53 +01:00
dkadrikj 7b5ebaa9e2 Add persistent cookie support. 2020-12-01 11:00:39 +01:00
dkadrikj bca06c13a5 Add API error message to the force update interface. 2020-11-24 12:18:39 +00:00
Neil Marietta 16952477b0 Added levels to Logger API. 2020-11-11 18:26:30 +01:00
Neil Marietta ec97d4dfbc Updated Target Android SDK Level to 30. 2020-11-11 18:02:34 +01:00
Neil Marietta bf33818a5a Integrated AccountManager with modules. 2020-11-02 10:38:21 +01:00
Neil Marietta 0fa57dff20 Removed ExperimentalCoroutinesApi annotation (see build.gradle.kts, kotlinCompilerArgs). 2020-11-02 10:33:09 +01:00
Neil Marietta ad84a03a7e Added AccountManager Implementation. 2020-11-02 10:33:09 +01:00
Davide Farella 4e0d9d3dd5 Update Kotlin, Serialization and Coroutines
* Kotlin [1.3.72] -> [1.4.10]
* Serialization [0.20.0] -> [1.0.0]
* Coroutines [1.3.4] -> [1.4.0-M1]

CP-994
2020-10-21 18:23:54 +02:00
Neil Marietta 53f8b0107f Integrated SessionListener/SessionProvider/SessionId into network modules.
Added ApiProvider (create ApiManager instance given a sessionId).
Adapted HumanVerification modules to use ApiProvider.
2020-10-20 11:22:27 +02:00
Mateusz Markowicz 99339a1306 network: Introduce cooldown period for token refresh 2020-08-24 16:22:42 +00:00
Mateusz Markowicz 49bbb73bb7 network: Save refresh and access tokens together 2020-08-24 16:22:42 +00:00
dkadrikj 3a52601942 Human verification support in the network module
Includes also changes needed in the Human Verification module
2020-08-04 15:18:43 +02:00
Mateusz Markowicz fa4e784000 network: let client override pins for alternative routing proxies
CP-405
2020-07-24 14:41:57 +02:00
Mateusz Markowicz f8818f84cd Add testing for certificate pinning 2020-07-16 11:06:39 +02:00
Mateusz Markowicz efa535ac0e Replace commons-codec Base64 with one from android SDK
On some android phones Base64 from commons-codec will be resolved
in runtime to old 1.3 version despite app having dependency on
1.14 (see https://blog.osom.info/2015/04/commons-codec-on-android.html)
2020-07-13 19:20:14 +02:00
Mateusz Markowicz c06b9e32f0 Support for int -> bool serialization for Proton API 2020-07-07 17:26:34 +02:00
Mateusz Markowicz b0b16eef9a Log and include original exception in ApiResult.Error 2020-07-07 17:26:34 +02:00
Mateusz Markowicz ca85c626fb Introducing API block avoidance based on DoH 2020-07-03 11:24:18 +00:00
Mateusz Markowicz 619f7e65bc Prepare module factory interface to support DoH
CP-405
2020-07-02 14:09:36 +00:00
Mateusz Markowicz d14e896863 Refactor handling of proton error data in json response
- use deserializer from kotlin-utils
- merge Proton and Http ApiResult errors
2020-07-02 14:09:36 +00:00
Algirdas Pundzius 265a5a0205 Initial commit
Co-authored-by: Davide Giuseppe Farella <4face91@protonmail.com>
Co-authored-by: Dino Kadrikj <kadrikj@protonmail.ch>
Co-authored-by: Mateusz Markowicz <poniekad@protonmail.com>
2020-07-01 13:58:49 +03:00