Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@anitaa1990 this change changes some classes which are a domain for #34. Sorry for that! Please feel free to not merge this PR for now until your changes will land and then I'll resolve conflicts. I create this PR to gather early feedback.
Decision log
Why modularize now?
Using modules we can work on this library effectively, part by part. After encapsulating domain-related classes into a separate module, I was able to compile it and even run tests:
We can also run static code analysis:
So we are sure that
domain
part is correct.Why changes related to
UiString
andUri/UriWrapper
?The
MediaLoader
in its origin has a dependency to the presentation layer: it usesUiString
(which covers a UI logic). AlsoMediaItem
, a domain model, has dependency toandroid.net.Uri
. As suggested architecture follows Clean Architecture principles, we should keep ourdomain
module platform-agnostic. This is why I've decided to removeUiString
and change how we work withUri
s - now withvalue class
wrapper on it in domain module.Closes: #44
Closes: #31