25 lines
805 B
Kotlin
25 lines
805 B
Kotlin
package chats.domain.usecase
|
|
|
|
import chats.data.remote.api.ChatApi
|
|
import chats.data.remote.api.FileUploadResponse
|
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
|
import okhttp3.MultipartBody
|
|
import okhttp3.RequestBody.Companion.asRequestBody
|
|
import java.io.File
|
|
import javax.inject.Inject
|
|
|
|
class UploadMediaUseCase @Inject constructor(
|
|
private val api: ChatApi
|
|
) {
|
|
suspend operator fun invoke(file: File): Result<FileUploadResponse> {
|
|
return try {
|
|
val requestFile = file.asRequestBody("image/*".toMediaTypeOrNull())
|
|
val body = MultipartBody.Part.createFormData("file", file.name, requestFile)
|
|
val response = api.uploadFile(body)
|
|
Result.success(response)
|
|
} catch (e: Exception) {
|
|
Result.failure(e)
|
|
}
|
|
}
|
|
}
|