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()
}