package expo.modules.medialibrary.next.extensions.resolver import android.content.ContentUris import android.database.Cursor import android.net.Uri import android.os.Build import android.provider.MediaStore import expo.modules.medialibrary.next.extensions.getNullableInt fun Cursor.extractAssetContentUri(idColumn: Int, typeColumn: Int): Uri = extractAssetContentUri(getLong(idColumn), getNullableInt(typeColumn)) fun extractAssetContentUri(id: Long, mediaType: Int?): Uri { val baseUri = if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) { when (mediaType) { MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE -> MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO -> MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO -> MediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) else -> MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) } } else { when (mediaType) { MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE -> MediaStore.Images.Media.EXTERNAL_CONTENT_URI MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO -> MediaStore.Video.Media.EXTERNAL_CONTENT_URI MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO -> MediaStore.Audio.Media.EXTERNAL_CONTENT_URI else -> EXTERNAL_CONTENT_URI } } return ContentUris.withAppendedId(baseUri, id) }