package com.isidroid.utils

import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Parcelable

inline fun <reified T : Parcelable> Intent?.getParcelableCompat(key: String): T? {
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
        this?.getParcelableExtra(key, T::class.java)
    else
        this?.getParcelableExtra<T>(key)
}

inline fun <reified T : Parcelable> Intent?.getParcelableArrayListExtraCompat(key: String): List<T>? {
    val list = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
        this?.getParcelableArrayListExtra(key, T::class.java)
    else
        this?.getParcelableArrayListExtra(key)

    return list?.filterNotNull()
}

fun Intent.extractUris(): Collection<Uri>? {
    return when (action) {
        Intent.ACTION_SEND -> return listOfNotNull(getParcelableCompat<Uri>(Intent.EXTRA_STREAM))
        Intent.ACTION_SEND_MULTIPLE -> getParcelableArrayListExtraCompat<Uri>(Intent.EXTRA_STREAM)
        else -> null
    }
}