/*
 * 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.LibraryType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

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

android {
    defaultConfig {
        multiDexEnabled true
    }
    namespace "androidx.paging.samples"
}

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"
}
