/*
 * Copyright 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * This file was created using the `create_project.py` script located in the
 * `<AndroidX root>/development/project-creator` directory.
 *
 * Please use that script when creating a new project, rather than copying an existing project and
 * modifying its settings.
 */
import androidx.build.LibraryType

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
    id("AndroidXComposePlugin")
    id("org.jetbrains.kotlin.android")
}

dependencies {
    implementation(libs.kotlinStdlib)

    implementation(project(":tv:tv-foundation"))
    implementation(project(":tv:tv-material"))
    implementation("androidx.compose.material3:material3:1.1.2")
    compileOnly(project(":annotation:annotation-sampled"))
}

androidx {
    name = "Samples library for TV packages"
    type = LibraryType.SAMPLES
    inceptionYear = "2022"
    description = "Contains the sample code for the APIs in the androidx.tv libraries"
}

android {
    defaultConfig {
        minSdkVersion 28
    }
    namespace "androidx.tv.samples"
}

// Workaround for https://github.com/gradle/gradle/issues/19882
configurations.all {
    resolutionStrategy.dependencySubstitution {
        substitute(module("androidx.lifecycle:lifecycle-livedata-core:")).
                using project(":lifecycle:lifecycle-livedata-core")
        substitute(module("androidx.lifecycle:lifecycle-common:")).
                using project(":lifecycle:lifecycle-common")
        substitute(module("androidx.lifecycle:lifecycle-runtime:")).
                using project(":lifecycle:lifecycle-runtime")
        substitute(module("androidx.lifecycle:lifecycle-runtime-ktx:")).
                using project(":lifecycle:lifecycle-runtime-ktx")
        substitute(module("androidx.lifecycle:lifecycle-viewmodel:")).
                using project(":lifecycle:lifecycle-viewmodel")
    }
}
