mirror of
https://github.com/T8RIN/ImageToolbox.git
synced 2025-05-17 21:45:59 +08:00
Code refactor
This commit is contained in:
@ -24,6 +24,7 @@ import android.net.Uri
|
||||
import android.webkit.MimeTypeMap
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.net.toUri
|
||||
import com.t8rin.logger.makeLog
|
||||
import dagger.Lazy
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.withContext
|
||||
@ -241,7 +242,7 @@ internal class AndroidShareProvider @Inject constructor(
|
||||
)
|
||||
}
|
||||
}
|
||||
}.getOrNull()?.toString()
|
||||
}.onFailure { it.makeLog("cacheData") }.getOrNull()?.toString()
|
||||
}
|
||||
|
||||
override suspend fun shareData(
|
||||
|
@ -395,6 +395,31 @@ internal class AndroidFileController @Inject constructor(
|
||||
}
|
||||
)
|
||||
|
||||
override suspend fun transferBytes(
|
||||
fromUri: String,
|
||||
to: Writeable
|
||||
): SaveResult = withContext(ioDispatcher) {
|
||||
runSuspendCatching {
|
||||
context.contentResolver.openInputStream(fromUri.toUri())?.buffered()?.use { input ->
|
||||
val buffer = ByteArray(DEFAULT_BUFFER_SIZE)
|
||||
while (input.read(buffer) != -1) {
|
||||
to.writeBytes(buffer)
|
||||
}
|
||||
} ?: throw IllegalAccessException("File inaccessible")
|
||||
}.onSuccess {
|
||||
return@withContext SaveResult.Success(
|
||||
message = null,
|
||||
savingPath = ""
|
||||
)
|
||||
}.onFailure {
|
||||
to.makeLog("File Controller write")
|
||||
it.makeLog("File Controller write")
|
||||
return@withContext SaveResult.Error.Exception(it)
|
||||
}
|
||||
|
||||
return@withContext SaveResult.Error.Exception(IllegalStateException())
|
||||
}
|
||||
|
||||
override suspend fun <O : Any> saveObject(
|
||||
key: String,
|
||||
value: O,
|
||||
|
@ -50,6 +50,11 @@ interface FileController {
|
||||
toUri: String
|
||||
): SaveResult
|
||||
|
||||
suspend fun transferBytes(
|
||||
fromUri: String,
|
||||
to: Writeable
|
||||
): SaveResult
|
||||
|
||||
suspend fun <O : Any> saveObject(
|
||||
key: String,
|
||||
value: O,
|
||||
|
@ -94,14 +94,15 @@ internal class AndroidAudioCoverRetriever @Inject constructor(
|
||||
override suspend fun loadCover(
|
||||
audioData: ByteArray
|
||||
): Result<String> {
|
||||
val audioUri = shareProvider.cacheData(
|
||||
writeData = {
|
||||
it.writeBytes(audioData)
|
||||
},
|
||||
filename = "Audio_data_${System.currentTimeMillis()}.mp3"
|
||||
) ?: return Result.failure(NullPointerException(getString(R.string.filename_is_not_set)))
|
||||
|
||||
return loadCover(
|
||||
shareProvider.cacheData(
|
||||
writeData = {
|
||||
it.writeBytes(audioData)
|
||||
},
|
||||
filename = "Audio_data_${System.currentTimeMillis()}.mp3"
|
||||
)
|
||||
?: return Result.failure(NullPointerException(getString(R.string.filename_is_not_set)))
|
||||
audioUri = audioUri
|
||||
)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user