/*
 * Copyright (C) 2020 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.
 */

import androidx.build.LibraryGroups
import androidx.build.LibraryType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
    id("kotlin-android")
}

android {
    defaultConfig {
        multiDexEnabled true
    }
}

dependencies {
    compileOnly(projectOrArtifact(":annotation:annotation-sampled"))

    implementation("androidx.appcompat:appcompat:1.2.0")
    implementation("androidx.annotation:annotation-experimental:1.1.0-rc02")
    implementation("androidx.fragment:fragment-ktx:1.3.0")
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0")
    implementation("androidx.recyclerview:recyclerview:1.2.0-rc01")
    implementation("androidx.room:room-ktx:2.3.0-rc01")
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")

    implementation(project(":paging:paging-common"))
    implementation(project(":paging:paging-guava"))
    implementation(project(":paging:paging-runtime"))
    implementation(project(":paging:paging-rxjava2"))

    implementation(libs.guavaAndroid)
    implementation(libs.multidex)
    implementation(libs.retrofit)
}

androidx {
    name = "AndroidX Paging Samples"
    type = LibraryType.SAMPLES
    mavenGroup = LibraryGroups.PAGING
    inceptionYear = "2019"
    description = "Contains the sample code for the Androidx Paging library"
}

// Allow usage of Kotlin's @OptIn.
tasks.withType(KotlinCompile).configureEach {
    kotlinOptions {
        freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"]
    }
}
