Tusky-App-Android/app/src/main/java/com/keylesspalace/tusky
Christophe Beyls 65af26993b
Optimize I/O code using Okio (#4366)
This pull request takes advantage of the Okio library to simplify, fix
or improve performance of some I/O related code in Tusky.

- Return early or throw `FileNotFoundException` early in case
`contentResolver.openInputStream()` returns `null` instead of throwing
`NullPointerException` later. Change the signature of
`Closeable.closeQuietly()` to only accept a non-null `Closeable`.
- Reimplement `Uri.copyToFile()` using Okio. This takes advantage of the
built-in high-performance buffers of the library so a buffer doesn't
need to be allocated or managed manually. The new implementation also
makes sure that the input and output streams are always closed, as the
original code could in some cases return without properly closing a
stream.
- Reimplement `ProgressRequestBody` as `Uri.asRequestBody()` (adding to
the existing extension functions available in the Okio library to create
a `RequestBody`). The new implementation uses Okio's `Buffer` instead of
a manually managed byte array, which allows to avoid copying bytes from
one buffer to the next. The max number of bytes read at once was
increased from 2K to 8K to improve performance. Avoid division by zero
in case `contentLength` is `0`. Finally, this implementation now takes a
`Uri` as input instead of an `InputStream`, because a `RequestBody` must
be replayable in case Okio retries the request, and an `InputStream` can
only be used once.
2024-04-10 21:52:55 +02:00
..
adapter Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
appstore Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
components Optimize I/O code using Okio (#4366) 2024-04-10 21:52:55 +02:00
db Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
di enableDecoderFallback for ExoPlayer (#4360) 2024-04-10 21:46:52 +02:00
entity fix deserializing audio attachments (#4362) 2024-04-10 21:47:05 +02:00
fragment Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
interfaces Machine translation of posts (#4307) 2024-03-09 16:12:18 +01:00
json Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
network Optimize I/O code using Okio (#4366) 2024-04-10 21:52:55 +02:00
pager upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
receiver Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
service change SendStatusService type to shortService (#4292) 2024-02-29 12:21:15 +01:00
settings Fix some warnings & recreate lint-baseline.xml (#4278) 2024-02-25 16:20:26 +01:00
usecase Retrofit 2.10.0 (#4330) 2024-03-19 08:32:14 +01:00
util Optimize I/O code using Okio (#4366) 2024-04-10 21:52:55 +02:00
view full sdk 34 support (#4224) 2024-02-23 10:27:19 +01:00
viewdata Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
viewmodel Remove redundant crossinline (#4348) 2024-03-29 21:12:49 +01:00
worker upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
AboutActivity.kt Machine translation of posts (#4307) 2024-03-09 16:12:18 +01:00
AccountsInListFragment.kt upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
BaseActivity.java improve MainActivity / LoginActivity transitions (#4301) 2024-03-09 11:04:29 +01:00
BottomSheetActivity.kt Replace RxJava3 code with coroutines (#4290) 2024-02-29 15:28:48 +01:00
EditProfileActivity.kt Migrate LiveData to Flow (#4337) 2024-03-27 11:34:17 +01:00
LicenseActivity.kt update ktlint plugin to 11.3.1, format code (#3442) 2023-03-13 13:16:39 +01:00
ListsActivity.kt full sdk 34 support (#4224) 2024-02-23 10:27:19 +01:00
MainActivity.kt improve MainActivity / LoginActivity transitions (#4301) 2024-03-09 11:04:29 +01:00
SplashActivity.kt remove legacy notification channel cleanup (#2550) 2022-05-25 20:54:25 +02:00
StatusListActivity.kt full sdk 34 support (#4224) 2024-02-23 10:27:19 +01:00
TabData.kt upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
TabPreferenceActivity.kt fix check that ensures only one bookmark tab is added (#4217) 2024-01-28 19:07:17 +01:00
TuskyApplication.kt Replace RxJava3 code with coroutines (#4290) 2024-02-29 15:28:48 +01:00
ViewMediaActivity.kt Replace RxJava3 code with coroutines (#4290) 2024-02-29 15:28:48 +01:00