Skip to content

F-116: sample domain use cases; kill GlobalScope in list paging - #252

Merged
stepango merged 1 commit into
v2from
forma/F-116-sample-clean-arch
Aug 6, 2026
Merged

F-116: sample domain use cases; kill GlobalScope in list paging#252
stepango merged 1 commit into
v2from
forma/F-116-sample-clean-arch

Conversation

@stepango

@stepango stepango commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Closes GH #48 / F-116: gold sample clean architecture for characters list/detail.

  • Domain use cases on feature/characters/core (IGetCharactersUseCase / IGetCharacterUseCase + impls)
  • Exposed via CharactersCoreFeature (same Dagger component-dependency pattern as favorite)
  • List paging DataSource is a thin adapter: use case + CoroutineScope from viewModelScopeno GlobalScope, no direct MarvelRepository
  • Detail VM uses IGetCharacterUseCase instead of repository
  • Docs: docs/SAMPLE-APP.md characters layering section

Verify (host)

cd application && ./gradlew :feature-characters-list-impl:compileDebugKotlin   :feature-characters-detail-impl:compileDebugKotlin   :feature-characters-core-impl:compileDebugKotlin   :binary:assembleDebug
# BUILD SUCCESSFUL
grep -R GlobalScope application --include='*.kt'  # empty

Matrix / axioms

  • No implimpl, no androidLibrary, no Forma engine changes
  • Presentation depends on use-case interfaces from core.api only

Closes #48

Expose IGetCharactersUseCase / IGetCharacterUseCase on characters core;
list paging and detail VM depend on use-case ports with viewModelScope.
Closes GH #48 criteria for presentation↔data decoupling.
@stepango
stepango merged commit be1dfc1 into v2 Aug 6, 2026
@stepango
stepango deleted the forma/F-116-sample-clean-arch branch August 6, 2026 18:00
@stepango stepango mentioned this pull request Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant