Coverage Summary for Class: ExportWorkLauncherImpl (com.vsevolodganin.clicktrack.export)

Class Method, % Branch, % Line, % Instruction, %
ExportWorkLauncherImpl 0% (0/5) 0% (0/4) 0% (0/11) 0% (0/56)
ExportWorkLauncherImpl$launchExportToAudioFile$1
ExportWorkLauncherImpl$requestStoragePermission$2 0% (0/1) 0% (0/1) 0% (0/15)
Total 0% (0/6) 0% (0/4) 0% (0/12) 0% (0/71)


 package com.vsevolodganin.clicktrack.export
 
 import android.Manifest
 import android.os.Build
 import androidx.work.ExistingWorkPolicy
 import androidx.work.WorkManager
 import com.vsevolodganin.clicktrack.model.ClickTrackId
 import com.vsevolodganin.clicktrack.utils.android.PermissionsHelper
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
 import me.tatarka.inject.annotations.Inject
 
 @Inject
 class ExportWorkLauncherImpl(
     private val workManager: WorkManager,
     private val permissionsHelper: PermissionsHelper,
 ) : ExportWorkLauncher {
     override suspend fun launchExportToAudioFile(clickTrackId: ClickTrackId.Database) {
         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P && !requestStoragePermission()) {
             return
         }
 
         workManager.enqueueUniqueWork(
             clickTrackId.toUniqueWorkName(),
             ExistingWorkPolicy.REPLACE,
             ExportWorker.createWorkRequest(clickTrackId),
         )
     }
 
     override fun stopExportToAudioFile(clickTrackId: ClickTrackId.Database) {
         workManager.cancelUniqueWork(clickTrackId.toUniqueWorkName())
     }
 
     private suspend fun requestStoragePermission(): Boolean {
         return withContext(Dispatchers.Main) {
             permissionsHelper.requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)!!
         }
     }
 
     private fun ClickTrackId.Database.toUniqueWorkName() = toString()
 }