package com.suno.android.ui.screens.create.audio.precondition import android.Manifest import com.suno.android.common_core_utils.environment.UserPrefsDataStoreManager import com.suno.android.common_core_utils.helpers.PermissionChecker import kotlinx.coroutines.flow.firstOrNull import javax.inject.Inject class GetPreconditionStatusUseCase @Inject constructor( private val permissionChecker: PermissionChecker, private val userPrefsDataStoreManager: UserPrefsDataStoreManager, ) { suspend operator fun invoke( preconditions: Collection, ) = preconditions.associateWith { precondition -> when (precondition) { AudioPreconditionState.Precondition.TermsOfService -> userPrefsDataStoreManager.getHasAcceptedAudioUploadTerms().firstOrNull() ?: false AudioPreconditionState.Precondition.RecordingPermission -> permissionChecker.checkPermission( Manifest.permission.RECORD_AUDIO, ) } } }