Upgraded a bunch of dependencies (#2382)
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index 217e5c5..f8467b4 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
- <option name="version" value="1.8.21" />
+ <option name="version" value="1.9.10" />
</component>
</project>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index a26b100..c923c31 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,10 +2,10 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
+ id "com.android.tools.build" apply false
id 'net.ltgt.errorprone' apply false
id "com.google.devtools.ksp" apply false
id "org.ajoberstar.grgit" apply false
- id "com.android.library" apply false
id "org.jetbrains.kotlin.jvm" apply false
id "com.vanniktech.maven.publish" apply false
id "org.jetbrains.dokka" apply false
@@ -13,7 +13,7 @@
allprojects {
def compileJavaVersion = JavaVersion.VERSION_17
- def targetJavaVersion = JavaVersion.VERSION_1_8
+ def targetJavaVersion = JavaVersion.VERSION_17
pluginManager.withPlugin("java") {
java {
toolchain {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 9fcf0d7..859b55b 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -4,6 +4,7 @@
androidx-activity-compose = "androidx.activity:activity-compose:_"
androidx-appcompat = "androidx.appcompat:appcompat:_"
+androidx-fragment = "androidx.fragment:fragment-ktx:_"
androidx-browser = "androidx.browser:browser:_"
androidx-cardview = "androidx.cardview:cardview:_"
androidx-collection-ktx = "androidx.collection:collection:_"
diff --git a/issue-repro-compose/build.gradle b/issue-repro-compose/build.gradle
index 4f5a631..ff49721 100755
--- a/issue-repro-compose/build.gradle
+++ b/issue-repro-compose/build.gradle
@@ -7,11 +7,11 @@
android {
namespace 'com.airbnb.lottie.issues.compose'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.airbnb.lottie.issues.compose"
minSdk 21
- targetSdk 33
+ targetSdk 34
versionCode 1
versionName "1.0"
}
diff --git a/issue-repro/build.gradle b/issue-repro/build.gradle
index 2ce7bf5..73c77a0 100755
--- a/issue-repro/build.gradle
+++ b/issue-repro/build.gradle
@@ -5,11 +5,11 @@
android {
namespace 'com.airbnb.lottie.issues'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.airbnb.lottie.issues"
minSdk 16
- targetSdk 33
+ targetSdk 34
versionCode 1
versionName "1.0"
}
diff --git a/lottie-compose/build.gradle b/lottie-compose/build.gradle
index 0e8e427..099aa04 100644
--- a/lottie-compose/build.gradle
+++ b/lottie-compose/build.gradle
@@ -9,10 +9,10 @@
android {
namespace 'com.airbnb.lottie.compose'
- compileSdk 33
+ compileSdk 34
defaultConfig {
minSdk 21
- targetSdk 33
+ targetSdk 34
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -50,4 +50,4 @@
testImplementation libs.junit4
androidTestImplementation libs.androidx.test.junit
androidTestImplementation libs.androidx.test.espresso
-}
\ No newline at end of file
+}
diff --git a/lottie/build.gradle b/lottie/build.gradle
index 596eb44..3c18376 100644
--- a/lottie/build.gradle
+++ b/lottie/build.gradle
@@ -10,10 +10,10 @@
android {
namespace 'com.airbnb.lottie'
resourcePrefix 'lottie_'
- compileSdk 33
+ compileSdk 34
defaultConfig {
minSdk 16
- targetSdk 33
+ targetSdk 34
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
lintOptions {
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index 8234e74..d288528 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -33,7 +33,6 @@
import androidx.annotation.RestrictTo;
import com.airbnb.lottie.animation.LPaint;
-import com.airbnb.lottie.animation.keyframe.PathKeyframe;
import com.airbnb.lottie.manager.FontAssetManager;
import com.airbnb.lottie.manager.ImageAssetManager;
import com.airbnb.lottie.model.Font;
@@ -336,7 +335,7 @@
* Be wary if you are using many images, however. Lottie is designed to work with vector shapes
* from After Effects. If your images look like they could be represented with vector shapes,
* see if it is possible to convert them to shape layers and re-export your animation. Check
- * the documentation at http://airbnb.io/lottie for more information about importing shapes from
+ * the documentation at <a href="http://airbnb.io/lottie">airbnb.io/lottie</a> for more information about importing shapes from
* Sketch or Illustrator to avoid this.
*/
public void setImagesAssetsFolder(@Nullable String imageAssetsFolder) {
@@ -460,7 +459,7 @@
* <p/>
* Sets the current value for {@link AsyncUpdates}. Refer to the docs for {@link AsyncUpdates} for more info.
*/
- public void setAsyncUpdates(AsyncUpdates asyncUpdates) {
+ public void setAsyncUpdates(@Nullable AsyncUpdates asyncUpdates) {
this.asyncUpdates = asyncUpdates;
}
@@ -1318,7 +1317,7 @@
* <p>
* Internally, this will check if the {@link KeyPath} has already been resolved with
* {@link #resolveKeyPath(KeyPath)} and will resolve it if it hasn't.
- *
+ * <p>
* Set the callback to null to clear it.
*/
public <T> void addValueCallback(
diff --git a/sample-compose-benchmark/build.gradle b/sample-compose-benchmark/build.gradle
index a83accd..df2da67 100644
--- a/sample-compose-benchmark/build.gradle
+++ b/sample-compose-benchmark/build.gradle
@@ -5,7 +5,7 @@
android {
namespace 'com.airbnb.lottie.sample.compose.benchmark'
- compileSdk 33
+ compileSdk 34
kotlinOptions {
freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
@@ -13,7 +13,7 @@
defaultConfig {
minSdk 30
- targetSdk 33
+ targetSdk 34
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/sample-compose/build.gradle b/sample-compose/build.gradle
index abaacad..279dd7e 100644
--- a/sample-compose/build.gradle
+++ b/sample-compose/build.gradle
@@ -8,11 +8,11 @@
android {
namespace 'com.airbnb.lottie.sample.compose'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.airbnb.lottie.sample.compose"
minSdk 21
- targetSdk 33
+ targetSdk 34
versionCode 1
versionName VERSION_NAME
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt
index c05b47a..ab8dba3 100644
--- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt
+++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/examples/ViewPagerExample.kt
@@ -20,19 +20,16 @@
@Composable
fun ViewPagerExamplePage() {
val colors = listOf(Color.Red, Color.Green, Color.Blue, Color.Magenta)
- val pagerState = rememberPagerState()
+ val pagerState = rememberPagerState { colors.size }
Box(
modifier = Modifier
- .fillMaxSize()
+ .fillMaxSize(),
) {
- HorizontalPager(
- colors.size,
- state = pagerState
- ) { page ->
+ HorizontalPager(pagerState) { page ->
Box(
modifier = Modifier
.fillMaxSize()
- .background(colors[page])
+ .background(colors[page]),
)
}
WalkthroughAnimation(pagerState, colors.size)
@@ -47,6 +44,6 @@
composition,
{ progress },
modifier = Modifier
- .fillMaxSize()
+ .fillMaxSize(),
)
-}
\ No newline at end of file
+}
diff --git a/sample/build.gradle b/sample/build.gradle
index aee9b6d..54dc7b5 100644
--- a/sample/build.gradle
+++ b/sample/build.gradle
@@ -9,11 +9,11 @@
android {
namespace 'com.airbnb.lottie.samples'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.airbnb.lottie"
minSdk 16
- targetSdk 33
+ targetSdk 34
versionCode 70
versionName VERSION_NAME
multiDexEnabled true
@@ -58,6 +58,7 @@
implementation libs.androidx.multidex
implementation libs.androidx.appcompat
+ implementation libs.androidx.fragment
implementation libs.androidx.recyclerview
implementation libs.androidx.paging.runtime.ktx
implementation libs.androidx.viewmodel.ktx
@@ -69,7 +70,7 @@
implementation libs.epoxy
ksp libs.epoxy.processor
- implementation libs.mvrx
+ implementation libs.mavericks
implementation libs.kotlinx.coroutines.android
implementation libs.qrcodereaderview
diff --git a/sample/src/main/assets/fonts/Comic Neue.ttf b/sample/src/main/assets/fonts/Comic Neue.ttf
new file mode 100755
index 0000000..ab3a417
--- /dev/null
+++ b/sample/src/main/assets/fonts/Comic Neue.ttf
Binary files differ
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
index 9ea95a4..fcc7f4b 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
@@ -3,6 +3,7 @@
import androidx.multidex.MultiDexApplication
import com.airbnb.lottie.L
import com.airbnb.lottie.samples.api.LottiefilesApi
+import com.airbnb.mvrx.Mavericks
import com.google.gson.FieldNamingPolicy
import com.google.gson.GsonBuilder
import okhttp3.OkHttpClient
@@ -37,6 +38,7 @@
override fun onCreate() {
super.onCreate()
+ Mavericks.initialize(this)
L.DBG = true
}
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
index 387ba18..c88d210 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
@@ -5,8 +5,8 @@
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
+import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.viewModelScope
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingDataAdapter
@@ -20,13 +20,14 @@
import com.airbnb.lottie.samples.model.AnimationData
import com.airbnb.lottie.samples.model.AnimationResponse
import com.airbnb.lottie.samples.model.CompositionArgs
-import com.airbnb.lottie.samples.utils.MvRxViewModel
+import com.airbnb.lottie.samples.utils.BaseFragment
import com.airbnb.lottie.samples.utils.hideKeyboard
import com.airbnb.lottie.samples.utils.viewBinding
import com.airbnb.lottie.samples.views.AnimationItemView
-import com.airbnb.mvrx.BaseMvRxFragment
-import com.airbnb.mvrx.MvRxState
-import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.MavericksState
+import com.airbnb.mvrx.MavericksView
+import com.airbnb.mvrx.MavericksViewModel
+import com.airbnb.mvrx.MavericksViewModelFactory
import com.airbnb.mvrx.ViewModelContext
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
@@ -38,9 +39,9 @@
data class LottiefilesState(
val mode: LottiefilesMode = LottiefilesMode.Recent,
val query: String = ""
-) : MvRxState
+) : MavericksState
-class LottiefilesViewModel(initialState: LottiefilesState, private val api: LottiefilesApi) : MvRxViewModel<LottiefilesState>(initialState) {
+class LottiefilesViewModel(initialState: LottiefilesState, private val api: LottiefilesApi) : MavericksViewModel<LottiefilesState>(initialState) {
private var mode = initialState.mode
private var query = initialState.query
@@ -51,7 +52,7 @@
}.flow.cachedIn(viewModelScope)
init {
- selectSubscribe(LottiefilesState::mode, LottiefilesState::query) { mode, query ->
+ onEach(LottiefilesState::mode, LottiefilesState::query) { mode, query ->
this.mode = mode
this.query = query
dataSource?.invalidate()
@@ -62,7 +63,7 @@
fun setQuery(query: String) = setState { copy(query = query) }
- companion object : MvRxViewModelFactory<LottiefilesViewModel, LottiefilesState> {
+ companion object : MavericksViewModelFactory<LottiefilesViewModel, LottiefilesState> {
override fun create(viewModelContext: ViewModelContext, state: LottiefilesState): LottiefilesViewModel {
val service = viewModelContext.app<LottieApplication>().lottiefilesService
return LottiefilesViewModel(state, service)
@@ -109,7 +110,7 @@
}
}
-class LottiefilesFragment : BaseMvRxFragment(R.layout.lottiefiles_fragment) {
+class LottiefilesFragment : BaseFragment(R.layout.lottiefiles_fragment) {
private val binding: LottiefilesFragmentBinding by viewBinding()
private val viewModel: LottiefilesViewModel by fragmentViewModel()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index ed279ae..f56c3d8 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -32,12 +32,12 @@
import com.airbnb.lottie.model.KeyPath
import com.airbnb.lottie.samples.databinding.PlayerFragmentBinding
import com.airbnb.lottie.samples.model.CompositionArgs
+import com.airbnb.lottie.samples.utils.BaseFragment
import com.airbnb.lottie.samples.utils.getParcelableCompat
import com.airbnb.lottie.samples.utils.viewBinding
import com.airbnb.lottie.samples.views.BottomSheetItemView
import com.airbnb.lottie.samples.views.BottomSheetItemViewModel_
import com.airbnb.lottie.samples.views.ControlBarItemToggleView
-import com.airbnb.mvrx.BaseMvRxFragment
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
import com.github.mikephil.charting.components.LimitLine
@@ -50,7 +50,7 @@
import kotlin.math.abs
import kotlin.math.roundToInt
-class PlayerFragment : BaseMvRxFragment(R.layout.player_fragment) {
+class PlayerFragment : BaseFragment(R.layout.player_fragment) {
private val binding: PlayerFragmentBinding by viewBinding()
private val viewModel: PlayerViewModel by fragmentViewModel()
@@ -147,7 +147,7 @@
binding.controlBarTrim.minFrameView.setOnClickListener { showMinFrameDialog() }
binding.controlBarTrim.maxFrameView.setOnClickListener { showMaxFrameDialog() }
- viewModel.selectSubscribe(PlayerState::minFrame, PlayerState::maxFrame) { minFrame, maxFrame ->
+ viewModel.onEach(PlayerState::minFrame, PlayerState::maxFrame) { minFrame, maxFrame ->
binding.animationView.setMinAndMaxFrame(minFrame, maxFrame)
// I think this is a lint bug. It complains about int being <ErrorType>
//noinspection StringFormatMatches
@@ -157,7 +157,7 @@
}
viewModel.fetchAnimation(args)
- viewModel.asyncSubscribe(PlayerState::composition, onFail = {
+ viewModel.onAsync(PlayerState::composition, onFail = {
Snackbar.make(binding.coordinatorLayout, R.string.composition_load_error, Snackbar.LENGTH_LONG).show()
Log.w(L.TAG, "Error loading composition.", it)
}) {
@@ -166,7 +166,7 @@
}
binding.controlBar.borderToggle.setOnClickListener { viewModel.toggleBorderVisible() }
- viewModel.selectSubscribe(PlayerState::borderVisible) {
+ viewModel.onEach(PlayerState::borderVisible) {
binding.controlBar.borderToggle.isActivated = it
binding.controlBar.borderToggle.setImageResource(
if (it) R.drawable.ic_border_on
@@ -191,12 +191,12 @@
binding.controlBar.enableApplyingOpacityToLayers.isActivated = isApplyingOpacityToLayersEnabled
}
- viewModel.selectSubscribe(PlayerState::controlsVisible) { binding.controlBarPlayerControls.controlsContainer.animateVisible(it) }
+ viewModel.onEach(PlayerState::controlsVisible) { binding.controlBarPlayerControls.controlsContainer.animateVisible(it) }
- viewModel.selectSubscribe(PlayerState::controlBarVisible) { binding.controlBar.root.animateVisible(it) }
+ viewModel.onEach(PlayerState::controlBarVisible) { binding.controlBar.root.animateVisible(it) }
binding.controlBar.renderGraphToggle.setOnClickListener { viewModel.toggleRenderGraphVisible() }
- viewModel.selectSubscribe(PlayerState::renderGraphVisible) {
+ viewModel.onEach(PlayerState::renderGraphVisible) {
binding.controlBar.renderGraphToggle.isActivated = it
binding.controlBarPlayerControls.renderTimesGraphContainer.animateVisible(it)
binding.controlBarPlayerControls.renderTimesPerLayerButton.animateVisible(it)
@@ -204,38 +204,38 @@
}
binding.controlBar.masksAndMattesToggle.setOnClickListener { viewModel.toggleOutlineMasksAndMattes() }
- viewModel.selectSubscribe(PlayerState::outlineMasksAndMattes) {
+ viewModel.onEach(PlayerState::outlineMasksAndMattes) {
binding.controlBar.masksAndMattesToggle.isActivated = it
binding.animationView.setOutlineMasksAndMattes(it)
}
binding.controlBar.backgroundColorToggle.setOnClickListener { viewModel.toggleBackgroundColorVisible() }
binding.controlBarBackgroundColor.closeBackgroundColorButton.setOnClickListener { viewModel.setBackgroundColorVisible(false) }
- viewModel.selectSubscribe(PlayerState::backgroundColorVisible) {
+ viewModel.onEach(PlayerState::backgroundColorVisible) {
binding.controlBar.backgroundColorToggle.isActivated = it
binding.controlBarBackgroundColor.backgroundColorContainer.animateVisible(it)
}
binding.controlBar.trimToggle.setOnClickListener { viewModel.toggleTrimVisible() }
binding.controlBarTrim.closeTrimButton.setOnClickListener { viewModel.setTrimVisible(false) }
- viewModel.selectSubscribe(PlayerState::trimVisible) {
+ viewModel.onEach(PlayerState::trimVisible) {
binding.controlBar.trimToggle.isActivated = it
binding.controlBarTrim.trimContainer.animateVisible(it)
}
binding.controlBar.mergePathsToggle.setOnClickListener { viewModel.toggleMergePaths() }
- viewModel.selectSubscribe(PlayerState::useMergePaths) {
+ viewModel.onEach(PlayerState::useMergePaths) {
binding.animationView.enableMergePathsForKitKatAndAbove(it)
binding.controlBar.mergePathsToggle.isActivated = it
}
binding.controlBar.speedToggle.setOnClickListener { viewModel.toggleSpeedVisible() }
binding.controlBarSpeed.closeSpeedButton.setOnClickListener { viewModel.setSpeedVisible(false) }
- viewModel.selectSubscribe(PlayerState::speedVisible) {
+ viewModel.onEach(PlayerState::speedVisible) {
binding.controlBar.speedToggle.isActivated = it
binding.controlBarSpeed.speedContainer.isVisible = it
}
- viewModel.selectSubscribe(PlayerState::speed) {
+ viewModel.onEach(PlayerState::speed) {
binding.animationView.speed = it
binding.controlBarSpeed.speedButtonsContainer
.children
@@ -259,7 +259,7 @@
binding.controlBarPlayerControls.loopButton.setOnClickListener { viewModel.toggleLoop() }
- viewModel.selectSubscribe(PlayerState::repeatCount) {
+ viewModel.onEach(PlayerState::repeatCount) {
binding.animationView.repeatCount = it
binding.controlBarPlayerControls.loopButton.isActivated = binding.animationView.repeatCount == ValueAnimator.INFINITE
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
index 592573e..31a6972 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
@@ -7,11 +7,11 @@
import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.LottieTask
import com.airbnb.lottie.samples.model.CompositionArgs
-import com.airbnb.lottie.samples.utils.MvRxViewModel
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.Fail
-import com.airbnb.mvrx.MvRxState
-import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.MavericksState
+import com.airbnb.mvrx.MavericksViewModel
+import com.airbnb.mvrx.MavericksViewModelFactory
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.ViewModelContext
@@ -34,12 +34,12 @@
val maxFrame: Int = 0,
val speed: Float = 1f,
val repeatCount: Int = ValueAnimator.INFINITE
-) : MvRxState
+) : MavericksState
class PlayerViewModel(
initialState: PlayerState,
private val application: Application
-) : MvRxViewModel<PlayerState>(initialState) {
+) : MavericksViewModel<PlayerState>(initialState) {
fun fetchAnimation(args: CompositionArgs) {
val url = args.url ?: args.animationDataV2?.file ?: args.animationData?.lottieLink
@@ -112,9 +112,9 @@
)
}
- companion object : MvRxViewModelFactory<PlayerViewModel, PlayerState> {
+ companion object : MavericksViewModelFactory<PlayerViewModel, PlayerState> {
override fun create(viewModelContext: ViewModelContext, state: PlayerState): PlayerViewModel {
return PlayerViewModel(state, viewModelContext.app())
}
}
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
index 96b4f09..ebeb2c9 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
@@ -115,4 +115,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
index 8a58ccc..f404d7f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
@@ -1,5 +1,6 @@
package com.airbnb.lottie.samples
+import android.app.Activity
import android.content.Intent
import com.airbnb.epoxy.EpoxyController
import com.airbnb.lottie.samples.api.LottiefilesApi
@@ -7,29 +8,29 @@
import com.airbnb.lottie.samples.model.CompositionArgs
import com.airbnb.lottie.samples.model.ShowcaseItem
import com.airbnb.lottie.samples.utils.BaseEpoxyFragment
-import com.airbnb.lottie.samples.utils.MvRxViewModel
import com.airbnb.lottie.samples.views.animationItemView
import com.airbnb.lottie.samples.views.loadingView
import com.airbnb.lottie.samples.views.marquee
import com.airbnb.lottie.samples.views.showcaseCarousel
import com.airbnb.mvrx.Async
-import com.airbnb.mvrx.MvRxState
-import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.MavericksState
+import com.airbnb.mvrx.MavericksViewModel
+import com.airbnb.mvrx.MavericksViewModelFactory
import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.ViewModelContext
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
-data class ShowcaseState(val response: Async<AnimationResponseV2> = Uninitialized) : MvRxState
+data class ShowcaseState(val response: Async<AnimationResponseV2> = Uninitialized) : MavericksState
-class ShowcaseViewModel(initialState: ShowcaseState, api: LottiefilesApi) : MvRxViewModel<ShowcaseState>(initialState) {
+class ShowcaseViewModel(initialState: ShowcaseState, api: LottiefilesApi) : MavericksViewModel<ShowcaseState>(initialState) {
init {
suspend {
api.getCollection()
}.execute { copy(response = it) }
}
- companion object : MvRxViewModelFactory<ShowcaseViewModel, ShowcaseState> {
+ companion object : MavericksViewModelFactory<ShowcaseViewModel, ShowcaseState> {
override fun create(viewModelContext: ViewModelContext, state: ShowcaseState): ShowcaseViewModel {
val service = viewModelContext.app<LottieApplication>().lottiefilesService
return ShowcaseViewModel(state, service)
@@ -39,22 +40,28 @@
class ShowcaseFragment : BaseEpoxyFragment() {
+ private inline fun <reified A : Activity> startActivity() {
+ val intent = Intent(requireContext(), A::class.java)
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ requireContext().startActivity(intent)
+ }
+
private val showcaseItems = listOf(
ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
- it.startActivity(Intent(it, DynamicActivity::class.java))
+ startActivity<DynamicActivity>()
},
ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
- it.startActivity(Intent(it, TypographyDemoActivity::class.java))
+ startActivity<TypographyDemoActivity>()
},
ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
- it.startActivity(Intent(it, DynamicTextActivity::class.java))
+ startActivity<DynamicTextActivity>()
},
ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
- it.startActivity(Intent(it, BullseyeActivity::class.java))
+ startActivity<BullseyeActivity>()
},
ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
- it.startActivity(Intent(it, WishListActivity::class.java))
- }
+ startActivity<WishListActivity>()
+ },
)
private val viewModel: ShowcaseViewModel by fragmentViewModel()
@@ -82,9 +89,16 @@
title(it.title)
if (it.preview != null) previewUrl("https://assets9.lottiefiles.com/${it.preview}")
previewBackgroundColor(it.bgColorInt)
- onClickListener { _ -> activityContext.startActivity(PlayerActivity.intent(activityContext, CompositionArgs(animationDataV2 = it))) }
+ onClickListener { _ ->
+ activityContext.startActivity(
+ PlayerActivity.intent(
+ activityContext,
+ CompositionArgs(animationDataV2 = it),
+ ),
+ )
+ }
}
}
}
}
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
index 805cf4c..8fa5469 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
@@ -6,8 +6,6 @@
import com.airbnb.epoxy.EpoxyController
import com.airbnb.lottie.samples.R
import com.airbnb.lottie.samples.databinding.BaseFragmentBinding
-import com.airbnb.mvrx.BaseMvRxFragment
-
private class BaseEpoxyController(
private val buildModelsCallback: EpoxyController.() -> Unit
@@ -17,11 +15,11 @@
}
}
-abstract class BaseEpoxyFragment : BaseMvRxFragment(R.layout.base_fragment) {
+abstract class BaseEpoxyFragment : BaseFragment(R.layout.base_fragment) {
protected val binding: BaseFragmentBinding by viewBinding()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- binding.recyclerView.setController(BaseEpoxyController { buildModels() })
+ binding.recyclerView.setControllerAndBuildModels(BaseEpoxyController { buildModels() })
}
override fun invalidate() {
@@ -29,4 +27,4 @@
}
abstract fun EpoxyController.buildModels()
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseFragment.kt
new file mode 100644
index 0000000..d5c148d
--- /dev/null
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseFragment.kt
@@ -0,0 +1,7 @@
+package com.airbnb.lottie.samples.utils
+
+import androidx.annotation.LayoutRes
+import androidx.fragment.app.Fragment
+import com.airbnb.mvrx.MavericksView
+
+abstract class BaseFragment(@LayoutRes contentLayoutId: Int) : Fragment(contentLayoutId), MavericksView
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
deleted file mode 100644
index bcda8a8..0000000
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.airbnb.lottie.samples.utils
-
-import androidx.lifecycle.viewModelScope
-import com.airbnb.lottie.samples.BuildConfig
-import com.airbnb.mvrx.*
-import kotlinx.coroutines.*
-
-abstract class MvRxViewModel<S : MvRxState>(initialState: S) : BaseMvRxViewModel<S>(initialState, BuildConfig.DEBUG) {
- /**
- * This uses [Dispatchers.Main.immediate] by default to mimic [viewModelScope].
- */
- fun <T : Any?> (suspend () -> T).execute(
- dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
- reducer: S.(Async<T>) -> S
- ): Job {
- setState { reducer(Loading()) }
- return viewModelScope.launch(dispatcher) {
- try {
- val result = invoke()
- setState { reducer(Success(result)) }
- } catch (e: CancellationException) {
- throw e
- } catch (e: Exception) {
- setState { reducer(Fail(e)) }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 4fd80ba..e7fc7f9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -7,6 +7,9 @@
plugins {
id 'de.fayard.refreshVersions' version '0.51.0'
+//// # available:'0.60.0'
+//// # available:'0.60.1'
+//// # available:'0.60.2'
}
dependencyResolutionManagement {
diff --git a/snapshot-tests/build.gradle b/snapshot-tests/build.gradle
index 7cfc9f0..ba1e5a0 100644
--- a/snapshot-tests/build.gradle
+++ b/snapshot-tests/build.gradle
@@ -7,11 +7,11 @@
android {
namespace 'com.airbnb.lottie.snapshots'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.airbnb.lottie.snapshots"
minSdk 21
- targetSdk 33
+ targetSdk 34
versionCode 1
versionName VERSION_NAME
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/versions.properties b/versions.properties
index 227d7ca..94dcf4d 100644
--- a/versions.properties
+++ b/versions.properties
@@ -8,26 +8,17 @@
#### suppress inspection "UnusedProperty" for whole file
## unused
-plugin.android=8.0.2
-## # available=8.1.0-alpha01
-## # available=8.1.0-alpha02
-## # available=8.1.0-alpha03
-## # available=8.1.0-alpha04
-## # available=8.1.0-alpha05
-## # available=8.1.0-alpha06
-## # available=8.1.0-alpha07
-## # available=8.1.0-alpha08
-## # available=8.1.0-alpha09
-## # available=8.1.0-alpha10
-## # available=8.1.0-alpha11
-## # available=8.1.0-beta01
+plugin.android=8.1.1
## # available=8.2.0-alpha01
## # available=8.2.0-alpha02
-version.androidx.compose=2023.06.00
+version.androidx.compose=2023.08.00
-## unused
-version.androidx.compose..compose-bom=2023.06.00
+version.androidx.compose.ui=1.5.0
+## # available=1.6.0-alpha01
+## # available=1.6.0-alpha02
+## # available=1.6.0-alpha03
+## # available=1.6.0-alpha04
version.coil-kt=2.4.0
@@ -35,9 +26,6 @@
version.retrofit2=2.9.0
-## unused
-version.org.jacoco..org.jacoco.ant=0.8.10
-
# Do not update to 2.0. It will pull in Kotlin as a transitive dependency into the lottie library.
version.okio=1.17.5
### available=2.0.0-RC1
@@ -74,6 +62,8 @@
### available=3.1.0
### available=3.2.0
### available=3.3.0
+### available=3.4.0
+### available=3.5.0
version.okhttp3=4.11.0
## # available=5.0.0-alpha.1
@@ -89,60 +79,65 @@
## # available=5.0.0-alpha.11
version.mockito=5.3.1
+## # available=5.4.0
+## # available=5.5.0
-version.kotlinx.coroutines=1.7.1
+version.kotlinx.coroutines=1.6.4
-version.kotlin=1.8.21
-## # available=1.8.22
-## # available=1.9.0-Beta
+version.kotlin=1.9.10
version.junit.junit=4.13.2
version.io.jsonwebtoken..jjwt=0.9.1
-version.google.dagger=2.46.1
+version.google.dagger=2.48
version.google.android.material=1.9.0
## # available=1.10.0-alpha01
## # available=1.10.0-alpha02
## # available=1.10.0-alpha03
+## # available=1.10.0-alpha04
+## # available=1.10.0-alpha05
+## # available=1.10.0-alpha06
+## # available=1.11.0-alpha01
+## # available=1.11.0-alpha02
version.com.uber.nullaway..nullaway=0.10.10
+## # available=0.10.11
+## # available=0.10.12
+## # available=0.10.13
version.com.nhaarman.mockitokotlin2..mockito-kotlin=2.2.0
version.com.google.errorprone..error_prone_core=2.19.1
+## # available=2.20.0
+## # available=2.21.0
+## # available=2.21.1
version.com.google.code.gson..gson=2.10.1
-version.com.github.bumptech.glide..glide=4.15.1
+version.com.github.bumptech.glide..glide=4.16.0
version.com.github.PhilJay..MPAndroidChart=3.1.0
version.com.dlazaro66.qrcodereaderview..qrcodereaderview=2.0.2
version.com.amazonaws..aws-android-sdk-s3=2.71.0
+## # available=2.72.0
+## # available=2.73.0
version.com.amazonaws..aws-android-sdk-mobile-client=2.71.0
+## # available=2.72.0
+## # available=2.73.0
version.com.amazonaws..aws-android-sdk-auth-userpools=2.71.0
+## # available=2.72.0
+## # available=2.73.0
-version.com.airbnb.android..mvrx=1.5.1
-## # available=2.0.0-alpha1
-## # available=2.0.0-alpha2
-## # available=2.0.0-alpha3
-## # available=2.0.0-alpha4
-## # available=2.0.0-alpha5
-## # available=2.0.0-alpha6
-## # available=2.0.0-alpha7
-## # available=2.0.0-alpha8
-## # available=2.0.0-beta1
-## # available=2.0.0-beta2
-## # available=2.0.0-beta3
-version.com.airbnb.android..mavericks-compose=3.0.3
+version.com.airbnb.android..mavericks-compose=3.0.6
-version.com.airbnb.android..mavericks=3.0.3
+version.com.airbnb.android..mavericks=3.0.6
version.com.airbnb.android..epoxy-processor=5.1.3
@@ -152,6 +147,7 @@
## # available=2.3.0-alpha01
## # available=2.3.0-alpha02
## # available=2.3.0-alpha03
+## # available=2.3.0-alpha04
version.androidx.test.rules=1.5.0
## # available=1.6.0-alpha01
@@ -167,6 +163,7 @@
version.androidx.recyclerview=1.3.0
## # available=1.3.1-rc01
+## # available=1.3.1
version.androidx.profileinstaller=1.3.1
@@ -178,17 +175,20 @@
## # available=3.2.0-alpha05
## # available=3.2.0-alpha06
## # available=3.2.0-beta01
+## # available=3.2.0-rc01
+## # available=3.2.0
version.androidx.navigation=2.6.0
-## # available=2.7.0-alpha01
-## # available=2.7.0-beta01
version.androidx.multidex=2.0.1
-version.androidx.lifecycle=2.6.1
+version.androidx.lifecycle=2.5.1
+## # available=2.7.0-alpha01
-version.androidx.fragment=1.6.0
+version.androidx.fragment=1.6.1
## # available=1.7.0-alpha01
+## # available=1.7.0-alpha02
+## # available=1.7.0-alpha03
version.androidx.core=1.10.1
## # available=1.11.0-alpha01
@@ -201,11 +201,10 @@
## # available=1.12.0-alpha03
## # available=1.12.0-alpha04
## # available=1.12.0-alpha05
+## # available=1.12.0-beta01
+## # available=1.12.0-rc01
-version.androidx.constraintlayout=2.1.1
-## # available=2.1.2
-## # available=2.1.3
-## # available=2.1.4
+version.androidx.constraintlayout=2.1.4
## # available=2.2.0-alpha01
## # available=2.2.0-alpha02
## # available=2.2.0-alpha03
@@ -216,14 +215,8 @@
## # available=2.2.0-alpha08
## # available=2.2.0-alpha09
## # available=2.2.0-alpha10
-
-version.androidx.compose.ui=1.4.3
-## # available=1.5.0-alpha01
-## # available=1.5.0-alpha02
-## # available=1.5.0-alpha03
-## # available=1.5.0-alpha04
-## # available=1.5.0-beta01
-## # available=1.5.0-beta02
+## # available=2.2.0-alpha11
+## # available=2.2.0-alpha12
## unused
version.androidx.compose.material=1.4.3
@@ -237,7 +230,7 @@
## # available=1.5.0-alpha02
## # available=1.5.0-alpha03
-version.androidx.compose.compiler=1.4.7
+version.androidx.compose.compiler=1.5.3
version.androidx.collection=1.2.0
## # available=1.3.0-dev01
@@ -245,12 +238,16 @@
## # available=1.3.0-alpha02
## # available=1.3.0-alpha03
## # available=1.3.0-alpha04
+## # available=1.3.0-beta01
version.androidx.cardview=1.0.0
version.androidx.browser=1.5.0
## # available=1.6.0-alpha01
## # available=1.6.0-alpha02
+## # available=1.6.0-beta01
+## # available=1.6.0-rc01
+## # available=1.6.0
version.androidx.benchmark=1.1.1
## # available=1.2.0-alpha01
@@ -268,26 +265,36 @@
## # available=1.2.0-alpha13
## # available=1.2.0-alpha14
## # available=1.2.0-alpha15
+## # available=1.2.0-alpha16
+## # available=1.2.0-beta01
+## # available=1.2.0-beta02
+## # available=1.2.0-beta03
+## # available=1.2.0-beta04
+## # available=1.2.0-beta05
version.androidx.appcompat=1.6.1
## # available=1.7.0-alpha01
## # available=1.7.0-alpha02
+## # available=1.7.0-alpha03
-version.androidx.activity=1.7.2
+version.androidx.activity=1.6.1
## # available=1.8.0-alpha01
## # available=1.8.0-alpha02
## # available=1.8.0-alpha03
## # available=1.8.0-alpha04
## # available=1.8.0-alpha05
+## # available=1.8.0-alpha06
+## # available=1.8.0-alpha07
plugin.net.ltgt.errorprone=3.1.0
-plugin.com.google.devtools.ksp=1.8.21-1.0.11
-## # available=1.8.22-1.0.11
-## # available=1.9.0-Beta-1.0.11
+plugin.com.google.devtools.ksp=1.9.10-1.0.13
plugin.org.ajoberstar.grgit=5.2.0
plugin.com.vanniktech.maven.publish=0.25.2
+## # available=0.25.3-rc1
+## # available=0.25.3
plugin.org.jetbrains.dokka=1.8.20
+## # available=1.9.0