mirror of
https://github.com/tuskyapp/Tusky
synced 2025-01-05 05:23:13 +01:00
65af26993b
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. |
||
---|---|---|
.. | ||
schemas/com.keylesspalace.tusky.db.AppDatabase | ||
src | ||
build.gradle | ||
getGitSha.gradle | ||
lint-baseline.xml | ||
lint.xml | ||
proguard-rules.pro |