Skip to content

2.5.0-alpha11

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 26 Apr 15:29
· 289 commits to master since this release
2.5.0-alpha11
f4843d4

Breaking Changes

  • New configure { } block DSL replaced the old store configuration properties. You can no longer access store configuration in the store builder. This change was made to ensure users do not access store configuration before it's actually created, because while the store is being built, the configuration may change. Old properties were deprecated. This will also prevent users from changing the store configuration inside the plugins, which makes no sense as the configuration will not change at this point.
  • JobManager plugin will now accept generic parameters. Your code won't compile if you previously did not provide those. Please declare the type explicitly: val jobs: JobManager<String> = manageJobs()
  • #51: Store will now check if it has been launched before it is subscribed to. This will result in an exception if not. Opt-out of this behavior using allowIdleSubscriptions = true. This check will not be run when debuggable = false
  • Many default parameters were removed from multiple plugins because those parameters are now obtained from the Store configuration using Lazy Plugin DSL. This includes logger, debugger, save state and some other plugins. Only non-mandatory parameters were removed. You can safely remove them as well.
  • Removed deprecated: consoleLogging, parentStore, savedState, nativeLogging, androidLogging plugins

New Features

  • Implemented a new Lazy Plugin DSL where plugin will now have access to the store configuration that installs it and that will be built at the store creation time, not at the property instantiation time. This Lazy DSL replaces the old lazyPlugin function.
    • Convert an existing plugin into a lazy one to get access to the config by calling LazyPlugin { config -> }
    • Create a lazy plugin using lazyPlugin and use the config property
  • Ensured subscription events are always sent and processed. This should fix rare bugs where the number of subscribers was quickly conflated to the same value sometimes.
  • Added automatic logging to plugin test dsl
  • Added StoreConfiguration to pipeline context
  • Do not require name for the store in Essenty DSL
  • Added return value to AwaitSubscribers plugin - it will now return the SubscriberManager
  • Implemented two-pane layout for sample app
  • Sample app will now be uploaded for desktop with GH Actions

Bug Fixes

  • Store will now not print logs when the state has not changed (stayed the same)
  • Fixed race with concurrent subscriptions to the store where job was relaunched too many times
  • Fixed store builder allowing to install 0 plugins
  • Use generic iterable for composite plugin
  • Fixed bug report template layout
  • Fixed some outdated documentation
  • Use immediate dispatcher on native store
  • Store Builder plugins are now thread-safe when creating
  • Synchronize disallowRestart plugin operations
  • Add queue size parameter to time travel plugin

Docs

  • Updated docs for v3.0, adding lazy plugin and configure block sections
  • Split documentation into better sections with dedicated pages for android, compose
  • Added lazy plugin explanation to docs
  • Added documentation on prebuilt plugins, explaining how, when and for what to use them

Other

  • Inline reentrant lock calls
  • Add some more inlines to state update functions
  • Provide coroutine scope to plugin test dsl
  • Fixed flaky tests, add tests for while subscribed plugin
  • Internal cleanup of store code
  • Added toString to plugin test scope
  • Made store configuration a public class
  • Compose Multiplatform 1.6.10-beta02