/*
 * 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.
 */

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

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

android {
    namespace = "androidx.paging.samples"
}

dependencies {
    api(libs.jspecify)
    compileOnly(project(":annotation:annotation-sampled"))

    implementation("androidx.appcompat:appcompat:1.2.0")
    implementation("androidx.annotation:annotation-experimental:1.4.1")
    implementation("androidx.fragment:fragment-ktx:1.3.0")
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0")
    implementation("androidx.recyclerview:recyclerview:1.2.0")
    implementation("androidx.room:room-ktx:2.6.1")

    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.retrofit)
}

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