Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*.iws

.gradle/
.kotlin/
build/
!gradle/wrapper/gradle-wrapper.jar

Expand Down
5 changes: 3 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
Expand All @@ -19,8 +20,8 @@ allprojects {

subprojects {
tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
}
}
}
23 changes: 11 additions & 12 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
[versions]
kotlin = "1.9.0"
androidGradlePlugin = "8.5.1"
kotlin = "2.2.20"
androidGradlePlugin = "8.13.0"

[plugins]
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
maven-publish = { id = "com.vanniktech.maven.publish", version = "0.28.0" }
maven-publish = { id = "com.vanniktech.maven.publish", version = "0.34.0" }

[libraries]
# Library Dependencies
androidx-core = { group = "androidx.core", name = "core", version = "1.13.1" }
androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version = "1.3.2" }
androidx-core = { group = "androidx.core", name = "core", version = "1.17.0" }
androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version = "1.4.0" }
androidx-viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version = "1.1.0" }

# Test Dependencies
junit = { group = "junit", name = "junit", version = "4.13.2" }
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version = "1.2.1" }
androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version = "3.6.1" }
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version = "1.3.0" }
androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version = "3.7.0" }

# Sample Dependencies
android-material = { group = "com.google.android.material", name = "material", version = "1.12.0" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version = "1.7.0" }
androidx-activity = { group = "androidx.activity", name = "activity", version = "1.9.0" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version = "2.1.4" }
android-material = { group = "com.google.android.material", name = "material", version = "1.13.0" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version = "1.7.1" }
androidx-activity = { group = "androidx.activity", name = "activity", version = "1.11.0" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version = "2.2.1" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Sun Jul 21 14:18:49 KST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
4 changes: 2 additions & 2 deletions sample/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ plugins {

android {
namespace = "${project.group}.sample"
compileSdk = 34
compileSdk = 36

defaultConfig {
applicationId = "${project.group}.sample"
minSdk = 21
targetSdk = 34
targetSdk = 36
versionCode = 1
versionName = "${project.version}"
}
Expand Down
8 changes: 2 additions & 6 deletions simplecarousel-pager/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import com.vanniktech.maven.publish.SonatypeHost

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
Expand All @@ -8,12 +6,10 @@ plugins {

android {
namespace = "${project.group}.pager"
compileSdk = 34
compileSdk = 36

defaultConfig {
minSdk = 21
targetSdk = 34

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

Expand All @@ -35,7 +31,7 @@ dependencies {
}

mavenPublishing {
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
publishToMavenCentral()
signAllPublications()
coordinates("${project.group}", "simplecarousel-pager", "${project.version}")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ abstract class CarouselFragmentStateAdapter : RecyclerView.Adapter<FragmentViewH
}

override fun restoreState(savedState: Parcelable) {
if (savedStates.isEmpty || fragments.isEmpty) {
if (savedStates.isEmpty() || fragments.isEmpty()) {
throw IllegalStateException("The adapter is not fresh while restoring state")
}

Expand All @@ -113,8 +113,10 @@ abstract class CarouselFragmentStateAdapter : RecyclerView.Adapter<FragmentViewH
if (isValidKey(key, KEY_PREFIX_FRAGMENT)) {
val itemId = parseIdFromKey(key, KEY_PREFIX_FRAGMENT)
val fragment = fragmentManager.getFragment(savedState, key)
fragments.put(itemId, fragment)
continue
if (fragment != null) {
fragments.put(itemId, fragment)
continue
}
}

if (isValidKey(key, KEY_PREFIX_STATE)) {
Expand All @@ -124,16 +126,18 @@ abstract class CarouselFragmentStateAdapter : RecyclerView.Adapter<FragmentViewH
} else {
savedState.getParcelable(key)
}
if (containsItem(itemId)) {
savedStates.put(itemId, state)
if (state != null) {
if (containsItem(itemId)) {
savedStates.put(itemId, state)
}
continue
}
continue
}

throw IllegalArgumentException("Unexpected key found while restoring state: $key")
}

if (!fragments.isEmpty) {
if (!fragments.isEmpty()) {
isInGracePeriod = true
hasStaleFragments = true
gcFragments()
Expand Down Expand Up @@ -428,7 +432,9 @@ abstract class CarouselFragmentStateAdapter : RecyclerView.Adapter<FragmentViewH
val listeners = fragmentEventDispatcher.dispatchPreSavedInstanceState(fragment)
val savedState = fragmentManager.saveFragmentInstanceState(fragment)
fragmentEventDispatcher.dispatchPostEvents(listeners)
savedStates.put(targetId, savedState)
if (savedState != null) {
savedStates.put(targetId, savedState)
}
}

val listeners = fragmentEventDispatcher.dispatchPreRemove(fragment)
Expand Down Expand Up @@ -565,7 +571,7 @@ abstract class CarouselFragmentStateAdapter : RecyclerView.Adapter<FragmentViewH
return
}

if (fragments.isEmpty || itemCount == 0) {
if (fragments.isEmpty() || itemCount == 0) {
return
}

Expand Down
7 changes: 2 additions & 5 deletions simplecarousel/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import com.vanniktech.maven.publish.SonatypeHost

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
Expand All @@ -8,11 +6,10 @@ plugins {

android {
namespace = "${project.group}"
compileSdk = 34
compileSdk = 36

defaultConfig {
minSdk = 21
targetSdk = 34
}

compileOptions {
Expand All @@ -31,7 +28,7 @@ dependencies {
}

mavenPublishing {
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
publishToMavenCentral()
signAllPublications()
coordinates("${project.group}", "simplecarousel", "${project.version}")

Expand Down