package com.suno.android.common_data.media.usecase import android.content.Context import android.net.Uri import androidx.core.content.FileProvider import com.suno.android.common_core_utils.SunoLogger import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.File import java.io.IOException import javax.inject.Inject class CreatePhotoUriUseCase @Inject constructor( loggerFactory: SunoLogger.Factory, @ApplicationContext private val context: Context, ) { private val logger = loggerFactory.create(this@CreatePhotoUriUseCase) suspend operator fun invoke( filePrefix: String, fileSuffix: String = ".jpg", ): Uri? = withContext(Dispatchers.IO) { try { val tempFile = File.createTempFile(filePrefix, fileSuffix, context.cacheDir) .apply { deleteOnExit() } FileProvider.getUriForFile( context, "${context.packageName}.fileprovider", tempFile, ) } catch (e: IOException) { logger.e(e) null } catch (e: IllegalArgumentException) { logger.e(e) null } } }