diff --git a/README.md b/README.md index f42dec5..afb07c9 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ And then to the module level `build.gradle.kts`: ``` dependencies { - implementation 'com.revolut.rxdata:dod:1.4' - implementation 'com.revolut.rxdata:core:1.4' - implementation 'com.revolut.rxdata:scheduler:1.4' + implementation 'com.revolut.rxdata:dod:1.5.13' + implementation 'com.revolut.rxdata:core:1.5.13' + implementation 'com.revolut.rxdata:scheduler:1.5.13' } ``` diff --git a/dfd/gradle.properties b/dfd/gradle.properties index 0314d80..ad320a0 100644 --- a/dfd/gradle.properties +++ b/dfd/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=dfd -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=dfd POM_PACKAGING=jar GROUP=com.revolut.flowdata diff --git a/dod-wrapper/gradle.properties b/dod-wrapper/gradle.properties index 6844e8e..816a47d 100644 --- a/dod-wrapper/gradle.properties +++ b/dod-wrapper/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=dod-wrapper -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=dod-wrapper POM_PACKAGING=jar GROUP=com.revolut.rxdata diff --git a/dod/gradle.properties b/dod/gradle.properties index 22ac62c..c111629 100644 --- a/dod/gradle.properties +++ b/dod/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=dod -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=dod POM_PACKAGING=jar GROUP=com.revolut.rxdata diff --git a/dod/src/main/java/com/revolut/rxdata/dod/DataObservableDelegate.kt b/dod/src/main/java/com/revolut/rxdata/dod/DataObservableDelegate.kt index b7a1728..510ff17 100644 --- a/dod/src/main/java/com/revolut/rxdata/dod/DataObservableDelegate.kt +++ b/dod/src/main/java/com/revolut/rxdata/dod/DataObservableDelegate.kt @@ -98,15 +98,14 @@ class DataObservableDelegate constructor( * Requests data from network and subscribes to updates * (can be triggered by other subscribers or manual cache overrides) * - * @param forceReload - if true network request will be made even if data exists in caches + * @param loadingStrategy - [LoadingStrategy] */ - @Suppress("RedundantLambdaArrow") - fun observe(params: Params, forceReload: Boolean = true): Observable> = + fun observe(params: Params, loadingStrategy: LoadingStrategy): Observable> = Observable.defer { val memCache = fromMemory(params) val memoryIsEmpty = memCache == null val subject = subject(params) - val loading = forceReload || memoryIsEmpty || failedNetworkRequests.containsKey(params) + val loading = loadingStrategy.refreshMemory || memoryIsEmpty || failedNetworkRequests.containsKey(params) val observable: Observable> = if (memCache != null) { concat( @@ -114,7 +113,7 @@ class DataObservableDelegate constructor( subject ).doAfterSubscribe { if (loading) { - subject.onNext(Data(content = memCache, loading = loading)) + subject.onNext(Data(content = memCache, loading = true)) fetchFromNetwork(memCache, params) } } @@ -125,7 +124,9 @@ class DataObservableDelegate constructor( just(cached), subject ).doAfterSubscribe { - fetchFromNetwork(cached.content, params) + if (loadingStrategy.refreshStorage || cached.content == null) { + fetchFromNetwork(cached.content, params) + } } } .startWith(Data(null, loading = true)) @@ -136,6 +137,19 @@ class DataObservableDelegate constructor( .muteRepetitiveReloading() } + /** + * Requests data from network and subscribes to updates + * (can be triggered by other subscribers or manual cache overrides) + * + * @param forceReload - if true network request will be made even if data exists in caches + */ + @Deprecated( + message = "please migrate to the method with the LoadingStrategy", + replaceWith = ReplaceWith("fun observe(params: Params, loadingStrategy: LoadingStrategy)") + ) + fun observe(params: Params, forceReload: Boolean = true): Observable> = + observe(params, loadingStrategy = if (forceReload) LoadingStrategy.ForceReload else LoadingStrategy.Auto) + private fun Observable>.muteRepetitiveReloading(): Observable> = this.scan(ReloadingDataScanner()) { scanner, newEmit -> scanner.registerData(newEmit) diff --git a/dod/src/main/java/com/revolut/rxdata/dod/LoadingStrategy.kt b/dod/src/main/java/com/revolut/rxdata/dod/LoadingStrategy.kt new file mode 100644 index 0000000..f9516d6 --- /dev/null +++ b/dod/src/main/java/com/revolut/rxdata/dod/LoadingStrategy.kt @@ -0,0 +1,36 @@ +package com.revolut.rxdata.dod + +/** + * [DataObservableDelegate] observation loading strategy + * + * @param refreshMemory - if true data will be fetched from network even if there is something in the memory + * @param refreshStorage - if true data will be fetched from network even if there is something in the storage + */ +sealed class LoadingStrategy( + internal val refreshMemory: Boolean, + internal val refreshStorage: Boolean, +) { + /** + * data will be fetched from the Network even if the data exists in the cache + */ + object ForceReload: LoadingStrategy( + refreshMemory = true, + refreshStorage = true, + ) + + /** + * data will not be fetched from the Network if the data exists in the memory cache + */ + object Auto: LoadingStrategy( + refreshMemory = false, + refreshStorage = true, + ) + + /** + * data will not be fetched from the Network if the data exists in the cache memory or storage + */ + object LazyReload: LoadingStrategy( + refreshMemory = false, + refreshStorage = false, + ) +} \ No newline at end of file diff --git a/dod/src/test/java/com/revolut/rxdata/dod/DataObservableDelegateTest.kt b/dod/src/test/java/com/revolut/rxdata/dod/DataObservableDelegateTest.kt index e67af2c..0cdff23 100644 --- a/dod/src/test/java/com/revolut/rxdata/dod/DataObservableDelegateTest.kt +++ b/dod/src/test/java/com/revolut/rxdata/dod/DataObservableDelegateTest.kt @@ -48,7 +48,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -71,7 +71,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -100,7 +100,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { domain }) - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() verifyNoMoreInteractions(fromNetwork) @@ -118,7 +118,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .firstOrError() // gets storage and unsubscribes before network emits .test() @@ -157,7 +157,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .firstOrError() // gets storage and un-subscribes before network emits .test() @@ -178,7 +178,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) whenever(toStorage.invoke(any(), any())).thenThrow(IllegalStateException()) - val testObserver = dataObservableDelegate.observe(params = params).test() + val testObserver = dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() ioScheduler.triggerActions() @@ -191,7 +191,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) whenever(toMemory.invoke(any(), any())).thenThrow(IllegalStateException()) - val testObserver = dataObservableDelegate.observe(params = params).test() + val testObserver = dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() ioScheduler.triggerActions() @@ -210,7 +210,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .firstOrError() // gets storage and un-subscribes before network emits .test() @@ -239,7 +239,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { val network2 = Single.fromCallable { domain2 } whenever(fromNetwork.invoke(eq(params))).thenReturn(network2) - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .test() ioScheduler.triggerActions() @@ -259,7 +259,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .firstOrError() // gets storage and unsubscribes before network emits .test() @@ -283,7 +283,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) //observing with forceReload = false expecting to trigger network call again - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .firstOrError() // gets storage and unsubscribes before network emits .test() @@ -302,7 +302,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { throw backendException }) storage[params] = cachedDomain - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .test().apply { ioScheduler.triggerActions() } .assertError(backendException) @@ -312,7 +312,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .test().apply { ioScheduler.triggerActions() } .assertValues(cachedDomain, domain) @@ -327,7 +327,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { throw CustomException() }) storage[params] = cachedDomain - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent(consumeErrors = { error, _ -> error.takeUnless { it is CustomException } }) .test().apply { ioScheduler.triggerActions() } .assertValues(cachedDomain) @@ -337,7 +337,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) - dataObservableDelegate.observe(params = params, forceReload = false) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto) .extractContent() .test().apply { ioScheduler.triggerActions() } .assertValues(cachedDomain) @@ -351,7 +351,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = true)) @@ -375,7 +375,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = true)) @@ -392,7 +392,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { throw backendException }) val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -416,7 +416,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -440,7 +440,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = true)) @@ -465,7 +465,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -487,7 +487,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -511,7 +511,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = false)) @@ -528,7 +528,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { throw backendException }) val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -551,7 +551,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(null, error = null, loading = true)) @@ -585,14 +585,14 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver1 = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() testObserver1.assertValueCount(1) testObserver1.assertValueAt(0, Data(content = cachedDomain, error = null, loading = false)) // refresh with result val testObserver2 = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver1.assertValueCount(2) testObserver1.assertValueAt(0, Data(content = cachedDomain, error = null, loading = false)) @@ -612,7 +612,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { //refresh with error val testObserver3 = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver1.assertValueCount(4) testObserver1.assertValueAt(3, Data(content = domain, error = null, loading = true)) @@ -646,7 +646,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { @Test fun `re-subscribing to constructed stream re-fetches memory cache`() { - val observable = dataObservableDelegate.observe(params, forceReload = true) + val observable = dataObservableDelegate.observe(params, loadingStrategy = LoadingStrategy.ForceReload) observable.test().awaitCount(1).dispose() verify(fromMemory, times(1)).invoke(eq(params)) @@ -662,7 +662,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() ioScheduler.triggerActions() @@ -727,7 +727,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromStorage.invoke(any())).thenThrow(error) val testObserver = - dataObservableDelegate.observe(params = params, forceReload = false).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.Auto).test() ioScheduler.triggerActions() @@ -751,7 +751,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) - dataObservableDelegate.observe(params = params, forceReload = true) + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload) .takeUntilLoaded() .test() .apply { ioScheduler.triggerActions() } @@ -767,7 +767,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = true)) @@ -790,7 +790,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = true)) @@ -812,7 +812,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { memCache[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = cachedDomain, error = null, loading = true)) @@ -835,7 +835,7 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { storage[params] = cachedDomain val testObserver = - dataObservableDelegate.observe(params = params, forceReload = true).test() + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.ForceReload).test() testObserver.assertValueCount(1) testObserver.assertValueAt(0, Data(content = null, error = null, loading = true)) @@ -850,4 +850,47 @@ class DataObservableDelegateTest : BaseDataObservableDelegateTest() { testObserver.assertValueCount(3) testObserver.assertValueAt(2, Data(content = cachedDomain, error = RuntimeException())) } + + @Test + fun `WHEN fromMemory returns null, fromStorage has value AND LoadingStrategy is LazyReload THEN subscriber receives storage value`() { + whenever(fromMemory.invoke(any())).thenReturn(null) + storage[params] = cachedDomain + + val testObserver = + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.LazyReload).test() + + testObserver.assertValueCount(1) + testObserver.assertValueAt(0, Data(content = null, error = null, loading = true)) + ioScheduler.triggerActions() + + testObserver.assertValueCount(2) + testObserver.assertValueAt(1, Data(content = cachedDomain, error = null, loading = true)) + + ioScheduler.triggerActions() + + verifyNoMoreInteractions(fromNetwork) + } + + @Test + fun `WHEN fromMemory returns null, fromStorage returns null AND LoadingStrategy is LazyReload THEN subscriber receives network value`() { + whenever(fromNetwork.invoke(eq(params))).thenReturn(Single.fromCallable { domain }) + whenever(fromMemory.invoke(any())).thenReturn(null) + val testObserver = + dataObservableDelegate.observe(params = params, loadingStrategy = LoadingStrategy.LazyReload).test() + + testObserver.assertValueCount(1) + testObserver.assertValueAt(0, Data(content = null, error = null, loading = true)) + ioScheduler.triggerActions() + + testObserver.assertValueCount(2) + testObserver.assertValueAt(1, Data(content = domain, error = null, loading = false)) + + ioScheduler.triggerActions() + + verify(fromNetwork, only()).invoke(eq(params)) + verify(fromMemory, only()).invoke(eq(params)) + verify(toMemory, only()).invoke(eq(params), eq(domain)) + verify(fromStorage, only()).invoke(eq(params)) + verify(toStorage, only()).invoke(eq(params), eq(domain)) + } } diff --git a/flow-extensions/gradle.properties b/flow-extensions/gradle.properties index 91b691d..a81ed18 100644 --- a/flow-extensions/gradle.properties +++ b/flow-extensions/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=extensions -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=flow-core POM_PACKAGING=jar GROUP=com.revolut.flowdata diff --git a/model/gradle.properties b/model/gradle.properties index fec3d22..73a348d 100644 --- a/model/gradle.properties +++ b/model/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=model -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=data POM_PACKAGING=jar GROUP=com.revolut.data diff --git a/rx-extensions/gradle.properties b/rx-extensions/gradle.properties index 981d402..a78437a 100644 --- a/rx-extensions/gradle.properties +++ b/rx-extensions/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=extensions -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=core POM_PACKAGING=jar GROUP=com.revolut.rxdata diff --git a/scheduler/gradle.properties b/scheduler/gradle.properties index b393a68..9950add 100644 --- a/scheduler/gradle.properties +++ b/scheduler/gradle.properties @@ -1,5 +1,5 @@ POM_ARTIFACT_ID=scheduler -VERSION_NAME=1.5.12 +VERSION_NAME=1.5.13 POM_NAME=scheduler POM_PACKAGING=aar GROUP=com.revolut.rxdata