DI in Bluetooth Module - Additional modules - Convention Plugins
:recycle: Current situation & Problem
First iteration was using a listener / callback approach, which was causing a tight coupling of the components and made unit testing harder.
Instead we now introduce DI via Hilt, and a reactive approach for handling events and states of bluetooth related compontens using Kotlin flows APIs and Coroutines.
Furthermore, adjustments to the convention plugins and version catalogs were done, hopefully extracting and grouping the dependencies in appropriate bundles to be reused.
Additionally, these modules were introduced:
:core:coroutines which provides various dispatchers and coroutine scopes to support asynchronous operations, and dispatching to appropriate threads
:core:logging a module that exposes a wrapper API on timber, with additional capabilities, such as deriving the tag from the component that it is being defined to.
:core:utils a module that should contain helper functionalities such as extension functions needed throughout other the project.
Add documentation (in README.md files) of new modules with example usages
Extend documentation of convention plugin usages
Add unit tests to all bluetooth related components
Extract constants of measurement data parsing
:gear: Release Notes
Add a bullet point list summary of the feature and possible migration guides if this is a breaking change so this section can be added to the release notes.Include code snippets that provide examples of the feature implemented or links to the documentation if it appends or changes the public interface.
:books: Documentation
Please ensure that you properly document any additions in conformance to Spezi Documentation Guide.You can use this section to describe your solution, but we encourage contributors to document your reasoning and changes using in-line documentation.
:white_check_mark: Testing
Please ensure that the PR meets the testing requirements set by CodeCov and that new functionality is appropriately tested.This section describes important information about the tests and why some elements might not be testable.
:pencil: Code of Conduct & Contributing Guidelines
DI in Bluetooth Module - Additional modules - Convention Plugins
:recycle: Current situation & Problem
First iteration was using a listener / callback approach, which was causing a tight coupling of the components and made unit testing harder.
Instead we now introduce DI via Hilt, and a reactive approach for handling events and states of bluetooth related compontens using Kotlin flows APIs and Coroutines.
Furthermore, adjustments to the convention plugins and version catalogs were done, hopefully extracting and grouping the dependencies in appropriate bundles to be reused.
Additionally, these modules were introduced:
:core:coroutines
which provides various dispatchers and coroutine scopes to support asynchronous operations, and dispatching to appropriate threads:core:logging
a module that exposes a wrapper API on timber, with additional capabilities, such as deriving thetag
from the component that it is being defined to.:core:utils
a module that should contain helper functionalities such as extension functions needed throughout other the project.TODO:
:gear: Release Notes
Add a bullet point list summary of the feature and possible migration guides if this is a breaking change so this section can be added to the release notes. Include code snippets that provide examples of the feature implemented or links to the documentation if it appends or changes the public interface.
:books: Documentation
Please ensure that you properly document any additions in conformance to Spezi Documentation Guide. You can use this section to describe your solution, but we encourage contributors to document your reasoning and changes using in-line documentation.
:white_check_mark: Testing
Please ensure that the PR meets the testing requirements set by CodeCov and that new functionality is appropriately tested. This section describes important information about the tests and why some elements might not be testable.
:pencil: Code of Conduct & Contributing Guidelines
By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines: