├── .circleci
└── config.yml
├── .codecov
└── config.yml
├── .detekt
└── config.yml
├── .editorconfig
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .lint
└── config.xml
├── .spotless
└── copyright.kt
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle.kts
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── kotlin
│ │ └── com
│ │ └── vmadalin
│ │ └── android
│ │ └── ExampleInstrumentedTest.kt
│ ├── debug
│ └── res
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ ├── main
│ ├── AndroidManifest.xml
│ ├── ic_launcher_playstore.png
│ ├── kotlin
│ │ └── com
│ │ │ └── vmadalin
│ │ │ └── android
│ │ │ ├── SampleApp.kt
│ │ │ ├── SampleMainActivity.kt
│ │ │ └── di
│ │ │ ├── AppComponent.kt
│ │ │ └── AppModule.kt
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── navigation
│ │ └── navigation_app_graph.xml
│ │ ├── values-night
│ │ ├── colors.xml
│ │ └── styles.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── features.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── prod
│ ├── AndroidManifest.xml
│ └── res
│ │ └── values
│ │ └── strings.xml
│ └── qa
│ ├── AndroidManifest.xml
│ └── res
│ └── values
│ └── strings.xml
├── build.gradle.kts
├── buildSrc
├── build.gradle.kts
└── src
│ └── main
│ └── kotlin
│ ├── BuildAndroidConfig.kt
│ ├── BuildDependenciesVersions.kt
│ ├── BuildModules.kt
│ ├── BuildPlugins.kt
│ ├── BuildProductDimensions.kt
│ ├── BuildProductFlavors.kt
│ ├── BuildTasksGroups.kt
│ ├── BuildTypes.kt
│ ├── commons
│ ├── android-dynamic-feature.gradle.kts
│ ├── android-library.gradle.kts
│ └── kotlin-library.gradle.kts
│ ├── dependencies
│ ├── AnnotationProcessorsDependencies.kt
│ ├── DebugDependencies.kt
│ ├── Dependencies.kt
│ ├── TestAndroidDependencies.kt
│ └── TestDependencies.kt
│ ├── extensions
│ ├── BuildTypeExtensions.kt
│ ├── DependencyHandlerExtensions.kt
│ ├── ProjectExtensions.kt
│ └── RepositoryHandlerExtensions.kt
│ ├── plugins
│ ├── detekt.gradle.kts
│ ├── dokka.gradle.kts
│ ├── git-hooks.gradle.kts
│ ├── ktlint.gradle.kts
│ ├── spotless.gradle.kts
│ └── update-dependencies.gradle.kts
│ └── utils
│ ├── BuildUtils.kt
│ ├── CrashlyticsUtils.kt
│ └── SystemOSUtils.kt
├── commons
├── ui
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── vmadalin
│ │ │ │ └── commons
│ │ │ │ └── ui
│ │ │ │ ├── base
│ │ │ │ ├── BaseFragment.kt
│ │ │ │ ├── BaseListAdapter.kt
│ │ │ │ ├── BasePagedListAdapter.kt
│ │ │ │ ├── BaseViewHolder.kt
│ │ │ │ └── BaseViewState.kt
│ │ │ │ ├── bindings
│ │ │ │ ├── ImageViewBindings.kt
│ │ │ │ ├── RecyclerViewBindings.kt
│ │ │ │ └── ViewBindings.kt
│ │ │ │ ├── extensions
│ │ │ │ ├── ContextExtensions.kt
│ │ │ │ ├── FragmentExtensions.kt
│ │ │ │ ├── LifecycleOwnerExtensions.kt
│ │ │ │ ├── NavigationExtensions.kt
│ │ │ │ └── RecyclerViewExtensions.kt
│ │ │ │ ├── livedata
│ │ │ │ └── SingleLiveData.kt
│ │ │ │ └── recyclerview
│ │ │ │ └── RecyclerViewItemDecoration.kt
│ │ └── res
│ │ │ └── values
│ │ │ └── colors.xml
│ │ └── test
│ │ ├── kotlin
│ │ └── com
│ │ │ └── vmadalin
│ │ │ └── commons
│ │ │ └── ui
│ │ │ ├── base
│ │ │ ├── BaseFragmentTest.kt
│ │ │ ├── BaseListAdapterTest.kt
│ │ │ ├── BasePagedListAdapterTest.kt
│ │ │ └── BaseViewHolderTest.kt
│ │ │ ├── bindings
│ │ │ ├── RecyclerViewBindingTest.kt
│ │ │ └── ViewBindingsTest.kt
│ │ │ ├── extensions
│ │ │ ├── ContextExtensionsTest.kt
│ │ │ ├── FragmentExtensionsTest.kt
│ │ │ ├── LifecycleOwnerExtensionsTest.kt
│ │ │ └── RecyclerViewExtensionsTest.kt
│ │ │ ├── livedata
│ │ │ └── SingleLiveDataTest.kt
│ │ │ └── recyckerview
│ │ │ └── RecyclerViewItemDecorationTest.kt
│ │ └── resources
│ │ └── mockito-extensions
│ │ └── org.mockito.plugins.MockMaker
└── views
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ └── com
│ │ └── vmadalin
│ │ └── commons
│ │ └── views
│ │ └── ProgressBarDialog.kt
│ └── res
│ ├── drawable
│ └── shape_progress_dialog.xml
│ ├── layout
│ └── view_progress_dialog.xml
│ └── values
│ ├── dimens.xml
│ └── styles.xml
├── core
├── .gitignore
├── build.gradle.kts
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ │ └── com
│ │ └── vmadalin
│ │ └── core
│ │ ├── annotations
│ │ └── OpenForTesting.kt
│ │ ├── database
│ │ ├── MarvelDatabase.kt
│ │ ├── characterfavorite
│ │ │ ├── CharacterFavorite.kt
│ │ │ ├── CharacterFavoriteDao.kt
│ │ │ └── CharacterFavoriteRepository.kt
│ │ └── migrations
│ │ │ └── MarvelDatabaseMigration1to2.kt
│ │ ├── di
│ │ ├── CoreComponent.kt
│ │ ├── modules
│ │ │ ├── ContextModule.kt
│ │ │ ├── DatabaseModule.kt
│ │ │ ├── NetworkModule.kt
│ │ │ └── UtilsModule.kt
│ │ └── scopes
│ │ │ ├── AppScope.kt
│ │ │ └── FeatureScope.kt
│ │ ├── extensions
│ │ ├── ByteArrayExtensions.kt
│ │ └── StringExtensions.kt
│ │ ├── mapper
│ │ └── Mapper.kt
│ │ ├── network
│ │ ├── NetworkState.kt
│ │ ├── repositiories
│ │ │ └── MarvelRepository.kt
│ │ ├── responses
│ │ │ ├── BaseResponse.kt
│ │ │ ├── CharacterResponse.kt
│ │ │ ├── CharacterThumbnailResponse.kt
│ │ │ └── DataResponse.kt
│ │ └── services
│ │ │ └── MarvelService.kt
│ │ └── utils
│ │ ├── ThemeUtils.kt
│ │ └── ThemeUtilsImpl.kt
│ └── test
│ ├── kotlin
│ └── com
│ │ └── vmadalin
│ │ └── core
│ │ ├── database
│ │ ├── MarvelDatabaseTest.kt
│ │ ├── charactersfavorite
│ │ │ ├── CharacterFavoriteDaoTest.kt
│ │ │ ├── CharacterFavoriteRepositoryTest.kt
│ │ │ └── CharacterFavoriteTest.kt
│ │ └── migrations
│ │ │ └── MarvelDatabaseMigration1to2Test.kt
│ │ ├── di
│ │ ├── ContextModuleTest.kt
│ │ ├── DatabaseModuleTest.kt
│ │ └── NetworkModuleTest.kt
│ │ ├── extensions
│ │ ├── ByteArrayExtensionsTest.kt
│ │ └── StringExtensionsTest.kt
│ │ ├── network
│ │ ├── NetworkStateTest.kt
│ │ ├── repositories
│ │ │ └── MarvelRepositoryTest.kt
│ │ ├── responses
│ │ │ ├── BaseResponseTest.kt
│ │ │ ├── CharacterResponseTest.kt
│ │ │ ├── CharacterThumbnailResponseTest.kt
│ │ │ └── DataResponseTest.kt
│ │ └── services
│ │ │ └── MarvelServiceTest.kt
│ │ └── utils
│ │ └── ThemeUtilsTest.kt
│ └── resources
│ ├── mock-responses
│ ├── get-character-id-status200.json
│ ├── get-character-id-status401.json
│ ├── get-character-id-status404.json
│ ├── get-characters-status200.json
│ ├── get-characters-status204.json
│ └── get-characters-status401.json
│ └── mockito-extensions
│ └── org.mockito.plugins.MockMaker
├── docs
├── _config.yml
├── app
│ ├── alltypes
│ │ └── index.html
│ ├── com.vmadalin.android.di
│ │ ├── -app-component
│ │ │ ├── index.html
│ │ │ └── inject.html
│ │ ├── -app-module
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ └── provide-context.html
│ │ └── index.html
│ ├── com.vmadalin.android
│ │ ├── -sample-app
│ │ │ ├── -init-.html
│ │ │ ├── core-component.html
│ │ │ ├── index.html
│ │ │ ├── on-create.html
│ │ │ └── theme-utils.html
│ │ ├── -sample-main-activity
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ └── on-create.html
│ │ └── index.html
│ ├── index-outline.html
│ ├── index.html
│ └── package-list
├── commons
│ ├── index.html
│ ├── ui
│ │ ├── alltypes
│ │ │ └── index.html
│ │ ├── com.vmadalin.commons.ui.base
│ │ │ ├── -base-fragment
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-attach.html
│ │ │ │ ├── on-create-view.html
│ │ │ │ ├── on-init-data-binding.html
│ │ │ │ ├── on-init-dependency-injection.html
│ │ │ │ ├── on-view-created.html
│ │ │ │ ├── require-compat-activity.html
│ │ │ │ ├── view-binding.html
│ │ │ │ └── view-model.html
│ │ │ ├── -base-list-adapter
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ └── on-create-view-holder.html
│ │ │ ├── -base-paged-list-adapter
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-attached-to-recycler-view.html
│ │ │ │ ├── on-create-view-holder.html
│ │ │ │ ├── on-detached-from-recycler-view.html
│ │ │ │ └── submit-list.html
│ │ │ ├── -base-view-holder
│ │ │ │ ├── -init-.html
│ │ │ │ ├── binding.html
│ │ │ │ └── index.html
│ │ │ ├── -base-view-state.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.commons.ui.bindings
│ │ │ ├── android.view.-view
│ │ │ │ ├── gone.html
│ │ │ │ ├── index.html
│ │ │ │ ├── invisible.html
│ │ │ │ └── visible.html
│ │ │ ├── android.widget.-image-view
│ │ │ │ ├── image-url.html
│ │ │ │ └── index.html
│ │ │ ├── androidx.recyclerview.widget.-recycler-view
│ │ │ │ ├── index.html
│ │ │ │ └── set-item-decoration-spacing.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.commons.ui.extensions
│ │ │ ├── android.content.-context
│ │ │ │ ├── get-string.html
│ │ │ │ └── index.html
│ │ │ ├── androidx.fragment.app.-fragment
│ │ │ │ ├── index.html
│ │ │ │ └── view-model.html
│ │ │ ├── androidx.lifecycle.-lifecycle-owner
│ │ │ │ ├── index.html
│ │ │ │ └── observe.html
│ │ │ ├── androidx.recyclerview.widget.-recycler-view
│ │ │ │ ├── grid-layout-manager.html
│ │ │ │ ├── index.html
│ │ │ │ └── linear-layout-manager.html
│ │ │ ├── com.google.android.material.bottomnavigation.-bottom-navigation-view
│ │ │ │ ├── index.html
│ │ │ │ └── setup-with-nav-controller.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.commons.ui.livedata
│ │ │ ├── -single-live-data
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── observe.html
│ │ │ │ └── set-value.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.commons.ui.recyclerview
│ │ │ ├── -recycler-view-item-decoration
│ │ │ │ ├── -init-.html
│ │ │ │ ├── get-item-offsets.html
│ │ │ │ └── index.html
│ │ │ └── index.html
│ │ ├── index-outline.html
│ │ ├── index.html
│ │ └── package-list
│ └── views
│ │ ├── alltypes
│ │ └── index.html
│ │ ├── com.vmadalin.commons.views
│ │ ├── -progress-bar-dialog
│ │ │ ├── -init-.html
│ │ │ ├── dismiss-with-error-message.html
│ │ │ ├── index.html
│ │ │ ├── show.html
│ │ │ └── view-binding.html
│ │ └── index.html
│ │ ├── index-outline.html
│ │ ├── index.html
│ │ └── package-list
├── core
│ ├── alltypes
│ │ └── index.html
│ ├── com.vmadalin.core.annotations
│ │ ├── -open-class
│ │ │ ├── -init-.html
│ │ │ └── index.html
│ │ ├── -open-for-testing
│ │ │ ├── -init-.html
│ │ │ └── index.html
│ │ └── index.html
│ ├── com.vmadalin.core.database.characterfavorite
│ │ ├── -character-favorite-dao
│ │ │ ├── delete-all-characters-favorite.html
│ │ │ ├── delete-character-favorite-by-id.html
│ │ │ ├── delete-character-favorite.html
│ │ │ ├── get-all-characters-favorite-live-data.html
│ │ │ ├── get-all-characters-favorite.html
│ │ │ ├── get-character-favorite.html
│ │ │ ├── index.html
│ │ │ ├── insert-character-favorite.html
│ │ │ └── insert-characters-favorites.html
│ │ ├── -character-favorite-repository
│ │ │ ├── -init-.html
│ │ │ ├── delete-all-characters-favorite.html
│ │ │ ├── delete-character-favorite-by-id.html
│ │ │ ├── delete-character-favorite.html
│ │ │ ├── get-all-characters-favorite-live-data.html
│ │ │ ├── get-all-characters-favorite.html
│ │ │ ├── get-character-favorite.html
│ │ │ ├── index.html
│ │ │ ├── insert-character-favorite.html
│ │ │ └── insert-characters-favorites.html
│ │ ├── -character-favorite
│ │ │ ├── -init-.html
│ │ │ ├── id.html
│ │ │ ├── image-url.html
│ │ │ ├── index.html
│ │ │ └── name.html
│ │ └── index.html
│ ├── com.vmadalin.core.database.migrations
│ │ ├── -m-i-g-r-a-t-i-o-n_1_2.html
│ │ └── index.html
│ ├── com.vmadalin.core.database
│ │ ├── -marvel-database
│ │ │ ├── -init-.html
│ │ │ ├── character-favorite-dao.html
│ │ │ └── index.html
│ │ └── index.html
│ ├── com.vmadalin.core.di.modules
│ │ ├── -context-module
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ └── provide-context.html
│ │ ├── -database-module
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ ├── provide-character-favorite-dao.html
│ │ │ ├── provide-character-favorite-repository.html
│ │ │ └── provide-marvel-database.html
│ │ ├── -network-module
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ ├── provide-http-client.html
│ │ │ ├── provide-http-logging-interceptor.html
│ │ │ ├── provide-marvel-repository.html
│ │ │ ├── provide-marvel-service.html
│ │ │ └── provide-retrofit-builder.html
│ │ ├── -utils-module
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ └── provide-theme-utils.html
│ │ └── index.html
│ ├── com.vmadalin.core.di.scopes
│ │ ├── -app-scope
│ │ │ ├── -init-.html
│ │ │ └── index.html
│ │ ├── -feature-scope
│ │ │ ├── -init-.html
│ │ │ └── index.html
│ │ └── index.html
│ ├── com.vmadalin.core.di
│ │ ├── -core-component
│ │ │ ├── character-favorite-dao.html
│ │ │ ├── context.html
│ │ │ ├── index.html
│ │ │ ├── marvel-repository.html
│ │ │ ├── marvel-service.html
│ │ │ └── theme-utils.html
│ │ └── index.html
│ ├── com.vmadalin.core.extensions
│ │ ├── index.html
│ │ ├── kotlin.-byte-array
│ │ │ ├── index.html
│ │ │ └── to-hex.html
│ │ └── kotlin.-string
│ │ │ ├── index.html
│ │ │ └── to-m-d5.html
│ ├── com.vmadalin.core.mapper
│ │ ├── -mapper
│ │ │ ├── index.html
│ │ │ └── map.html
│ │ └── index.html
│ ├── com.vmadalin.core.network.repositiories
│ │ ├── -marvel-repository
│ │ │ ├── -init-.html
│ │ │ ├── get-character.html
│ │ │ ├── get-characters.html
│ │ │ └── index.html
│ │ └── index.html
│ ├── com.vmadalin.core.network.responses
│ │ ├── -base-response
│ │ │ ├── -init-.html
│ │ │ ├── code.html
│ │ │ ├── data.html
│ │ │ ├── index.html
│ │ │ ├── message.html
│ │ │ └── status.html
│ │ ├── -character-response
│ │ │ ├── -init-.html
│ │ │ ├── description.html
│ │ │ ├── id.html
│ │ │ ├── index.html
│ │ │ ├── name.html
│ │ │ └── thumbnail.html
│ │ ├── -character-thumbnail-response
│ │ │ ├── -init-.html
│ │ │ ├── extension.html
│ │ │ ├── index.html
│ │ │ └── path.html
│ │ ├── -data-response
│ │ │ ├── -init-.html
│ │ │ ├── count.html
│ │ │ ├── index.html
│ │ │ ├── limit.html
│ │ │ ├── offset.html
│ │ │ ├── results.html
│ │ │ └── total.html
│ │ └── index.html
│ ├── com.vmadalin.core.network.services
│ │ ├── -marvel-service
│ │ │ ├── get-character.html
│ │ │ ├── get-characters.html
│ │ │ └── index.html
│ │ └── index.html
│ ├── com.vmadalin.core.network
│ │ ├── -network-state
│ │ │ ├── -error
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ └── is-additional.html
│ │ │ ├── -loading
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ └── is-additional.html
│ │ │ ├── -success
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── is-additional.html
│ │ │ │ └── is-empty-response.html
│ │ │ ├── index.html
│ │ │ ├── is-error.html
│ │ │ ├── is-loading.html
│ │ │ └── is-success.html
│ │ └── index.html
│ ├── com.vmadalin.core.utils
│ │ ├── -theme-utils
│ │ │ ├── -init-.html
│ │ │ ├── index.html
│ │ │ ├── is-dark-theme.html
│ │ │ ├── is-light-theme.html
│ │ │ └── set-night-mode.html
│ │ └── index.html
│ ├── index-outline.html
│ ├── index.html
│ └── package-list
├── features
│ ├── characters_favorites
│ │ ├── alltypes
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite.adapter.holders
│ │ │ ├── -character-favorite-view-holder
│ │ │ │ ├── -init-.html
│ │ │ │ ├── bind.html
│ │ │ │ └── index.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite.adapter
│ │ │ ├── -characters-favorite-adapter
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-bind-view-holder.html
│ │ │ │ └── on-create-view-holder.html
│ │ │ ├── -characters-favorite-touch-helper
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-move.html
│ │ │ │ └── on-swiped.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite.di
│ │ │ ├── -characters-favorite-component
│ │ │ │ ├── index.html
│ │ │ │ └── inject.html
│ │ │ ├── -characters-favorite-module
│ │ │ │ ├── -init-.html
│ │ │ │ ├── fragment.html
│ │ │ │ ├── index.html
│ │ │ │ ├── provides-characters-favorite-adapter.html
│ │ │ │ └── provides-characters-favorite-view-model.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite
│ │ │ ├── -characters-favorite-fragment
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-init-data-binding.html
│ │ │ │ ├── on-init-dependency-injection.html
│ │ │ │ ├── on-view-created.html
│ │ │ │ └── view-adapter.html
│ │ │ ├── -characters-favorite-view-model
│ │ │ │ ├── -init-.html
│ │ │ │ ├── character-favorite-repository.html
│ │ │ │ ├── data.html
│ │ │ │ ├── index.html
│ │ │ │ ├── remove-favorite-character.html
│ │ │ │ └── state.html
│ │ │ ├── -characters-favorite-view-state
│ │ │ │ ├── -empty.html
│ │ │ │ ├── -listed.html
│ │ │ │ ├── index.html
│ │ │ │ ├── is-empty.html
│ │ │ │ └── is-listed.html
│ │ │ └── index.html
│ │ ├── index-outline.html
│ │ ├── index.html
│ │ └── package-list
│ ├── characters_list
│ │ ├── alltypes
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.detail.di
│ │ │ ├── -character-detail-component
│ │ │ │ ├── index.html
│ │ │ │ └── inject.html
│ │ │ ├── -character-detail-module
│ │ │ │ ├── -init-.html
│ │ │ │ ├── fragment.html
│ │ │ │ ├── index.html
│ │ │ │ ├── provides-character-detail-mapper.html
│ │ │ │ ├── provides-character-detail-view-model.html
│ │ │ │ └── provides-progress-bar-dialog.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.detail.model
│ │ │ ├── -character-detail-mapper
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ └── map.html
│ │ │ ├── -character-detail
│ │ │ │ ├── -init-.html
│ │ │ │ ├── description.html
│ │ │ │ ├── id.html
│ │ │ │ ├── image-url.html
│ │ │ │ ├── index.html
│ │ │ │ └── name.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.detail
│ │ │ ├── -character-detail-fragment
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-init-data-binding.html
│ │ │ │ ├── on-init-dependency-injection.html
│ │ │ │ ├── on-view-created.html
│ │ │ │ └── progress-dialog.html
│ │ │ ├── -character-detail-view-model
│ │ │ │ ├── -init-.html
│ │ │ │ ├── add-character-to-favorite.html
│ │ │ │ ├── character-detail-mapper.html
│ │ │ │ ├── character-favorite-repository.html
│ │ │ │ ├── data.html
│ │ │ │ ├── dismiss-character-detail.html
│ │ │ │ ├── index.html
│ │ │ │ ├── load-character-detail.html
│ │ │ │ ├── marvel-repository.html
│ │ │ │ └── state.html
│ │ │ ├── -character-detail-view-state
│ │ │ │ ├── -add-to-favorite.html
│ │ │ │ ├── -added-to-favorite.html
│ │ │ │ ├── -already-added-to-favorite.html
│ │ │ │ ├── -dismiss.html
│ │ │ │ ├── -error.html
│ │ │ │ ├── -loading.html
│ │ │ │ ├── index.html
│ │ │ │ ├── is-add-to-favorite.html
│ │ │ │ ├── is-added-to-favorite.html
│ │ │ │ ├── is-already-added-to-favorite.html
│ │ │ │ ├── is-dismiss.html
│ │ │ │ ├── is-error.html
│ │ │ │ └── is-loading.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter.holders
│ │ │ ├── -character-view-holder
│ │ │ │ ├── -init-.html
│ │ │ │ ├── bind.html
│ │ │ │ └── index.html
│ │ │ ├── -error-view-holder
│ │ │ │ ├── -init-.html
│ │ │ │ ├── bind.html
│ │ │ │ └── index.html
│ │ │ ├── -loading-view-holder
│ │ │ │ ├── -init-.html
│ │ │ │ └── index.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter
│ │ │ ├── -characters-list-adapter-state
│ │ │ │ ├── -add-error.html
│ │ │ │ ├── -add-loading.html
│ │ │ │ ├── -added.html
│ │ │ │ ├── -no-more.html
│ │ │ │ ├── has-extra-row.html
│ │ │ │ ├── index.html
│ │ │ │ ├── is-add-error.html
│ │ │ │ ├── is-add-loading.html
│ │ │ │ ├── is-added.html
│ │ │ │ └── is-no-more.html
│ │ │ ├── -characters-list-adapter
│ │ │ │ ├── -init-.html
│ │ │ │ ├── get-item-count.html
│ │ │ │ ├── get-item-id.html
│ │ │ │ ├── get-item-view-type.html
│ │ │ │ ├── get-span-size-lookup.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-bind-view-holder.html
│ │ │ │ ├── on-create-view-holder.html
│ │ │ │ ├── submit-state.html
│ │ │ │ └── view-model.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.list.di
│ │ │ ├── -characters-list-component
│ │ │ │ ├── index.html
│ │ │ │ └── inject.html
│ │ │ ├── -characters-list-module
│ │ │ │ ├── -init-.html
│ │ │ │ ├── fragment.html
│ │ │ │ ├── index.html
│ │ │ │ ├── provides-character-item-mapper.html
│ │ │ │ ├── provides-characters-list-adapter.html
│ │ │ │ ├── provides-characters-list-view-model.html
│ │ │ │ └── provides-characters-page-data-source.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.list.model
│ │ │ ├── -character-item-mapper
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ └── map.html
│ │ │ ├── -character-item
│ │ │ │ ├── -init-.html
│ │ │ │ ├── description.html
│ │ │ │ ├── id.html
│ │ │ │ ├── image-url.html
│ │ │ │ ├── index.html
│ │ │ │ └── name.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.list.paging
│ │ │ ├── -characters-page-data-source-factory
│ │ │ │ ├── -init-.html
│ │ │ │ ├── create.html
│ │ │ │ ├── index.html
│ │ │ │ ├── provider-data-source.html
│ │ │ │ ├── refresh.html
│ │ │ │ ├── retry.html
│ │ │ │ └── source-live-data.html
│ │ │ ├── -characters-page-data-source
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── load-after.html
│ │ │ │ ├── load-before.html
│ │ │ │ ├── load-initial.html
│ │ │ │ ├── mapper.html
│ │ │ │ ├── network-state.html
│ │ │ │ ├── repository.html
│ │ │ │ ├── retry.html
│ │ │ │ └── scope.html
│ │ │ ├── -p-a-g-e_-i-n-i-t_-e-l-e-m-e-n-t-s.html
│ │ │ ├── -p-a-g-e_-m-a-x_-e-l-e-m-e-n-t-s.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.characterslist.ui.list
│ │ │ ├── -characters-list-fragment
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-init-data-binding.html
│ │ │ │ ├── on-init-dependency-injection.html
│ │ │ │ ├── on-view-created.html
│ │ │ │ └── view-adapter.html
│ │ │ ├── -characters-list-view-event
│ │ │ │ ├── -open-character-detail
│ │ │ │ │ ├── -init-.html
│ │ │ │ │ ├── id.html
│ │ │ │ │ └── index.html
│ │ │ │ └── index.html
│ │ │ ├── -characters-list-view-model
│ │ │ │ ├── -init-.html
│ │ │ │ ├── data-source-factory.html
│ │ │ │ ├── data.html
│ │ │ │ ├── event.html
│ │ │ │ ├── index.html
│ │ │ │ ├── network-state.html
│ │ │ │ ├── open-character-detail.html
│ │ │ │ ├── refresh-loaded-characters-list.html
│ │ │ │ ├── retry-add-characters-list.html
│ │ │ │ └── state.html
│ │ │ ├── -characters-list-view-state
│ │ │ │ ├── -add-error.html
│ │ │ │ ├── -add-loading.html
│ │ │ │ ├── -empty.html
│ │ │ │ ├── -error.html
│ │ │ │ ├── -loaded.html
│ │ │ │ ├── -loading.html
│ │ │ │ ├── -no-more-elements.html
│ │ │ │ ├── -refreshing.html
│ │ │ │ ├── index.html
│ │ │ │ ├── is-add-error.html
│ │ │ │ ├── is-add-loading.html
│ │ │ │ ├── is-empty.html
│ │ │ │ ├── is-error.html
│ │ │ │ ├── is-loaded.html
│ │ │ │ ├── is-loading.html
│ │ │ │ ├── is-no-more-elements.html
│ │ │ │ └── is-refreshing.html
│ │ │ └── index.html
│ │ ├── index-outline.html
│ │ ├── index.html
│ │ └── package-list
│ ├── home
│ │ ├── alltypes
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.home.ui.di
│ │ │ ├── -home-component
│ │ │ │ ├── index.html
│ │ │ │ └── inject.html
│ │ │ ├── -home-module
│ │ │ │ ├── -init-.html
│ │ │ │ ├── fragment.html
│ │ │ │ ├── index.html
│ │ │ │ └── provides-home-view-model.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.home.ui.menu
│ │ │ ├── -toggle-theme-check-box
│ │ │ │ ├── -init-.html
│ │ │ │ └── index.html
│ │ │ └── index.html
│ │ ├── com.vmadalin.dynamicfeatures.home.ui
│ │ │ ├── -home-fragment
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── on-create-options-menu.html
│ │ │ │ ├── on-init-data-binding.html
│ │ │ │ ├── on-init-dependency-injection.html
│ │ │ │ ├── on-view-created.html
│ │ │ │ ├── on-view-state-restored.html
│ │ │ │ └── theme-utils.html
│ │ │ ├── -home-view-model
│ │ │ │ ├── -init-.html
│ │ │ │ ├── index.html
│ │ │ │ ├── navigation-controller-changed.html
│ │ │ │ └── state.html
│ │ │ ├── -home-view-state
│ │ │ │ ├── -full-screen.html
│ │ │ │ ├── -navigation-screen.html
│ │ │ │ ├── index.html
│ │ │ │ ├── is-full-screen.html
│ │ │ │ └── is-navigation-screen.html
│ │ │ ├── -n-a-v_-f-r-a-g-m-e-n-t-s_-i-d.html
│ │ │ └── index.html
│ │ ├── index-outline.html
│ │ ├── index.html
│ │ └── package-list
│ └── index.html
├── index.html
└── style.css
├── features
├── characters_favorites
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── vmadalin
│ │ │ │ └── dynamicfeatures
│ │ │ │ └── charactersfavorites
│ │ │ │ └── ui
│ │ │ │ └── favorite
│ │ │ │ ├── CharactersFavoriteFragment.kt
│ │ │ │ ├── CharactersFavoriteViewModel.kt
│ │ │ │ ├── CharactersFavoriteViewState.kt
│ │ │ │ ├── adapter
│ │ │ │ ├── CharactersFavoriteAdapter.kt
│ │ │ │ ├── CharactersFavoriteTouchHelper.kt
│ │ │ │ └── holders
│ │ │ │ │ └── CharacterFavoriteViewHolder.kt
│ │ │ │ └── di
│ │ │ │ ├── CharactersFavoriteComponent.kt
│ │ │ │ └── CharactersFavoriteModule.kt
│ │ └── res
│ │ │ ├── layout
│ │ │ ├── fragment_characters_favorite_list.xml
│ │ │ ├── list_item_characters_favorite.xml
│ │ │ ├── view_characters_favorite_list.xml
│ │ │ └── view_characters_favorite_list_empty.xml
│ │ │ ├── values-land
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw600dp-land
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw600dp
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw720dp-land
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw720dp
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ └── values
│ │ │ ├── dimens.xml
│ │ │ ├── integers.xml
│ │ │ └── strings.xml
│ │ └── test
│ │ └── kotlin
│ │ └── com
│ │ └── vmadalin
│ │ └── dynamicfeatures
│ │ └── caractersfavorites
│ │ └── ui
│ │ └── favorite
│ │ ├── CharactersFavoriteViewModelTest.kt
│ │ ├── CharactersFavoriteViewStateTest.kt
│ │ ├── adapter
│ │ ├── CharacterFavoriteViewHolderTest.kt
│ │ └── CharactersFavoriteTouchHelperTest.kt
│ │ └── di
│ │ └── CharactersFavoriteModuleTest.kt
├── characters_list
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── vmadalin
│ │ │ │ └── dynamicfeatures
│ │ │ │ └── characterslist
│ │ │ │ └── ui
│ │ │ │ ├── detail
│ │ │ │ ├── CharacterDetailFragment.kt
│ │ │ │ ├── CharacterDetailViewModel.kt
│ │ │ │ ├── CharacterDetailViewState.kt
│ │ │ │ ├── di
│ │ │ │ │ ├── CharacterDetailComponent.kt
│ │ │ │ │ └── CharacterDetailModule.kt
│ │ │ │ └── model
│ │ │ │ │ ├── CharacterDetail.kt
│ │ │ │ │ └── CharacterDetailMapper.kt
│ │ │ │ └── list
│ │ │ │ ├── CharactersListFragment.kt
│ │ │ │ ├── CharactersListViewEvent.kt
│ │ │ │ ├── CharactersListViewModel.kt
│ │ │ │ ├── CharactersListViewState.kt
│ │ │ │ ├── adapter
│ │ │ │ ├── CharactersListAdapter.kt
│ │ │ │ ├── CharactersListAdapterState.kt
│ │ │ │ └── holders
│ │ │ │ │ ├── CharacterViewHolder.kt
│ │ │ │ │ ├── ErrorViewHolder.kt
│ │ │ │ │ └── LoadingViewHolder.kt
│ │ │ │ ├── di
│ │ │ │ ├── CharactersListComponent.kt
│ │ │ │ └── CharactersListModule.kt
│ │ │ │ ├── model
│ │ │ │ ├── CharacterItem.kt
│ │ │ │ └── CharacterItemMapper.kt
│ │ │ │ └── paging
│ │ │ │ ├── CharactersPageDataSource.kt
│ │ │ │ └── CharactersPageDataSourceFactory.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── ic_favorites.xml
│ │ │ ├── layout
│ │ │ ├── fragment_character_detail.xml
│ │ │ ├── fragment_characters_list.xml
│ │ │ ├── list_item_character.xml
│ │ │ ├── list_item_error.xml
│ │ │ ├── list_item_loading.xml
│ │ │ ├── view_character_detail_content.xml
│ │ │ ├── view_characters_list.xml
│ │ │ ├── view_characters_list_empty.xml
│ │ │ ├── view_characters_list_error.xml
│ │ │ └── view_characters_list_loading.xml
│ │ │ ├── values-land
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw600dp-land
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw600dp
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw720dp-land
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ ├── values-sw720dp
│ │ │ ├── dimens.xml
│ │ │ └── integers.xml
│ │ │ └── values
│ │ │ ├── dimens.xml
│ │ │ ├── integers.xml
│ │ │ └── strings.xml
│ │ └── test
│ │ ├── kotlin
│ │ └── com
│ │ │ └── vmadalin
│ │ │ └── dynamicfeatures
│ │ │ └── characterslist
│ │ │ └── ui
│ │ │ ├── detail
│ │ │ ├── CharacterDetailViewModelTest.kt
│ │ │ ├── CharacterDetailViewStateTest.kt
│ │ │ ├── di
│ │ │ │ └── CharacterDetailModuleTest.kt
│ │ │ └── model
│ │ │ │ ├── CharacterDetailMapperTest.kt
│ │ │ │ └── CharacterDetailTest.kt
│ │ │ └── list
│ │ │ ├── CharactersListViewEventTest.kt
│ │ │ ├── CharactersListViewModelTest.kt
│ │ │ ├── CharactersListViewStateTest.kt
│ │ │ ├── adapter
│ │ │ ├── CharactersListAdapterStateTest.kt
│ │ │ └── holders
│ │ │ │ ├── CharacterViewHolderTest.kt
│ │ │ │ ├── ErrorViewHolderTest.kt
│ │ │ │ └── LoadingViewHolderTest.kt
│ │ │ ├── di
│ │ │ └── CharactersListModuleTest.kt
│ │ │ ├── model
│ │ │ ├── CharacterItemMapperTest.kt
│ │ │ └── CharacterItemTest.kt
│ │ │ └── paging
│ │ │ ├── CharactersPageDataSourceFactoryTest.kt
│ │ │ └── CharactersPageDataSourceTest.kt
│ │ └── resources
│ │ └── mockito-extensions
│ │ └── org.mockito.plugins.MockMaker
└── home
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ │ └── com
│ │ │ └── vmadalin
│ │ │ └── dynamicfeatures
│ │ │ └── home
│ │ │ └── ui
│ │ │ ├── HomeFragment.kt
│ │ │ ├── HomeViewModel.kt
│ │ │ ├── HomeViewState.kt
│ │ │ ├── di
│ │ │ ├── HomeComponent.kt
│ │ │ └── HomeModule.kt
│ │ │ └── menu
│ │ │ └── ToggleThemeCheckBox.kt
│ └── res
│ │ ├── drawable
│ │ ├── asl_theme.xml
│ │ ├── avd_theme_day_to_night.xml
│ │ ├── avd_theme_night_to_day.xml
│ │ ├── ic_favorites.xml
│ │ ├── ic_list.xml
│ │ ├── ic_theme_day.xml
│ │ ├── ic_theme_night.xml
│ │ └── sl_navigation.xml
│ │ ├── layout
│ │ └── fragment_home.xml
│ │ ├── menu
│ │ ├── bottom_menu.xml
│ │ └── toolbar_menu.xml
│ │ ├── navigation
│ │ ├── navigation_characters_favorites_graph.xml
│ │ └── navigation_characters_list_graph.xml
│ │ ├── values-night
│ │ └── colors.xml
│ │ └── values
│ │ ├── colors.xml
│ │ └── strings.xml
│ └── test
│ └── kotlin
│ └── com
│ └── vmadalin
│ └── dynamicfeatures
│ └── home
│ └── ui
│ ├── HomeViewStateTest.kt
│ └── di
│ └── HomeModuleTest.kt
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── libraries
└── test_utils
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ └── com
│ └── vmadalin
│ └── libraries
│ └── testutils
│ ├── TestCompactActivityNoActionBar.kt
│ ├── TestCompatActivity.kt
│ ├── TestFragment.kt
│ ├── TestFragmentActivity.kt
│ ├── datasource
│ └── TestLimitDataSource.kt
│ ├── lifecycle
│ └── TestLifecycleOwner.kt
│ ├── livedata
│ └── TestLiveDataUtils.kt
│ ├── pagelist
│ └── TestPagedListUtils.kt
│ ├── robolectric
│ └── TestRobolectric.kt
│ └── rules
│ └── CoroutineRule.kt
├── screenshots
├── architecture
│ ├── diagram_communication_layers.png
│ ├── diagram_communication_modules.png
│ ├── diagram_dependency_app.png
│ ├── diagram_dependency_commons_ui.png
│ ├── diagram_dependency_commons_views.png
│ ├── diagram_dependency_core.png
│ ├── diagram_dependency_features_characters_favorite.png
│ ├── diagram_dependency_features_characters_list.png
│ ├── diagram_dependency_features_home.png
│ ├── diagram_dependency_libraries_test_utils.png
│ └── project_structure.png
├── demo
│ └── demo.gif
├── phone
│ ├── dark_mode_character_detail.png
│ ├── dark_mode_characters_favorite.png
│ ├── dark_mode_characters_list.png
│ ├── light_mode_character_detail.png
│ ├── light_mode_characters_favorite.png
│ └── light_mode_characters_list.png
├── phone_landscape
│ ├── dark_mode_character_detail.png
│ ├── dark_mode_characters_favorite.png
│ ├── dark_mode_characters_list.png
│ ├── light_mode_character_detail.png
│ ├── light_mode_characters_favorite.png
│ └── light_mode_characters_list.png
├── tablet
│ ├── dark_mode_character_detail.png
│ ├── dark_mode_characters_favorite.png
│ ├── dark_mode_characters_list.png
│ ├── light_mode_character_detail.png
│ ├── light_mode_characters_favorite.png
│ └── light_mode_characters_list.png
└── tablet_landscape
│ ├── dark_mode_character_detail.png
│ ├── dark_mode_characters_favorite.png
│ ├── dark_mode_characters_list.png
│ ├── light_mode_character_detail.png
│ ├── light_mode_characters_favorite.png
│ └── light_mode_characters_list.png
├── scripts
└── git-hooks
│ └── pre-commit.sh
└── settings.gradle.kts
/.codecov/config.yml:
--------------------------------------------------------------------------------
1 | codecov:
2 | notify:
3 | require_ci_to_pass: yes
4 |
5 | coverage:
6 | precision: 2
7 | round: down
8 | range: 60..100
9 | status:
10 | project:
11 | default:
12 | enabled: yes
13 | target: auto
14 | threshold: 2
15 | patch:
16 | default:
17 | enabled: yes
18 | target: auto
19 | threshold: 2
20 | changes: no
21 |
22 | parsers:
23 | gcov:
24 | branch_detection:
25 | conditional: yes
26 | loop: yes
27 | method: no
28 | macro: no
29 |
30 | comment:
31 | layout: "header, diff"
32 | behavior: default
33 | require_changes: no
34 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig: http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | insert_final_newline = true
6 |
7 | [*.{yml, json}]
8 | indent_style = space
9 | indent_size = 2
10 |
11 | [*.{kt, kts, java}]
12 | indent_size = 4
13 | max_line_length = 100
14 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: vmadalin
2 | ko_fi: vmadalin
3 | issuehunt: vmadalin
4 | custom: https://www.paypal.me/mvalceleanu
5 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## Description
2 |
3 | What happened? What did you expect to happen?
4 |
5 | ## Basic Information
6 |
7 | - Device type:
8 | - OS version:
9 | - App version:
10 |
11 | ## Details
12 |
13 | ```text
14 | // TODO: show the code that produces the problem, any relevant logs or screenshot.
15 | ```
16 |
--------------------------------------------------------------------------------
/.lint/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
AppModule()
13 | Class that contributes to the object graph AppComponent.
14 |See Also
15 |
16 | AppComponent17 | |
18 |
19 | App component that application component's components depend on. 20 |interface AppComponent |
21 |
24 | AppModule25 | |
26 |
27 | Class that contributes to the object graph AppComponent. 28 |class AppModule |
29 |
SampleApp()
13 | Base class for maintaining global application state.
14 |See Also
15 |
lateinit var themeUtils: ThemeUtils
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/app/com.vmadalin.android/-sample-main-activity/-init-.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SampleMainActivity()
13 | Base activity class that use the support library action bar features.
14 |See Also
15 |
15 | com.vmadalin.android16 | |
17 | 18 | | 19 |
22 | com.vmadalin.android.di23 | |
24 | 25 | | 26 |
13 | ui14 | |
15 | 16 | | 17 |
20 | views21 | |
22 | 23 | | 24 |
abstract fun onInitDataBinding(): Unit
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/commons/ui/com.vmadalin.commons.ui.base/-base-fragment/on-init-dependency-injection.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | abstract fun onInitDependencyInjection(): Unit
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/commons/ui/com.vmadalin.commons.ui.base/-base-fragment/view-binding.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | lateinit var viewBinding: B
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/commons/ui/com.vmadalin.commons.ui.base/-base-fragment/view-model.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | lateinit var viewModel: M
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/commons/ui/com.vmadalin.commons.ui.base/-base-view-holder/binding.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val binding: T
13 | View data binding generated class instance.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/commons/ui/com.vmadalin.commons.ui.base/-base-view-state.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |interface BaseViewState
12 | Base state interface to describe different state of the view.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/commons/ui/com.vmadalin.commons.ui.bindings/android.view.-view/gone.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |var View.gone: Boolean
13 | Simplification to check and setup view as gone.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/commons/ui/com.vmadalin.commons.ui.bindings/android.view.-view/invisible.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |var View.invisible: Boolean
13 | Simplification to check and setup view as invisible.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/commons/ui/com.vmadalin.commons.ui.bindings/android.view.-view/visible.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |var View.visible: Boolean
13 | Simplification to check and setup view as visible.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/commons/ui/com.vmadalin.commons.ui.bindings/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
16 | android.view.View17 | |
18 | 19 | | 20 |
23 | android.widget.ImageView24 | |
25 | 26 | | 27 |
30 | androidx.recyclerview.widget.RecyclerView31 | |
32 | 33 | | 34 |
16 | RecyclerViewItemDecoration17 | |
18 |
19 | Simple item decoration allows the application to add a special drawing and layout offset 20 | to specific item views from the adapter's data set. Support the grid and linear layout. 21 |class RecyclerViewItemDecoration : ItemDecoration |
22 |
lateinit var viewBinding: <ERROR CLASS>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/commons/views/com.vmadalin.commons.views/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 | ProgressBarDialog17 | |
18 |
19 | Custom progress dialog to display as alert during on long process user waiting. 20 |class ProgressBarDialog : AlertDialog |
21 |
15 | com.vmadalin.commons.views16 | |
17 | 18 | | 19 |
OpenClass()
13 | This annotation allows us to open some classes for mocking purposes while they are final in 14 | release builds.
15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.annotations/-open-for-testing/-init-.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |OpenForTesting()
13 | Annotate a class with OpenForTesting if you want it to be extendable in debug builds.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.database.characterfavorite/-character-favorite/id.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val id: Long
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.database.characterfavorite/-character-favorite/image-url.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val imageUrl: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.database.characterfavorite/-character-favorite/name.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val name: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.database.migrations/-m-i-g-r-a-t-i-o-n_1_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val MIGRATION_1_2: Migration
13 | Room database migration version 1 to 2.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.database.migrations/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
16 | MIGRATION_1_217 | |
18 |
19 | Room database migration version 1 to 2. 20 |val MIGRATION_1_2: Migration |
21 |
MarvelDatabase()
13 | Marvel room database storing the different requested information like: characters, comics, etc...
14 |See Also
15 |
16 | MarvelDatabase17 | |
18 |
19 | Marvel room database storing the different requested information like: characters, comics, etc... 20 |abstract class MarvelDatabase : RoomDatabase |
21 |
DatabaseModule()
13 | Class that contributes to the object graph CoreComponent.
14 |See Also
15 |
NetworkModule()
13 | Class that contributes to the object graph CoreComponent.
14 |See Also
15 |
UtilsModule()
13 | Class that contributes to the object graph CoreComponent.
14 |See Also
15 |
AppScope()
13 | Scope for the entire app runtime.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.di.scopes/-app-scope/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |@Scope annotation class AppScope
12 | Scope for the entire app runtime.
13 |
18 | <init>19 | |
20 |
21 | Scope for the entire app runtime. 22 |AppScope() |
23 |
FeatureScope()
13 | Scope for a feature module.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.di.scopes/-feature-scope/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |@Scope annotation class FeatureScope
12 | Scope for a feature module.
13 |
18 | <init>19 | |
20 |
21 | Scope for a feature module. 22 |FeatureScope() |
23 |
16 | AppScope17 | |
18 |
19 | Scope for the entire app runtime. 20 |annotation class AppScope |
21 |
24 | FeatureScope25 | |
26 |
27 | Scope for a feature module. 28 |annotation class FeatureScope |
29 |
abstract fun characterFavoriteDao(): CharacterFavoriteDao
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.di/-core-component/context.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | abstract fun context(): Context
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.di/-core-component/marvel-repository.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | abstract fun marvelRepository(): MarvelRepository
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.di/-core-component/marvel-service.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | abstract fun marvelService(): MarvelService
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.di/-core-component/theme-utils.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | abstract fun themeUtils(): ThemeUtils
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/core/com.vmadalin.core.di/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 | CoreComponent17 | |
18 |
19 | Core component that all module's components depend on. 20 |interface CoreComponent |
21 |
16 | kotlin.ByteArray17 | |
18 | 19 | | 20 |
23 | kotlin.String24 | |
25 | 26 | | 27 |
16 | Mapper17 | |
18 |
19 | Helper class to transforms a specific input to desired object output, implementing for that 20 | all operations required to transform. 21 |interface Mapper<F, T> |
22 |
16 | MarvelRepository17 | |
18 |
19 | Repository module for handling marvel API network operations MarvelService. 20 |class MarvelRepository |
21 |
val code: Any
13 | The HTTP status code of the returned result.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-base-response/data.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val data: DataResponse<T>
13 | The results returned by the call.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-base-response/message.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val message: String
13 | A more descriptive message of the failure call status.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-base-response/status.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val status: String
13 | A string description of the call status.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-character-response/description.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val description: String
13 | A short bio or description of the character.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-character-response/id.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val id: Long
13 | The unique ID of the character resource.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-character-response/name.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val name: String
13 | The name of the character.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-character-response/thumbnail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val thumbnail: CharacterThumbnailResponse
13 | The representative image for this character.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-character-thumbnail-response/extension.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val extension: String
13 | The file extension for the image.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-character-thumbnail-response/path.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val path: String
13 | The directory path of to the image.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-data-response/count.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val count: Int
13 | The total number of results returned by this call.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-data-response/limit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val limit: Int
13 | The requested result limit.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-data-response/offset.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val offset: Int
13 | The requested offset (number of skipped results) of the call.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-data-response/results.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val results: List<T>
13 | The list of T returned by the call.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.responses/-data-response/total.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val total: Int
13 | The total number of resources available given the current filter set.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network.services/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
16 | MarvelService17 | |
18 |
19 | Representation interface of the Marvel API endpoints. 20 |interface MarvelService |
21 |
val isAdditional: Boolean
13 | Is additional request.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network/-network-state/-loading/is-additional.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val isAdditional: Boolean
13 | Is additional request.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network/-network-state/-success/is-additional.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val isAdditional: Boolean
13 | Is additional request.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network/-network-state/-success/is-empty-response.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val isEmptyResponse: Boolean
13 | Is the body of response empty.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.network/-network-state/is-error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |fun isError(): Boolean
13 | Check if current network state is Error.
14 |Return
15 | True if is error state, otherwise false.
fun isLoading(): Boolean
13 | Check if current network state is Loading.
14 |Return
15 | True if is loading state, otherwise false.
fun isSuccess(): Boolean
13 | Check if current network state is Success.
14 |Return
15 | True if is success state, otherwise false.
16 | NetworkState17 | |
18 |
19 | Different states for any network request. 20 |sealed class NetworkState |
21 |
ThemeUtils()
13 | Utils for application theme configuration.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/core/com.vmadalin.core.utils/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
16 | ThemeUtils17 | |
18 |
19 | Utils for application theme configuration. 20 |class ThemeUtils |
21 |
object Empty : CharactersFavoriteViewState
12 | No favorite characters to display.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_favorites/com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite/-characters-favorite-view-state/-listed.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Listed : CharactersFavoriteViewState
12 | Favorite characters displayed.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_favorites/package-list: -------------------------------------------------------------------------------- 1 | $dokka.format:html 2 | $dokka.linkExtension:html 3 | 4 | com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite 5 | com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite.adapter 6 | com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite.adapter.holders 7 | com.vmadalin.dynamicfeatures.charactersfavorites.ui.favorite.di 8 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail.di/-character-detail-module/fragment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val fragment: CharacterDetailFragment
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail.model/-character-detail-mapper/-init-.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CharacterDetailMapper()
13 | Helper class to transforms network response to visual model, catching the necessary data.
14 |See Also
15 |
val description: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail.model/-character-detail/id.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val id: Long
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail.model/-character-detail/image-url.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val imageUrl: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail.model/-character-detail/name.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val name: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-fragment/-init-.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CharacterDetailFragment()
13 | View detail for selected character, displaying extra info and with option to add it to favorite.
14 |See Also
15 |
lateinit var progressDialog: ProgressBarDialog
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-model/character-favorite-repository.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val characterFavoriteRepository: CharacterFavoriteRepository
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-model/marvel-repository.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val marvelRepository: MarvelRepository
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-model/state.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val state: LiveData<CharacterDetailViewState>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-state/-add-to-favorite.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | object AddToFavorite : CharacterDetailViewState
12 | Add current character to favorite list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-state/-added-to-favorite.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object AddedToFavorite : CharacterDetailViewState
12 | Added current character to favorite list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-state/-already-added-to-favorite.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object AlreadyAddedToFavorite : CharacterDetailViewState
12 | Already added character to favorite list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-state/-dismiss.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Dismiss : CharacterDetailViewState
12 | Dismiss the detail view.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-state/-error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Error : CharacterDetailViewState
12 | Error on loading character detail info.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.detail/-character-detail-view-state/-loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Loading : CharacterDetailViewState
12 | Loading character detail info.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter/-characters-list-adapter-state/-add-error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object AddError : CharactersListAdapterState
12 | Error on add new characters into list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter/-characters-list-adapter-state/-add-loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object AddLoading : CharactersListAdapterState
12 | Loading for new characters to add into list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter/-characters-list-adapter-state/-added.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Added : CharactersListAdapterState
12 | Listed the added characters into list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter/-characters-list-adapter-state/-no-more.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object NoMore : CharactersListAdapterState
12 | No more characters to add into list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter/-characters-list-adapter-state/has-extra-row.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val hasExtraRow: Boolean
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter/-characters-list-adapter/view-model.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val viewModel: CharactersListViewModel
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.di/-characters-list-module/fragment.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val fragment: CharactersListFragment
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.model/-character-item-mapper/-init-.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CharacterItemMapper()
13 | Helper class to transforms network response to visual model, catching the necessary data.
14 |See Also
15 |
val description: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.model/-character-item/id.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val id: Long
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.model/-character-item/image-url.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val imageUrl: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.model/-character-item/name.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val name: String
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.paging/-characters-page-data-source/mapper.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val mapper: CharacterItemMapper
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.paging/-characters-page-data-source/network-state.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val networkState: MutableLiveData<NetworkState>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.paging/-characters-page-data-source/repository.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val repository: MarvelRepository
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.paging/-characters-page-data-source/scope.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val scope: CoroutineScope
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.paging/-p-a-g-e_-i-n-i-t_-e-l-e-m-e-n-t-s.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | const val PAGE_INIT_ELEMENTS: Int
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list.paging/-p-a-g-e_-m-a-x_-e-l-e-m-e-n-t-s.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | const val PAGE_MAX_ELEMENTS: Int
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-fragment/-init-.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CharactersListFragment()
13 | View listing the all marvel characters with option to display the detail view.
14 |See Also
15 |
val event: SingleLiveData<CharactersListViewEvent>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-model/network-state.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | val networkState: LiveData<NetworkState!>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-add-error.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | object AddError : CharactersListViewState
12 | Error on add more elements into characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-add-loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object AddLoading : CharactersListViewState
12 | Loading on add more elements into characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-empty.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Empty : CharactersListViewState
12 | Empty characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Error : CharactersListViewState
12 | Error on loading characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-loaded.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Loaded : CharactersListViewState
12 | Loaded characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Loading : CharactersListViewState
12 | Loading characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-no-more-elements.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object NoMoreElements : CharactersListViewState
12 | No more elements for adding into characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/com.vmadalin.dynamicfeatures.characterslist.ui.list/-characters-list-view-state/-refreshing.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object Refreshing : CharactersListViewState
12 | Refreshing characters list.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/characters_list/package-list: -------------------------------------------------------------------------------- 1 | $dokka.format:html 2 | $dokka.linkExtension:html 3 | 4 | com.vmadalin.dynamicfeatures.characterslist.ui.detail 5 | com.vmadalin.dynamicfeatures.characterslist.ui.detail.di 6 | com.vmadalin.dynamicfeatures.characterslist.ui.detail.model 7 | com.vmadalin.dynamicfeatures.characterslist.ui.list 8 | com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter 9 | com.vmadalin.dynamicfeatures.characterslist.ui.list.adapter.holders 10 | com.vmadalin.dynamicfeatures.characterslist.ui.list.di 11 | com.vmadalin.dynamicfeatures.characterslist.ui.list.model 12 | com.vmadalin.dynamicfeatures.characterslist.ui.list.paging 13 | -------------------------------------------------------------------------------- /docs/features/home/com.vmadalin.dynamicfeatures.home.ui.di/-home-module/fragment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val fragment: HomeFragment
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/home/com.vmadalin.dynamicfeatures.home.ui.menu/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 | ToggleThemeCheckBox17 | |
18 |
19 | Animated button menu item check box to apply night/light mode. 20 |class ToggleThemeCheckBox : AppCompatCheckBox |
21 |
HomeFragment()
13 | Home principal view containing bottom navigation bar with different characters tabs.
14 |See Also
15 |
fun onInitDataBinding(): Unit
13 | Initialize view data binding variables.
14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/features/home/com.vmadalin.dynamicfeatures.home.ui/-home-fragment/theme-utils.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |lateinit var themeUtils: ThemeUtils
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/home/com.vmadalin.dynamicfeatures.home.ui/-home-view-model/-init-.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HomeViewModel()
13 | View model responsible for preparing and managing the data for HomeFragment.
14 |See Also
15 |
val state: LiveData<HomeViewState>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/home/com.vmadalin.dynamicfeatures.home.ui/-home-view-state/-full-screen.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | object FullScreen : HomeViewState
12 | Full screen mode.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/home/com.vmadalin.dynamicfeatures.home.ui/-home-view-state/-navigation-screen.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |object NavigationScreen : HomeViewState
12 | Navigation screen mode with bottom bar.
13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/features/home/com.vmadalin.dynamicfeatures.home.ui/-n-a-v_-f-r-a-g-m-e-n-t-s_-i-d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |val NAV_FRAGMENTS_ID: <ERROR CLASS>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/docs/features/home/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 | com.vmadalin.dynamicfeatures.home.ui16 | |
17 | 18 | | 19 |
22 | com.vmadalin.dynamicfeatures.home.ui.di23 | |
24 | 25 | | 26 |
29 | com.vmadalin.dynamicfeatures.home.ui.menu30 | |
31 | 32 | | 33 |
13 | characters_favorites14 | |
15 | 16 | | 17 |
20 | characters_list21 | |
22 | 23 | | 24 |
27 | home28 | |
29 | 30 | | 31 |
15 | app16 | |
17 | 18 | | 19 |
22 | commons23 | |
24 | 25 | | 26 |
29 | core30 | |
31 | 32 | | 33 |
36 | features37 | |
38 | 39 | | 40 |