package com.airbnb.lottie.samples.model

import android.graphics.Color
import android.os.Parcelable
import android.support.annotation.ColorInt
import android.util.Log
import androidx.core.graphics.toColorInt
import com.airbnb.lottie.L
import kotlinx.android.parcel.Parcelize

// This is a lint bug
@SuppressWarnings("ParcelCreator")
@Parcelize
data class AnimationData(
        val id: Long,
        val title: String,
        val description: String?,
        private val bgColor: String?,
        val aepFile: String,
        val bodymovinVersion: String,
        val slug: String,
        val speed: String,
        val preview: String?,
        val lottieLink: String,
        val userInfo: UserInfo?
) : Parcelable {
    @ColorInt
    fun bgColorInt(): Int {
        var bgColor = this.bgColor ?: "#ffffff"
        bgColor = if (bgColor.startsWith("#")) bgColor else "#$bgColor"

        return try {
            when (bgColor.length) {
                0 -> "#ffffff"
                4 -> "#%c%c%c%c%c%c".format(
                        bgColor[1], bgColor[1],
                        bgColor[2], bgColor[2],
                        bgColor[3], bgColor[3]
                )
                5 -> "#%c%c%c%c%c%c%c%c".format(
                        bgColor[1], bgColor[1],
                        bgColor[2], bgColor[2],
                        bgColor[3], bgColor[3],
                        bgColor[4], bgColor[4]
                )
                else -> bgColor
            }.toColorInt()
        } catch (e: IllegalArgumentException) {
            Log.w(L.TAG, "Unable to parse $bgColor.")
            Color.WHITE
        }
    }
}