From 7ca2a16049ff231f30d0de701c796297ca94664c Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Thu, 16 Jun 2022 11:26:38 +0700 Subject: [PATCH 01/21] [#1] Generate new project from Coroutine template --- .github/ISSUE_TEMPLATE/bug_template.md | 10 +- .github/ISSUE_TEMPLATE/chore_template.md | 4 +- .github/ISSUE_TEMPLATE/feature_template.md | 2 +- .github/ISSUE_TEMPLATE/rfc_template.md | 28 ++ .github/PULL_REQUEST_TEMPLATE.md | 10 +- .../PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md | 17 + .../PULL_REQUEST_TEMPLATE/release_template.md | 2 +- .gitignore | 88 +++-- README.md | 25 +- app/.gitignore | 1 + app/build.gradle.kts | 168 +++++++++ app/proguard-rules.pro | 21 ++ app/src/debug/AndroidManifest.xml | 11 + .../compose/crypto/EmptyHiltActivity.kt | 7 + app/src/main/AndroidManifest.xml | 26 ++ .../compose/crypto/CrytoComposeApplication.kt | 20 + .../compose/crypto/di/modules/AppModule.kt | 17 + .../compose/crypto/di/modules/MoshiModule.kt | 16 + .../crypto/di/modules/NavigatorModule.kt | 16 + .../crypto/di/modules/OkHttpClientModule.kt | 23 ++ .../crypto/di/modules/RepositoryModule.kt | 18 + .../crypto/di/modules/RetrofitModule.kt | 40 ++ .../crypto/di/modules/StorageModule.kt | 34 ++ .../di/modules/main/MainActivityModule.kt | 9 + .../compose/crypto/extension/ViewModelExt.kt | 40 ++ .../nimblehq/compose/crypto/lib/TypeAlias.kt | 3 + .../compose/crypto/model/UserUiModel.kt | 17 + .../compose/crypto/ui/ErrorMapping.kt | 9 + .../compose/crypto/ui/base/BaseActivity.kt | 31 ++ .../crypto/ui/base/BaseComposeFragment.kt | 62 ++++ .../ui/base/BaseComposeFragmentCallbacks.kt | 36 ++ .../compose/crypto/ui/base/BaseFragment.kt | 88 +++++ .../crypto/ui/base/BaseFragmentCallbacks.kt | 57 +++ .../compose/crypto/ui/base/BaseNavigator.kt | 86 +++++ .../compose/crypto/ui/base/BaseViewModel.kt | 52 +++ .../compose/crypto/ui/base/NavigationEvent.kt | 8 + .../crypto/ui/base/NavigationException.kt | 11 + .../compose/crypto/ui/common/Toaster.kt | 18 + .../compose/crypto/ui/screens/MainActivity.kt | 16 + .../crypto/ui/screens/MainNavigator.kt | 46 +++ .../crypto/ui/screens/MainViewModel.kt | 9 + .../ui/screens/compose/ComposeFragment.kt | 33 ++ .../ui/screens/compose/ComposeViewModel.kt | 57 +++ .../compose/composables/ComposeScreen.kt | 46 +++ .../compose/composables/ContentCard.kt | 26 ++ .../screens/compose/composables/TitleBar.kt | 54 +++ .../screens/compose/composables/UserItem.kt | 53 +++ .../screens/compose/composables/UserList.kt | 28 ++ .../crypto/ui/screens/compose/theme/Color.kt | 9 + .../ui/screens/compose/theme/Dimension.kt | 13 + .../crypto/ui/screens/compose/theme/Shape.kt | 10 + .../crypto/ui/screens/compose/theme/Theme.kt | 24 ++ .../ui/screens/compose/theme/Typography.kt | 16 + .../crypto/ui/screens/home/HomeFragment.kt | 65 ++++ .../crypto/ui/screens/home/HomeViewModel.kt | 63 ++++ .../crypto/ui/screens/second/SecondBundle.kt | 9 + .../ui/screens/second/SecondFragment.kt | 28 ++ .../ui/screens/second/SecondViewModel.kt | 9 + .../crypto/util/DispatchersProvider.kt | 9 + .../crypto/util/DispatchersProviderImpl.kt | 12 + .../drawable-v24/ic_launcher_foreground.xml | 34 ++ .../res/drawable/ic_launcher_background.xml | 170 +++++++++ app/src/main/res/font/montserrat_regular.ttf | Bin 0 -> 245708 bytes app/src/main/res/layout/activity_main.xml | 16 + app/src/main/res/layout/fragment_home.xml | 32 ++ app/src/main/res/layout/fragment_second.xml | 20 + app/src/main/res/layout/view_loading.xml | 20 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3056 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5024 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2096 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2858 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4569 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10676 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9250 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15523 bytes .../main/res/navigation/nav_graph_main.xml | 44 +++ app/src/main/res/values/colors.xml | 7 + app/src/main/res/values/colors_pallete.xml | 7 + app/src/main/res/values/strings.xml | 5 + app/src/main/res/values/styles.xml | 11 + .../main/res/xml/network_security_config.xml | 1 + app/src/staging/res/values/strings.xml | 3 + .../res/xml/network_security_config.xml | 18 + .../compose/crypto/test/TestModules.kt | 21 ++ .../compose/crypto/test/ViewModelExt.kt | 21 ++ .../compose/crypto/ui/BaseFragmentTest.kt | 69 ++++ .../ui/screens/home/HomeFragmentTest.kt | 45 +++ app/src/test/resources/robolectric.properties | 2 + build.gradle.kts | 67 ++++ buildSrc/build.gradle.kts | 9 + buildSrc/src/main/java/Configurations.kt | 15 + buildSrc/src/main/java/FileExt.kt | 12 + buildSrc/src/main/java/Versions.kt | 50 +++ .../java/plugins/jacoco-report.gradle.kts | 142 +++++++ config/debug.keystore | Bin 0 -> 2230 bytes data/.gitignore | 1 + data/build.gradle.kts | 81 ++++ data/proguard-rules.pro | 21 ++ data/src/main/AndroidManifest.xml | 2 + .../data/repository/UserRepositoryImpl.kt | 15 + .../crypto/data/response/UserResponse.kt | 62 ++++ .../compose/crypto/data/service/ApiService.kt | 10 + .../service/providers/ApiServiceProvider.kt | 11 + .../providers/ConverterFactoryProvider.kt | 12 + .../service/providers/MoshiBuilderProvider.kt | 16 + .../service/providers/RetrofitProvider.kt | 19 + .../data/storage/BaseSharedPreferences.kt | 42 +++ .../storage/EncryptedSharedPreferences.kt | 23 ++ .../data/storage/NormalSharedPreferences.kt | 24 ++ .../data/storage/SharedPreferencesExt.kt | 10 + .../data/repository/UserRepositoryTest.kt | 53 +++ detekt-config.yml | 345 ++++++++++++++++++ domain/.gitignore | 1 + domain/build.gradle.kts | 21 ++ .../compose/crypto/domain/model/User.kt | 26 ++ .../domain/repository/UserRepository.kt | 8 + .../crypto/domain/usecase/GetUsersUseCase.kt | 17 + .../crypto/domain/usecase/UseCaseResult.kt | 6 + .../domain/usecase/GetUsersUseCaseTest.kt | 54 +++ gradle.properties | 17 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58695 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 183 ++++++++++ gradlew.bat | 100 +++++ settings.gradle.kts | 2 + signing.properties | 3 + 130 files changed, 3749 insertions(+), 58 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/rfc_template.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle.kts create mode 100644 app/proguard-rules.pro create mode 100644 app/src/debug/AndroidManifest.xml create mode 100644 app/src/debug/java/co/nimblehq/compose/crypto/EmptyHiltActivity.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/CrytoComposeApplication.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/AppModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/MoshiModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/OkHttpClientModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/RetrofitModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/StorageModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/di/modules/main/MainActivityModule.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/extension/ViewModelExt.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/lib/TypeAlias.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/ErrorMapping.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseActivity.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragment.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragmentCallbacks.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragment.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragmentCallbacks.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseNavigator.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseViewModel.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationException.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/common/Toaster.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProvider.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProviderImpl.kt create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/font/montserrat_regular.ttf create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_second.xml create mode 100644 app/src/main/res/layout/view_loading.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/navigation/nav_graph_main.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/colors_pallete.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/xml/network_security_config.xml create mode 100644 app/src/staging/res/values/strings.xml create mode 100644 app/src/staging/res/xml/network_security_config.xml create mode 100644 app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt create mode 100644 app/src/test/java/co/nimblehq/compose/crypto/test/ViewModelExt.kt create mode 100644 app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt create mode 100644 app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt create mode 100644 app/src/test/resources/robolectric.properties create mode 100644 build.gradle.kts create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/java/Configurations.kt create mode 100644 buildSrc/src/main/java/FileExt.kt create mode 100644 buildSrc/src/main/java/Versions.kt create mode 100644 buildSrc/src/main/java/plugins/jacoco-report.gradle.kts create mode 100644 config/debug.keystore create mode 100644 data/.gitignore create mode 100644 data/build.gradle.kts create mode 100644 data/proguard-rules.pro create mode 100644 data/src/main/AndroidManifest.xml create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ApiServiceProvider.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ConverterFactoryProvider.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/MoshiBuilderProvider.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/RetrofitProvider.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/storage/BaseSharedPreferences.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/storage/EncryptedSharedPreferences.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/storage/NormalSharedPreferences.kt create mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/storage/SharedPreferencesExt.kt create mode 100644 data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt create mode 100644 detekt-config.yml create mode 100644 domain/.gitignore create mode 100644 domain/build.gradle.kts create mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt create mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt create mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt create mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/UseCaseResult.kt create mode 100644 domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts create mode 100644 signing.properties diff --git a/.github/ISSUE_TEMPLATE/bug_template.md b/.github/ISSUE_TEMPLATE/bug_template.md index 18943b88..4da7909c 100644 --- a/.github/ISSUE_TEMPLATE/bug_template.md +++ b/.github/ISSUE_TEMPLATE/bug_template.md @@ -7,14 +7,14 @@ labels: "type : bug" ## Issue -Describe the issue you are facing. Show us the implementation: screenshots, GIFs, etc. +Describe the issue you are facing. Show us the implementation: screenshots, gif, etc. ## Expected -Describe what should be the correct behavior. +Describe what should be the correct behaviour. ## Steps to reproduce -1. -2. -3. +1. +2. +3. diff --git a/.github/ISSUE_TEMPLATE/chore_template.md b/.github/ISSUE_TEMPLATE/chore_template.md index 31da9ba4..1599a04f 100644 --- a/.github/ISSUE_TEMPLATE/chore_template.md +++ b/.github/ISSUE_TEMPLATE/chore_template.md @@ -1,13 +1,13 @@ --- name: "Chore" -about: "Open a chore issue for a minor update." +about: "Open a Chore for minor update." title: "Update " labels: "type : chore" --- ## Why -Describe the update in detail and why it is needed. +Describe the update details and why it's needed. ## Who Benefits? diff --git a/.github/ISSUE_TEMPLATE/feature_template.md b/.github/ISSUE_TEMPLATE/feature_template.md index 3b009dfa..4ad1fb45 100644 --- a/.github/ISSUE_TEMPLATE/feature_template.md +++ b/.github/ISSUE_TEMPLATE/feature_template.md @@ -7,7 +7,7 @@ labels: "type : feature" ## Why -Describe the big picture of the feature and why it is needed. +Describe the big picture of the feature and why it's needed. ## Who Benefits? diff --git a/.github/ISSUE_TEMPLATE/rfc_template.md b/.github/ISSUE_TEMPLATE/rfc_template.md new file mode 100644 index 00000000..907fbb86 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/rfc_template.md @@ -0,0 +1,28 @@ +--- +name: "Request For Comments (RFC)" +about: "You have an idea on how to improve our processes. Propose your idea so that the team can provide feedback." +title: "RFC: " +labels: "type : rfc" +--- + +## Issue + +Describe the issue the team is currently facing. Provide as much content as possible. + +## Solution + +Describe the solution you are prescribing for the issue + +## Who Benefits? + +Describe who will be the beneficiaries e.g. everyone, specific chapters, clients... + +## What's Next? + +Provide an actionable list of things that must happen in order to implement the solution: + +- [ ] +- [ ] +- [ ] + +Using a poll is encouraged to gather feedback on the RFA 👉 Use this tool: https://gh-polls.com/ diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 91206f99..a1eda23a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,8 @@ -https://github.com/nimblehq/git-template/issues/?? +Note: for a release PR, append this parameter `?template=release_template.md` to the current URL to apply the release PR template, e.g. `{Github PR URL}?template=release_template.md` + +-- + +https://github.com/nimblehq/android-templates/issues/?? ## What happened 👀 @@ -6,8 +10,8 @@ Describe the big picture of your changes here to communicate to the team why we ## Insight 📝 -Describe in detail how to test the changes, which solution you tried but did not go with, referenced documentation is welcome as well. +Describe in details how to test the changes, which solution you tried but did not go with, referenced documentation is welcome as well. ## Proof Of Work 📹 -Show us the implementation: screenshots, GIFs, etc. +Show us the implementation: screenshots, gif, etc. diff --git a/.github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md new file mode 100644 index 00000000..819fd591 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md @@ -0,0 +1,17 @@ +Link to the milestone on Github e.g. https://github.com/nimblehq/git-templates/milestone/41?closed=1 +or +Link to the project management tool for the release + +## Features + +Provide the ID and title of the issue in the section for each type (feature, chore and bug). The link is optional. + +- [ch1234] As a user, I can log in + or +- [[ch1234](https://github.com/nimblehq/git-templates/issues/1234)] As a user, I can log in + +## Chores +- Same structure as in ## Feature + +## Bugs +- Same structure as in ## Feature diff --git a/.github/PULL_REQUEST_TEMPLATE/release_template.md b/.github/PULL_REQUEST_TEMPLATE/release_template.md index 32abb7cf..819fd591 100644 --- a/.github/PULL_REQUEST_TEMPLATE/release_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/release_template.md @@ -7,7 +7,7 @@ Link to the project management tool for the release Provide the ID and title of the issue in the section for each type (feature, chore and bug). The link is optional. - [ch1234] As a user, I can log in -or + or - [[ch1234](https://github.com/nimblehq/git-templates/issues/1234)] As a user, I can log in ## Chores diff --git a/.gitignore b/.gitignore index 2f2567c7..aa6c24c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,36 +1,52 @@ -*.gem -*.rbc -/.config -/.idea -/coverage/ -/InstalledFiles -/node_modules -/pkg/ -/spec/reports/ -/spec/examples.txt -/test/tmp/ -/test/version_tmp/ -/tmp/ - -# Used by dotenv library to load environment variables. -# .env - -## Documentation cache and generated files: -/.yardoc/ -/_yardoc/ -/doc/ -/rdoc/ - -## Environment normalization: -/.bundle/ -/vendor/bundle -/lib/bundler/man/ - -# for a library or gem, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock -# .ruby-version -# .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc +# Created by .ignore support plugin (hsz.mobi) +### Android template +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +.DS_Store + +# Gradle files +.gradle/ +/build + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea/* + +# Keystore files +secret/ + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Code coverage +jacoco.exec + +# Google services +google-services.json +# Keystore +config/release.keystore diff --git a/README.md b/README.md index c937ad0e..08bb2476 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,31 @@ -# Git Repository Template +# Jetpack Compose Crypto -Project repository template to set up all public projects at [Nimble](https://nimblehq.co/) +This is an sample Crypto market prices app built with Jetpack Compose + +### Screenshot 📸 + +TBD + +### References: +- [Coingecko API](https://www.coingecko.com/en/api/documentation) +- [Figma Design](https://www.figma.com/community/file/1108313912145052181) ## Usage Clone the repository -`git clone git@github.com:nimblehq/git-template.git` +`git clone git@github.com:nimblehq/jetpack-compose-crypto.git` ## License -This project is Copyright (c) 2014 and onwards Nimble. It is free software and may be redistributed under the terms specified in the [LICENSE] file. +This project is Copyright (c) 2014 and onwards. It is free software, +and may be redistributed under the terms specified in the [LICENSE] file. [LICENSE]: /LICENSE ## About - - - - Nimble logo - - + +![Nimble](https://assets.nimblehq.co/logo/dark/logo-dark-text-160.png) This project is maintained and funded by Nimble. diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 00000000..4e3e1004 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,168 @@ +plugins { + id("com.android.application") + + id("kotlin-android") + id("kotlin-kapt") + id("kotlin-parcelize") + + id("dagger.hilt.android.plugin") + id("androidx.navigation.safeargs.kotlin") + + id("plugins.jacoco-report") +} + +val keystoreProperties = rootDir.loadGradleProperties("signing.properties") + +android { + signingConfigs { + create(BuildType.RELEASE) { + // Remember to edit signing.properties to have the correct info for release build. + storeFile = file("../config/release.keystore") + storePassword = keystoreProperties.getProperty("KEYSTORE_PASSWORD") as String + keyPassword = keystoreProperties.getProperty("KEY_PASSWORD") as String + keyAlias = keystoreProperties.getProperty("KEY_ALIAS") as String + } + + getByName(BuildType.DEBUG) { + storeFile = file("../config/debug.keystore") + storePassword = "oQ4mL1jY2uX7wD8q" + keyAlias = "debug-key-alias" + keyPassword = "oQ4mL1jY2uX7wD8q" + } + } + + compileSdk = Versions.ANDROID_COMPILE_SDK_VERSION + defaultConfig { + applicationId = "co.nimblehq.coroutine" + minSdk = Versions.ANDROID_MIN_SDK_VERSION + targetSdk = Versions.ANDROID_TARGET_SDK_VERSION + versionCode = Versions.ANDROID_VERSION_CODE + versionName = Versions.ANDROID_VERSION_NAME + } + + buildTypes { + getByName(BuildType.RELEASE) { + isMinifyEnabled = true + isDebuggable = false + isShrinkResources = true + proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + signingConfig = signingConfigs[BuildType.RELEASE] + buildConfigField("String", "BASE_API_URL", "\"https://jsonplaceholder.typicode.com/\"") + } + + getByName(BuildType.DEBUG) { + // For quickly testing build with proguard, enable this + isMinifyEnabled = false + signingConfig = signingConfigs[BuildType.DEBUG] + buildConfigField("String", "BASE_API_URL", "\"https://jsonplaceholder.typicode.com/\"") + /** + * From AGP 4.2.0, Jacoco generates the report incorrectly, and the report is missing + * some code coverage from module. On the new version of Gradle, they introduce a new + * flag [testCoverageEnabled], we must enable this flag if using Jacoco to capture + * coverage and creates a report in the build directory. + * Reference: https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/BuildType#istestcoverageenabled + */ + isTestCoverageEnabled = true + } + } + + flavorDimensions(Flavor.DIMENSIONS) + productFlavors { + create(Flavor.STAGING) { + applicationIdSuffix = ".staging" + } + + create(Flavor.PRODUCTION) {} + } + + sourceSets["test"].resources { + srcDir("src/test/resources") + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8.toString() + } + + composeOptions { + kotlinCompilerVersion = Versions.KOTLIN_VERSION + kotlinCompilerExtensionVersion = Versions.COMPOSE_VERSION + } + + buildFeatures { + viewBinding = true + compose = true + } + + lintOptions { + isCheckDependencies = true + xmlReport = true + xmlOutput = file("build/reports/lint/lint-result.xml") + } + + testOptions { + unitTests { + // Robolectric resource processing/loading + isIncludeAndroidResources = true + isReturnDefaultValues = true + } + } +} + +kapt { + correctErrorTypes = true +} + +dependencies { + implementation(project(Module.DATA)) + implementation(project(Module.DOMAIN)) + + implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) + + implementation("androidx.activity:activity-ktx:${Versions.ANDROIDX_ACTIVITY_KTX_VERSION}") + implementation("androidx.appcompat:appcompat:${Versions.ANDROIDX_SUPPORT_VERSION}") + implementation("androidx.constraintlayout:constraintlayout:${Versions.CONSTRAINT_LAYOUT_VERSION}") + implementation("androidx.core:core-ktx:${Versions.ANDROIDX_CORE_KTX_VERSION}") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:${Versions.ANDROIDX_LIFECYCLE_VERSION}") + + implementation("androidx.compose.ui:ui:${Versions.COMPOSE_VERSION}") + implementation("androidx.compose.ui:ui-tooling:${Versions.COMPOSE_VERSION}") + implementation("androidx.compose.foundation:foundation:${Versions.COMPOSE_VERSION}") + implementation("androidx.compose.material:material:${Versions.COMPOSE_VERSION}") + + implementation("androidx.navigation:navigation-fragment-ktx:${Versions.ANDROIDX_NAVIGATION_VERSION}") + implementation("androidx.navigation:navigation-runtime-ktx:${Versions.ANDROIDX_NAVIGATION_VERSION}") + implementation("androidx.navigation:navigation-ui-ktx:${Versions.ANDROIDX_NAVIGATION_VERSION}") + + implementation("com.google.dagger:hilt-android:${Versions.HILT_VERSION}") + + implementation("com.jakewharton.timber:timber:${Versions.TIMBER_LOG_VERSION}") + + implementation("com.github.nimblehq:android-common-ktx:${Versions.ANDROID_COMMON_KTX_VERSION}") + + implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.KOTLIN_VERSION}") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.KOTLINX_COROUTINES_VERSION}") + + kapt("com.google.dagger:hilt-compiler:${Versions.HILT_VERSION}") + + debugImplementation("androidx.fragment:fragment-testing:${Versions.ANDROIDX_FRAGMENT_VERSION}") + + // Testing + testImplementation("io.kotest:kotest-assertions-core:${Versions.TEST_KOTEST_VERSION}") + testImplementation("junit:junit:${Versions.TEST_JUNIT_VERSION}") + testImplementation("org.robolectric:robolectric:${Versions.TEST_ROBOLECTRIC_VERSION}") + testImplementation("androidx.test:core:${Versions.ANDROIDX_CORE_KTX_VERSION}") + testImplementation("androidx.test:runner:${Versions.TEST_RUNNER_VERSION}") + testImplementation("androidx.test:rules:${Versions.TEST_RUNNER_VERSION}") + testImplementation("androidx.test.ext:junit-ktx:${Versions.TEST_JUNIT_ANDROIDX_EXT_VERSION}") + testImplementation("com.google.dagger:hilt-android-testing:${Versions.HILT_VERSION}") + testImplementation("org.jetbrains.kotlin:kotlin-reflect:${Versions.KOTLIN_REFLECT_VERSION}") + testImplementation("io.mockk:mockk:${Versions.TEST_MOCKK_VERSION}") + + kaptTest("com.google.dagger:hilt-android-compiler:${Versions.HILT_VERSION}") + testAnnotationProcessor("com.google.dagger:hilt-android-compiler:${Versions.HILT_VERSION}") +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..2f9dc5a4 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..53fb0fa4 --- /dev/null +++ b/app/src/debug/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/debug/java/co/nimblehq/compose/crypto/EmptyHiltActivity.kt b/app/src/debug/java/co/nimblehq/compose/crypto/EmptyHiltActivity.kt new file mode 100644 index 00000000..18342e41 --- /dev/null +++ b/app/src/debug/java/co/nimblehq/compose/crypto/EmptyHiltActivity.kt @@ -0,0 +1,7 @@ +package co.nimblehq.compose.crypto + +import androidx.appcompat.app.AppCompatActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class EmptyHiltActivity : AppCompatActivity() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..9f07f062 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/co/nimblehq/compose/crypto/CrytoComposeApplication.kt b/app/src/main/java/co/nimblehq/compose/crypto/CrytoComposeApplication.kt new file mode 100644 index 00000000..ff1e2b53 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/CrytoComposeApplication.kt @@ -0,0 +1,20 @@ +package co.nimblehq.compose.crypto + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp +import timber.log.Timber + +@HiltAndroidApp +class CrytoComposeApplication : Application() { + + override fun onCreate() { + super.onCreate() + setupLogging() + } + + private fun setupLogging() { + if (BuildConfig.DEBUG) { + Timber.plant(Timber.DebugTree()) + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/AppModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/AppModule.kt new file mode 100644 index 00000000..17761754 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/AppModule.kt @@ -0,0 +1,17 @@ +package co.nimblehq.compose.crypto.di.modules + +import co.nimblehq.compose.crypto.util.DispatchersProvider +import co.nimblehq.compose.crypto.util.DispatchersProviderImpl +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +class AppModule { + @Provides + fun provideDispatchersProvider(): DispatchersProvider { + return DispatchersProviderImpl() + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/MoshiModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/MoshiModule.kt new file mode 100644 index 00000000..2e2f1cbe --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/MoshiModule.kt @@ -0,0 +1,16 @@ +package co.nimblehq.compose.crypto.di.modules + +import co.nimblehq.compose.crypto.data.service.providers.MoshiBuilderProvider +import com.squareup.moshi.Moshi +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +class MoshiModule { + + @Provides + fun provideMoshi(): Moshi = MoshiBuilderProvider.moshiBuilder.build() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt new file mode 100644 index 00000000..80826fdd --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt @@ -0,0 +1,16 @@ +package co.nimblehq.compose.crypto.di.modules + +import co.nimblehq.compose.crypto.ui.screens.MainNavigator +import co.nimblehq.compose.crypto.ui.screens.MainNavigatorImpl +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.android.components.FragmentComponent + +@Module +@InstallIn(FragmentComponent::class) +abstract class NavigatorModule { + + @Binds + abstract fun mainNavigator(mainNavigator: MainNavigatorImpl): MainNavigator +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/OkHttpClientModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/OkHttpClientModule.kt new file mode 100644 index 00000000..a58477e2 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/OkHttpClientModule.kt @@ -0,0 +1,23 @@ +package co.nimblehq.compose.crypto.di.modules + +import co.nimblehq.compose.crypto.BuildConfig +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor + +@Module +@InstallIn(SingletonComponent::class) +class OkHttpClientModule { + + @Provides + fun provideOkHttpClient() = OkHttpClient.Builder().apply { + if (BuildConfig.DEBUG) { + addInterceptor(HttpLoggingInterceptor().apply { + level = HttpLoggingInterceptor.Level.BODY + }) + } + }.build() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt new file mode 100644 index 00000000..8d785d3f --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt @@ -0,0 +1,18 @@ +package co.nimblehq.compose.crypto.di.modules + +import co.nimblehq.compose.crypto.data.repository.UserRepositoryImpl +import co.nimblehq.compose.crypto.data.service.ApiService +import co.nimblehq.compose.crypto.domain.repository.UserRepository +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent + +@Module +@InstallIn(ViewModelComponent::class) +class RepositoryModule { + + @Provides + fun provideUserRepository(apiService: ApiService): UserRepository = + UserRepositoryImpl(apiService) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RetrofitModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RetrofitModule.kt new file mode 100644 index 00000000..d9e93c7e --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RetrofitModule.kt @@ -0,0 +1,40 @@ +package co.nimblehq.compose.crypto.di.modules + +import co.nimblehq.compose.crypto.BuildConfig +import co.nimblehq.compose.crypto.data.service.ApiService +import co.nimblehq.compose.crypto.data.service.providers.ApiServiceProvider +import co.nimblehq.compose.crypto.data.service.providers.ConverterFactoryProvider +import co.nimblehq.compose.crypto.data.service.providers.RetrofitProvider +import com.squareup.moshi.Moshi +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import okhttp3.OkHttpClient +import retrofit2.Converter +import retrofit2.Retrofit + +@Module +@InstallIn(SingletonComponent::class) +class RetrofitModule { + + @Provides + fun provideBaseApiUrl() = BuildConfig.BASE_API_URL + + @Provides + fun provideMoshiConverterFactory(moshi: Moshi): Converter.Factory = + ConverterFactoryProvider.getMoshiConverterFactory(moshi) + + @Provides + fun provideRetrofit( + baseUrl: String, + okHttpClient: OkHttpClient, + converterFactory: Converter.Factory, + ): Retrofit = RetrofitProvider + .getRetrofitBuilder(baseUrl, okHttpClient, converterFactory) + .build() + + @Provides + fun provideApiService(retrofit: Retrofit): ApiService = + ApiServiceProvider.getApiService(retrofit) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/StorageModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/StorageModule.kt new file mode 100644 index 00000000..11f046c3 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/StorageModule.kt @@ -0,0 +1,34 @@ +package co.nimblehq.compose.crypto.di.modules + +import android.content.Context +import android.content.SharedPreferences +import android.preference.PreferenceManager +import co.nimblehq.compose.crypto.data.storage.EncryptedSharedPreferences +import co.nimblehq.compose.crypto.data.storage.NormalSharedPreferences +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +abstract class StorageModule { + + companion object { + + @Provides + fun provideDefaultSharedPreferences(@ApplicationContext context: Context): SharedPreferences = + PreferenceManager.getDefaultSharedPreferences(context) + + @Provides + fun provideSecuredLocalStorage(@ApplicationContext context: Context) = + EncryptedSharedPreferences(context) + + @Provides + fun provideNormalLocalStorage( + @ApplicationContext context: Context, + defaultSharedPreferences: SharedPreferences + ) = NormalSharedPreferences(context, defaultSharedPreferences) + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/main/MainActivityModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/main/MainActivityModule.kt new file mode 100644 index 00000000..62873753 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/main/MainActivityModule.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.di.modules.main + +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ActivityComponent + +@Module +@InstallIn(ActivityComponent::class) +class MainActivityModule diff --git a/app/src/main/java/co/nimblehq/compose/crypto/extension/ViewModelExt.kt b/app/src/main/java/co/nimblehq/compose/crypto/extension/ViewModelExt.kt new file mode 100644 index 00000000..49b31558 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/extension/ViewModelExt.kt @@ -0,0 +1,40 @@ +package co.nimblehq.compose.crypto.extension + +import androidx.activity.ComponentActivity +import androidx.activity.viewModels +import androidx.annotation.MainThread +import androidx.fragment.app.* +import androidx.lifecycle.* + +/** + * PLEASE READ THIS BEFORE IMPLEMENT: + * Right now, there is no easy way to mock/ fake the viewModel inside the Fragment when applying + * the 'by viewModels()' Kotlin property delegate from the activity-ktx/ fragment-ktx artifact. + * After finding many ways to handle this issue, I end up with this solution that is to override the + * loading mechanism of the delegate. + * There is another way to resolve the issue as well and it is mentioned in the reference link. + * Reference: https://proandroiddev.com/testing-the-untestable-the-case-of-the-viewmodel-delegate-975c09160993 + */ +@MainThread +inline fun Fragment.provideActivityViewModels( + noinline factoryProducer: (() -> ViewModelProvider.Factory)? = null +): Lazy = OverridableLazy(activityViewModels(factoryProducer)) + +@MainThread +inline fun Fragment.provideViewModels( + noinline ownerProducer: () -> ViewModelStoreOwner = { this }, + noinline factoryProducer: (() -> ViewModelProvider.Factory)? = null +): Lazy = OverridableLazy(viewModels(ownerProducer, factoryProducer)) + +@MainThread +inline fun ComponentActivity.provideViewModels( + noinline factoryProducer: (() -> ViewModelProvider.Factory)? = null +): Lazy = OverridableLazy(viewModels(factoryProducer)) + +class OverridableLazy(var implementation: Lazy) : Lazy { + + override val value + get() = implementation.value + + override fun isInitialized() = implementation.isInitialized() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/lib/TypeAlias.kt b/app/src/main/java/co/nimblehq/compose/crypto/lib/TypeAlias.kt new file mode 100644 index 00000000..7181104f --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/lib/TypeAlias.kt @@ -0,0 +1,3 @@ +package co.nimblehq.compose.crypto.lib + +typealias IsLoading = Boolean diff --git a/app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt new file mode 100644 index 00000000..100e7901 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt @@ -0,0 +1,17 @@ +package co.nimblehq.compose.crypto.model + +import co.nimblehq.compose.crypto.domain.model.User + +data class UserUiModel( + val id: Int, + val name: String, + val username: String, + val phone: String +) + +private fun User.toUserUiModel(): UserUiModel = + UserUiModel(id = id ?: 0, name = name, username = username, phone = phone) + +fun List.toUserUiModels(): List { + return this.map { it.toUserUiModel() } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/ErrorMapping.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/ErrorMapping.kt new file mode 100644 index 00000000..e45d20d7 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/ErrorMapping.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.ui + +import android.content.Context +import co.nimblehq.compose.crypto.R + +fun Throwable.userReadableMessage(context: Context): String { + // TODO implement user readable message + return context.getString(R.string.error_generic) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseActivity.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseActivity.kt new file mode 100644 index 00000000..e06f1218 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseActivity.kt @@ -0,0 +1,31 @@ +package co.nimblehq.compose.crypto.ui.base + +import android.os.Bundle +import android.view.LayoutInflater +import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding + +abstract class BaseActivity : AppCompatActivity() { + + protected abstract val viewModel: BaseViewModel + + protected abstract val bindingInflater: (LayoutInflater) -> VB + + private var _binding: ViewBinding? = null + + @Suppress("UNCHECKED_CAST") + protected val binding: VB + get() = _binding as VB + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(bindingInflater.invoke(layoutInflater).apply { + _binding = this + }.root) + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragment.kt new file mode 100644 index 00000000..7cdff257 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragment.kt @@ -0,0 +1,62 @@ +package co.nimblehq.compose.crypto.ui.base + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.CallSuper +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.ComposeView +import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import co.nimblehq.compose.crypto.ui.common.Toaster +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch +import javax.inject.Inject + +abstract class BaseComposeFragment : Fragment(), BaseComposeFragmentCallbacks { + + @Inject + lateinit var toaster: Toaster + + protected abstract val composeScreen: @Composable () -> Unit + + @CallSuper + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + (this as? BaseComposeFragmentCallbacks)?.let { initViewModel() } + } + + override fun initViewModel() {} + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return ComposeView(requireContext()).apply { + setContent { composeScreen.invoke() } + } + } + + @CallSuper + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + (this as? BaseComposeFragmentCallbacks)?.let { + bindViewModel() + } + } + + protected inline infix fun Flow.bindTo(crossinline action: (T) -> Unit) { + with(viewLifecycleOwner) { + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + collect { action(it) } + } + } + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragmentCallbacks.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragmentCallbacks.kt new file mode 100644 index 00000000..9e49eab9 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseComposeFragmentCallbacks.kt @@ -0,0 +1,36 @@ +package co.nimblehq.compose.crypto.ui.base + +/** + * An interface provide abstract commitments for the implemented class + * from [BaseComposeFragment], with the [BaseViewModel] + * + * These methods are set to go well with the Lifecycle of the [BaseComposeFragment], + * so developers don't have to worry about the basic setups, + * which could produce conflicts with the fragment's lifecycle + * + * See more detail in each function. + */ +interface BaseComposeFragmentCallbacks { + + /** + * The initial callback where you want to place your initialize functions that trigger + * the setup block for the ViewModel. + * + * This method usually get called only ONCE during the time the Fragment is created. + * Ideally, you would want to place the network calls, api requests in here. + * + * This is called right after [BaseComposeFragment.onCreate] so we should NOT implement or place + * view events functions here. + */ + fun initViewModel() + + /** + * The initial callback where you want to place your view events functions. + * + * This method usually get called multiple times, whenever the Fragment view is being created/re-created. + * Ideally, you would want to setup the data binding from ViewModel to View here. + * + * This is called right after [BaseComposeFragment.onViewCreated] + */ + fun bindViewModel() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragment.kt new file mode 100644 index 00000000..b1c4e3fa --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragment.kt @@ -0,0 +1,88 @@ +package co.nimblehq.compose.crypto.ui.base + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.CallSuper +import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.viewbinding.ViewBinding +import co.nimblehq.common.extensions.hideSoftKeyboard +import co.nimblehq.compose.crypto.ui.common.Toaster +import co.nimblehq.compose.crypto.ui.userReadableMessage +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch +import javax.inject.Inject + +abstract class BaseFragment : Fragment(), BaseFragmentCallbacks { + + @Inject + lateinit var toaster: Toaster + + abstract val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> VB + + private var _binding: ViewBinding? = null + + @Suppress("UNCHECKED_CAST") + val binding: VB + get() = _binding as VB + + @CallSuper + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + (this as? BaseFragmentCallbacks)?.let { initViewModel() } + } + + override fun initViewModel() {} + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return bindingInflater.invoke(inflater, container, false).apply { + _binding = this + }.root + } + + @CallSuper + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + (this as? BaseFragmentCallbacks)?.let { + setupView() + bindViewEvents() + bindViewModel() + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + @CallSuper + override fun bindViewEvents() { + requireNotNull(view).setOnClickListener { + requireActivity().hideSoftKeyboard() + } + } + + open fun displayError(error: Throwable) { + val message = error.userReadableMessage(requireContext()) + toaster.display(message) + } + + protected inline infix fun Flow.bindTo(crossinline action: (T) -> Unit) { + with(viewLifecycleOwner) { + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + collect { action(it) } + } + } + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragmentCallbacks.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragmentCallbacks.kt new file mode 100644 index 00000000..a124d141 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseFragmentCallbacks.kt @@ -0,0 +1,57 @@ +package co.nimblehq.compose.crypto.ui.base + +/** + * An interface provide abstract commitments for the implemented class + * from [BaseFragment], with the [BaseViewModel] + * + * These methods are set to go well with the Lifecycle of the [BaseFragment], + * so developers don't have to worry about the basic setups, + * which could produce conflicts with the fragment's lifecycle + * + * See more detail in each function. + */ +interface BaseFragmentCallbacks { + + /** + * The initial callback where you want to place your initialize functions that trigger + * the setup block for the ViewModel. + * + * This method usually get called only ONCE during the time the Fragment is created. + * Ideally, you would want to place the network calls, api requests in here. + * + * This is called right after [BaseFragment.onCreate] so we should NOT implement or place + * view events functions here. + */ + fun initViewModel() + + /** + * The initial callback where you want to place your setup view components functions. + * + * This method usually get called multiple times, whenever the Fragment view is being created/re-created. + * Ideally, you would want to setup your RecyclerView, ViewPager here (without the data involvement). + * + * This is called right after [BaseFragment.onViewCreated] + */ + fun setupView() + + /** + * The initial callback where you want to place your view events functions. + * + * This method usually get called multiple times, whenever the Fragment view is being created/re-created. + * Ideally, you would want to setup your input events like: + * onClick, onPageChanged, onTextChanged here. + * + * This is called right after [BaseFragment.onViewCreated] + */ + fun bindViewEvents() + + /** + * The initial callback where you want to place your view events functions. + * + * This method usually get called multiple times, whenever the Fragment view is being created/re-created. + * Ideally, you would want to setup the data binding from ViewModel to View here. + * + * This is called right after [BaseFragment.onViewCreated] + */ + fun bindViewModel() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseNavigator.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseNavigator.kt new file mode 100644 index 00000000..887b72d9 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseNavigator.kt @@ -0,0 +1,86 @@ +package co.nimblehq.compose.crypto.ui.base + +import android.os.Bundle +import android.os.Parcelable +import androidx.annotation.IdRes +import androidx.fragment.app.Fragment +import androidx.navigation.NavController +import androidx.navigation.fragment.findNavController +import co.nimblehq.common.extensions.getResourceName +import timber.log.Timber + +interface BaseNavigator { + + val navHostFragmentId: Int + + fun findNavController(): NavController? + + fun navigate(event: NavigationEvent) + + fun navigateUp() +} + +abstract class BaseNavigatorImpl( + protected val fragment: Fragment +) : BaseNavigator { + + private var navController: NavController? = null + + override fun findNavController(): NavController? { + return navController ?: try { + fragment.findNavController().apply { + navController = this + } + } catch (e: IllegalStateException) { + // Log Crashlytics as non-fatal for monitoring + Timber.e(e) + null + } + } + + override fun navigateUp() { + findNavController()?.navigateUp() + } + + protected fun popBackTo(@IdRes destinationId: Int, inclusive: Boolean = false) { + findNavController()?.popBackStack(destinationId, inclusive) + } + + protected fun unsupportedNavigation() { + val navController = findNavController() + val currentGraph = fragment.requireActivity().getResourceName(navController?.graph?.id) + val currentDestination = + fragment.requireActivity().getResourceName(navController?.currentDestination?.id) + handleError( + NavigationException.UnsupportedNavigationException( + currentGraph, + currentDestination + ) + ) + } + + protected fun NavController.navigateToDestinationByDeepLink( + destinationId: Int, + bundle: Parcelable? = null + ) { + createDeepLink() + .setDestination(destinationId).apply { + bundle?.let { + setArguments(Bundle().apply { + putParcelable("bundle", bundle) + }) + } + } + .createPendingIntent() + .send() + } + + private fun handleError(error: Throwable) { + if (fragment is BaseFragment<*>) { + Timber.e(error) + fragment.displayError(error) + } else { + throw error + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseViewModel.kt new file mode 100644 index 00000000..62a80bb8 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/BaseViewModel.kt @@ -0,0 +1,52 @@ +package co.nimblehq.compose.crypto.ui.base + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import co.nimblehq.compose.crypto.lib.IsLoading +import co.nimblehq.compose.crypto.util.DispatchersProvider +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.* +import kotlinx.coroutines.launch + +@Suppress("PropertyName") +abstract class BaseViewModel(private val dispatchersProvider: DispatchersProvider) : ViewModel() { + + private var loadingCount: Int = 0 + + private val _showLoading = MutableStateFlow(false) + val showLoading: StateFlow + get() = _showLoading + + protected val _error = MutableSharedFlow() + val error: SharedFlow + get() = _error + + protected val _navigator = MutableSharedFlow() + val navigator: SharedFlow + get() = _navigator + + /** + * To show loading manually, should call `hideLoading` after + */ + protected fun showLoading() { + if (loadingCount == 0) { + _showLoading.value = true + } + loadingCount++ + } + + /** + * To hide loading manually, should be called after `showLoading` + */ + protected fun hideLoading() { + loadingCount-- + if (loadingCount == 0) { + _showLoading.value = false + } + } + + fun execute(coroutineDispatcher: CoroutineDispatcher = dispatchersProvider.io, job: suspend () -> Unit) = + viewModelScope.launch(coroutineDispatcher) { + job.invoke() + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt new file mode 100644 index 00000000..6e322d32 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt @@ -0,0 +1,8 @@ +package co.nimblehq.compose.crypto.ui.base + +import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle + +sealed class NavigationEvent { + data class Second(val bundle: SecondBundle) : NavigationEvent() + object Compose : NavigationEvent() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationException.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationException.kt new file mode 100644 index 00000000..63aade19 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationException.kt @@ -0,0 +1,11 @@ +package co.nimblehq.compose.crypto.ui.base + +sealed class NavigationException( + cause: Throwable? +) : Throwable(cause) { + + class UnsupportedNavigationException( + currentGraph: String?, + currentDestination: String? + ) : NavigationException(RuntimeException("Unsupported navigation on $currentGraph at $currentDestination")) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/common/Toaster.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/common/Toaster.kt new file mode 100644 index 00000000..449c0277 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/common/Toaster.kt @@ -0,0 +1,18 @@ +package co.nimblehq.compose.crypto.ui.common + +import android.content.Context +import android.widget.Toast +import android.widget.Toast.LENGTH_LONG +import android.widget.Toast.makeText +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class Toaster @Inject constructor(@ApplicationContext private val context: Context) { + + private var toast: Toast? = null + + fun display(message: String) { + toast?.cancel() + toast = makeText(context, message, LENGTH_LONG).also { it.show() } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt new file mode 100644 index 00000000..c2675055 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt @@ -0,0 +1,16 @@ +package co.nimblehq.compose.crypto.ui.screens + +import android.view.LayoutInflater +import androidx.activity.viewModels +import co.nimblehq.compose.crypto.databinding.ActivityMainBinding +import co.nimblehq.compose.crypto.ui.base.BaseActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class MainActivity : BaseActivity() { + + override val bindingInflater: (LayoutInflater) -> ActivityMainBinding + get() = { inflater -> ActivityMainBinding.inflate(inflater) } + + override val viewModel by viewModels() +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt new file mode 100644 index 00000000..a3b0438b --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt @@ -0,0 +1,46 @@ +package co.nimblehq.compose.crypto.ui.screens + +import androidx.fragment.app.Fragment +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.ui.base.BaseNavigator +import co.nimblehq.compose.crypto.ui.base.BaseNavigatorImpl +import co.nimblehq.compose.crypto.ui.base.NavigationEvent +import co.nimblehq.compose.crypto.ui.screens.home.HomeFragmentDirections +import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle +import javax.inject.Inject + +interface MainNavigator : BaseNavigator + +class MainNavigatorImpl @Inject constructor( + fragment: Fragment +) : BaseNavigatorImpl(fragment), MainNavigator { + + override val navHostFragmentId = R.id.navHostFragment + + override fun navigate(event: NavigationEvent) { + when (event) { + is NavigationEvent.Second -> navigateToSecond(event.bundle) + is NavigationEvent.Compose -> navigateToCompose() + } + } + + private fun navigateToSecond(bundle: SecondBundle) { + val navController = findNavController() + when (navController?.currentDestination?.id) { + R.id.homeFragment -> navController.navigate( + HomeFragmentDirections.actionHomeFragmentToSecondFragment(bundle) + ) + else -> unsupportedNavigation() + } + } + + private fun navigateToCompose() { + val navController = findNavController() + when (navController?.currentDestination?.id) { + R.id.homeFragment -> navController.navigate( + HomeFragmentDirections.actionHomeFragmentToComposeFragment() + ) + else -> unsupportedNavigation() + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt new file mode 100644 index 00000000..9e8aa980 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.ui.screens + +import co.nimblehq.compose.crypto.ui.base.BaseViewModel +import co.nimblehq.compose.crypto.util.DispatchersProvider +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class MainViewModel @Inject constructor(dispatchers: DispatchersProvider) : BaseViewModel(dispatchers) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt new file mode 100644 index 00000000..b7aec41a --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt @@ -0,0 +1,33 @@ +package co.nimblehq.compose.crypto.ui.screens.compose + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.fragment.app.viewModels +import co.nimblehq.compose.crypto.ui.base.BaseComposeFragment +import co.nimblehq.compose.crypto.ui.screens.compose.composables.ComposeScreen +import dagger.hilt.android.AndroidEntryPoint + +@ExperimentalComposeUiApi +@AndroidEntryPoint +class ComposeFragment : BaseComposeFragment() { + + private val viewModel: ComposeViewModel by viewModels() + + override val composeScreen: @Composable () -> Unit + get() = { + with(viewModel) { + ComposeScreen( + userUiModels = userUiModels.collectAsState().value, + showLoading = showLoading.collectAsState().value, + textFieldValue = textFieldValue.value, + onTextFieldValueChange = ::updateTextFieldValue, + onUserItemClick = toaster::display + ) + } + } + + override fun bindViewModel() { + viewModel.error bindTo toaster::display + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt new file mode 100644 index 00000000..50080832 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt @@ -0,0 +1,57 @@ +package co.nimblehq.compose.crypto.ui.screens.compose + +import androidx.compose.runtime.State +import androidx.compose.runtime.mutableStateOf +import co.nimblehq.compose.crypto.model.UserUiModel +import co.nimblehq.compose.crypto.model.toUserUiModels +import co.nimblehq.compose.crypto.ui.base.BaseViewModel +import co.nimblehq.compose.crypto.domain.usecase.GetUsersUseCase +import co.nimblehq.compose.crypto.domain.usecase.UseCaseResult +import co.nimblehq.compose.crypto.util.DispatchersProvider +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import javax.inject.Inject + +interface Output { + + val userUiModels: StateFlow> + + val textFieldValue: State + + fun updateTextFieldValue(value: String) +} + +@HiltViewModel +class ComposeViewModel @Inject constructor( + private val getUsersUseCase: GetUsersUseCase, + dispatchers: DispatchersProvider +) : BaseViewModel(dispatchers), Output { + + private val _userUiModels = MutableStateFlow>(emptyList()) + override val userUiModels: StateFlow> + get() = _userUiModels + + private val _textFieldValue = mutableStateOf("") + override val textFieldValue: State + get() = _textFieldValue + + init { + fetchUsers() + } + + override fun updateTextFieldValue(value: String) { + _textFieldValue.value = value + } + + private fun fetchUsers() { + showLoading() + execute { + when (val result = getUsersUseCase.execute()) { + is UseCaseResult.Success -> _userUiModels.value = result.data.toUserUiModels() + is UseCaseResult.Error -> _error.emit(result.exception.message.orEmpty()) + } + hideLoading() + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt new file mode 100644 index 00000000..e6e329a3 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt @@ -0,0 +1,46 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables + +import androidx.compose.foundation.layout.Box +import androidx.compose.material.CircularProgressIndicator +import androidx.compose.material.Scaffold +import androidx.compose.runtime.Composable +import androidx.compose.ui.* +import co.nimblehq.compose.crypto.model.UserUiModel +import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme + +@Suppress("LongMethod", "LongParameterList") +@ExperimentalComposeUiApi +@Composable +fun ComposeScreen( + userUiModels: List, + showLoading: Boolean, + textFieldValue: String, + onTextFieldValueChange: (String) -> Unit, + onUserItemClick: (String) -> Unit +) { + ComposeTheme { + Scaffold( + topBar = { + TitleBar( + title = "Jetpack Compose", + textFieldValue = textFieldValue, + onTextFieldValueChange = onTextFieldValueChange + ) + } + ) { + ContentCard { + Box { + UserList( + userUiModels = userUiModels, + onUserItemClick = onUserItemClick + ) + if (showLoading) { + CircularProgressIndicator( + modifier = Modifier.align(alignment = Alignment.Center) + ) + } + } + } + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt new file mode 100644 index 00000000..5c8449f2 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt @@ -0,0 +1,26 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Card +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension + +@Composable +fun ContentCard( + content: @Composable () -> Unit +) { + Card( + shape = RoundedCornerShape( + topStart = Dimension.Dp24, + topEnd = Dimension.Dp24, + bottomStart = Dimension.Dp0, + bottomEnd = Dimension.Dp0 + ), + elevation = Dimension.Dp0, + modifier = Modifier.fillMaxSize() + ) { + content.invoke() + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt new file mode 100644 index 00000000..71176d13 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt @@ -0,0 +1,54 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.runtime.Composable +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension + +@Suppress("LongMethod") +@ExperimentalComposeUiApi +@Composable +fun TitleBar( + title: String, + textFieldValue: String, + onTextFieldValueChange: (String) -> Unit +) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(Dimension.Dp24) + ) { + val keyboardController = LocalSoftwareKeyboardController.current + + Text( + text = title, + style = MaterialTheme.typography.h6 + ) + TextField( + value = textFieldValue, + onValueChange = onTextFieldValueChange, + label = { Text(text = "Demo TextField") }, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Text, + imeAction = ImeAction.Done, + ), + keyboardActions = KeyboardActions( + onDone = { keyboardController?.hide() }, + ), + modifier = Modifier + .fillMaxWidth() + .padding(top = Dimension.Dp16) + ) + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt new file mode 100644 index 00000000..a113b978 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt @@ -0,0 +1,53 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables + +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.material.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.model.UserUiModel +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension + +@Suppress("LongMethod") +@Composable +fun UserItem( + userUiModel: UserUiModel, + onClick: (String) -> Unit +) { + Surface( + modifier = Modifier + .fillMaxWidth() + .clickable(onClick = { onClick(userUiModel.toString()) }) + ) { + Row(modifier = Modifier.padding(Dimension.Dp16)) { + Image( + painter = painterResource(id = R.drawable.ic_launcher_foreground), + contentDescription = null, + modifier = Modifier + .width(Dimension.Dp52) + .height(Dimension.Dp52), + ) + Column( + modifier = Modifier + .align(Alignment.CenterVertically) + .padding(start = Dimension.Dp16) + ) { + with(userUiModel) { + Text( + text = name, + style = MaterialTheme.typography.subtitle1 + ) + Text( + text = phone, + style = MaterialTheme.typography.body1, + modifier = Modifier.padding(top = Dimension.Dp4) + ) + } + } + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt new file mode 100644 index 00000000..b8be3267 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt @@ -0,0 +1,28 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material.Divider +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import co.nimblehq.compose.crypto.model.UserUiModel +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension + +@Composable +fun UserList( + userUiModels: List, + onUserItemClick: (String) -> Unit +) { + LazyColumn { + itemsIndexed(items = userUiModels) { index, user -> + if (index == 0) Spacer(modifier = Modifier.height(Dimension.Dp8)) + UserItem( + userUiModel = user, + onClick = onUserItemClick + ) + if (index != userUiModels.size - 1) Divider() + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt new file mode 100644 index 00000000..e875f0e0 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.ui.graphics.Color + +@Suppress("MagicNumber") +object Color { + val BlueFreeSpeech = Color(0xFF3F51B5) + val AlmostWhite = Color(0xFFDFE4EA) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt new file mode 100644 index 00000000..2e5f0065 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt @@ -0,0 +1,13 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.ui.unit.dp + +@Suppress("MagicNumber") +object Dimension { + val Dp0 = 0.dp + val Dp4 = 4.dp + val Dp8 = 8.dp + val Dp16 = 16.dp + val Dp24 = 24.dp + val Dp52 = 52.dp +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt new file mode 100644 index 00000000..26b5709c --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt @@ -0,0 +1,10 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Shapes + +object Shape { + val ComposeShapes = Shapes( + medium = RoundedCornerShape(Dimension.Dp8) + ) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt new file mode 100644 index 00000000..3f4a1860 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt @@ -0,0 +1,24 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.material.MaterialTheme +import androidx.compose.material.lightColors +import androidx.compose.runtime.Composable + +object Palette { + val ComposeLightPalette = lightColors( + primary = Color.BlueFreeSpeech, + background = Color.AlmostWhite + ) +} + +@Composable +fun ComposeTheme( + content: @Composable () -> Unit +) { + MaterialTheme( + colors = Palette.ComposeLightPalette, + typography = Typography.ComposeTypography, + shapes = Shape.ComposeShapes, + content = content + ) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt new file mode 100644 index 00000000..01efb8d9 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt @@ -0,0 +1,16 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.material.Typography +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import co.nimblehq.compose.crypto.R + +object Typography { + private val MontserratFontFamily = FontFamily( + Font(R.font.montserrat_regular) + ) + + val ComposeTypography = Typography( + defaultFontFamily = MontserratFontFamily + ) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt new file mode 100644 index 00000000..c1bd1bb1 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt @@ -0,0 +1,65 @@ +package co.nimblehq.compose.crypto.ui.screens.home + +import android.view.LayoutInflater +import android.view.ViewGroup +import co.nimblehq.common.extensions.visibleOrGone +import co.nimblehq.compose.crypto.databinding.FragmentHomeBinding +import co.nimblehq.compose.crypto.databinding.ViewLoadingBinding +import co.nimblehq.compose.crypto.extension.provideViewModels +import co.nimblehq.compose.crypto.lib.IsLoading +import co.nimblehq.compose.crypto.model.UserUiModel +import co.nimblehq.compose.crypto.ui.base.BaseFragment +import co.nimblehq.compose.crypto.ui.screens.MainNavigator +import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle +import dagger.hilt.android.AndroidEntryPoint +import timber.log.Timber +import javax.inject.Inject + +@AndroidEntryPoint +class HomeFragment : BaseFragment() { + + @Inject + lateinit var navigator: MainNavigator + + private val viewModel: HomeViewModel by provideViewModels() + + private lateinit var viewLoadingBinding: ViewLoadingBinding + + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentHomeBinding + get() = { inflater, container, attachToParent -> + FragmentHomeBinding.inflate(inflater, container, attachToParent) + } + + override fun setupView() { + viewLoadingBinding = ViewLoadingBinding.bind(binding.root) + } + + override fun bindViewEvents() { + super.bindViewEvents() + + with(binding) { + btNext.setOnClickListener { + viewModel.navigateToSecond(SecondBundle("From home")) + } + + btCompose.setOnClickListener { + viewModel.navigateToCompose() + } + } + } + + override fun bindViewModel() { + viewModel.userUiModels bindTo ::displayUsers + viewModel.showLoading bindTo ::bindLoading + viewModel.error bindTo toaster::display + viewModel.navigator bindTo navigator::navigate + } + + private fun displayUsers(userUiModels: List) { + Timber.d("Result : $userUiModels") + } + + private fun bindLoading(isLoading: IsLoading) { + viewLoadingBinding.pbLoading.visibleOrGone(isLoading) + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt new file mode 100644 index 00000000..9518e485 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt @@ -0,0 +1,63 @@ +package co.nimblehq.compose.crypto.ui.screens.home + +import androidx.lifecycle.viewModelScope +import co.nimblehq.compose.crypto.model.UserUiModel +import co.nimblehq.compose.crypto.model.toUserUiModels +import co.nimblehq.compose.crypto.ui.base.BaseViewModel +import co.nimblehq.compose.crypto.ui.base.NavigationEvent +import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle +import co.nimblehq.compose.crypto.domain.usecase.GetUsersUseCase +import co.nimblehq.compose.crypto.domain.usecase.UseCaseResult +import co.nimblehq.compose.crypto.util.DispatchersProvider +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +interface Output { + + val userUiModels: StateFlow> + + fun navigateToSecond(bundle: SecondBundle) + + fun navigateToCompose() +} + +@HiltViewModel +class HomeViewModel @Inject constructor( + private val getUsersUseCase: GetUsersUseCase, + dispatchers: DispatchersProvider +) : BaseViewModel(dispatchers), Output { + + private val _userUiModels = MutableStateFlow>(emptyList()) + override val userUiModels: StateFlow> + get() = _userUiModels + + init { + fetchUsers() + } + + override fun navigateToSecond(bundle: SecondBundle) { + viewModelScope.launch { + _navigator.emit(NavigationEvent.Second(bundle)) + } + } + + override fun navigateToCompose() { + viewModelScope.launch { + _navigator.emit(NavigationEvent.Compose) + } + } + + private fun fetchUsers() { + showLoading() + execute { + when (val result = getUsersUseCase.execute()) { + is UseCaseResult.Success -> _userUiModels.value = result.data.toUserUiModels() + is UseCaseResult.Error -> _error.emit(result.exception.message.orEmpty()) + } + hideLoading() + } + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt new file mode 100644 index 00000000..a8dbba8a --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.ui.screens.second + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class SecondBundle( + val message: String +) : Parcelable diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt new file mode 100644 index 00000000..24632dbc --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt @@ -0,0 +1,28 @@ +package co.nimblehq.compose.crypto.ui.screens.second + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.navArgs +import co.nimblehq.compose.crypto.databinding.FragmentSecondBinding +import co.nimblehq.compose.crypto.ui.base.BaseFragment +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class SecondFragment : BaseFragment() { + + private val viewModel by viewModels() + + private val args: SecondFragmentArgs by navArgs() + + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentSecondBinding + get() = { inflater, container, attachToParent -> + FragmentSecondBinding.inflate(inflater, container, attachToParent) + } + + override fun setupView() { + binding.tvMessage.text = args.bundle.message + } + + override fun bindViewModel() {} +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt new file mode 100644 index 00000000..0473f494 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.ui.screens.second + +import co.nimblehq.compose.crypto.ui.base.BaseViewModel +import co.nimblehq.compose.crypto.util.DispatchersProvider +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class SecondViewModel @Inject constructor(dispatchers: DispatchersProvider) : BaseViewModel(dispatchers) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProvider.kt b/app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProvider.kt new file mode 100644 index 00000000..c83cb70c --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProvider.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.util + +import kotlinx.coroutines.CoroutineDispatcher + +interface DispatchersProvider { + val io: CoroutineDispatcher + val main: CoroutineDispatcher + val default: CoroutineDispatcher +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProviderImpl.kt b/app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProviderImpl.kt new file mode 100644 index 00000000..943c5475 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/util/DispatchersProviderImpl.kt @@ -0,0 +1,12 @@ +package co.nimblehq.compose.crypto.util + +import kotlinx.coroutines.Dispatchers + +class DispatchersProviderImpl : DispatchersProvider { + + override val io = Dispatchers.IO + + override val main = Dispatchers.Main + + override val default = Dispatchers.Default +} diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..1f6bb290 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..a339898e --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/font/montserrat_regular.ttf b/app/src/main/res/font/montserrat_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8d443d5d56ac36091e9689cd5d1b1948d9124545 GIT binary patch literal 245708 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 z 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 Lg_BF?GlRba@aD!@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..f197b5ee --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 00000000..ba885d12 --- /dev/null +++ b/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,32 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_second.xml new file mode 100644 index 00000000..2e2b65d6 --- /dev/null +++ b/app/src/main/res/layout/fragment_second.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/layout/view_loading.xml b/app/src/main/res/layout/view_loading.xml new file mode 100644 index 00000000..0ec4df1f --- /dev/null +++ b/app/src/main/res/layout/view_loading.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..6b78462d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..6b78462d --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f5908281d070150700378b64a84c7db1f97aa1 GIT binary patch literal 3056 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 axPAxe%7rDusX+w*00006jj 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⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..459ca609d3ae0d3943ab44cdc27feef9256dc6d7 GIT binary patch literal 7098 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca12fe024be86e868d14e91120a6902f8e88ac6 GIT binary patch literal 6464 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 B0*L?s literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..8e19b410a1b15ff180f3dacac19395fe3046cdec GIT binary patch literal 10676 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..4c19a13c239cb67b8a2134ddd5f325db1d2d5bee GIT binary patch literal 15523 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 BIP(Ai literal 0 HcmV?d00001 diff --git a/app/src/main/res/navigation/nav_graph_main.xml b/app/src/main/res/navigation/nav_graph_main.xml new file mode 100644 index 00000000..a418b8fb --- /dev/null +++ b/app/src/main/res/navigation/nav_graph_main.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..d442e10e --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,7 @@ + + + + @color/blue_free_speech + @color/blue_tory + @color/red_violet + diff --git a/app/src/main/res/values/colors_pallete.xml b/app/src/main/res/values/colors_pallete.xml new file mode 100644 index 00000000..1e3f7b65 --- /dev/null +++ b/app/src/main/res/values/colors_pallete.xml @@ -0,0 +1,7 @@ + + + + #3F51B5 + #303F9F + #FF4081 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..a72561ba --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + + Cryto Compose + Unexpected error + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..0eb88fe3 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 00000000..04ead227 --- /dev/null +++ b/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1 @@ + diff --git a/app/src/staging/res/values/strings.xml b/app/src/staging/res/values/strings.xml new file mode 100644 index 00000000..0111ad80 --- /dev/null +++ b/app/src/staging/res/values/strings.xml @@ -0,0 +1,3 @@ + + Cryto Compose - Staging + diff --git a/app/src/staging/res/xml/network_security_config.xml b/app/src/staging/res/xml/network_security_config.xml new file mode 100644 index 00000000..2a99cd31 --- /dev/null +++ b/app/src/staging/res/xml/network_security_config.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + www.jsonplaceholder.typicode.com + + + + + + diff --git a/app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt b/app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt new file mode 100644 index 00000000..f00bae76 --- /dev/null +++ b/app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt @@ -0,0 +1,21 @@ +package co.nimblehq.compose.crypto.test + +import co.nimblehq.compose.crypto.di.modules.NavigatorModule +import co.nimblehq.compose.crypto.ui.screens.MainNavigator +import dagger.Module +import dagger.Provides +import dagger.hilt.android.components.FragmentComponent +import dagger.hilt.testing.TestInstallIn +import io.mockk.mockk + +@Module +@TestInstallIn( + components = [FragmentComponent::class], + replaces = [NavigatorModule::class] +) +object TestNavigatorModule { + val mockMainNavigator = mockk() + + @Provides + fun provideMainNavigator() = mockMainNavigator +} diff --git a/app/src/test/java/co/nimblehq/compose/crypto/test/ViewModelExt.kt b/app/src/test/java/co/nimblehq/compose/crypto/test/ViewModelExt.kt new file mode 100644 index 00000000..3fadbadc --- /dev/null +++ b/app/src/test/java/co/nimblehq/compose/crypto/test/ViewModelExt.kt @@ -0,0 +1,21 @@ +package co.nimblehq.compose.crypto.test + +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModel +import co.nimblehq.compose.crypto.extension.OverridableLazy +import kotlin.reflect.KProperty1 +import kotlin.reflect.full.memberProperties +import kotlin.reflect.jvm.isAccessible + +fun T.replace( + viewModelDelegate: KProperty1, + viewModel: VM +) { + viewModelDelegate.isAccessible = true + (viewModelDelegate.getDelegate(this) as OverridableLazy).implementation = lazy { viewModel } +} + +inline fun T.getPrivateProperty(name: String): KProperty1 = + T::class + .memberProperties + .first { it.name == name } as KProperty1 diff --git a/app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt b/app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt new file mode 100644 index 00000000..99aa56b5 --- /dev/null +++ b/app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt @@ -0,0 +1,69 @@ +package co.nimblehq.compose.crypto.ui + +import android.content.ComponentName +import android.content.Intent +import android.os.Bundle +import androidx.annotation.StyleRes +import androidx.core.util.Preconditions +import androidx.test.core.app.ActivityScenario +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.viewbinding.ViewBinding +import co.nimblehq.compose.crypto.EmptyHiltActivity +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.ui.base.BaseFragment +import dagger.hilt.android.testing.* +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +abstract class BaseFragmentTest, VB : ViewBinding> { + + protected lateinit var fragment: F + + /** + * Issue: launchFragmentInContainer from the androidx.fragment:fragment-testing library + * is NOT possible to use right now as it uses a hardcoded Activity under the hood + * (i.e. [EmptyFragmentActivity]) which is not annotated with @AndroidEntryPoint. + * + * As a workaround, use this function that is equivalent. It requires you to add + * [HiltTestActivity] in the debug folder and include it in the debug AndroidManifest.xml file + * as can be found in this project. + * Read more: https://dagger.dev/hilt/testing + * Solution: launchFragmentInHiltContainer is copied from architecture-sample repo, but has + * been modified to receive input [onInstantiate] so the devs can create the fragment + * instance with mock/ fake variables at the initial step. + * Reference: https://github.com/android/architecture-samples/blob/dev-hilt/app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/HiltExt.kt + */ + protected inline fun > launchFragmentInHiltContainer( + crossinline onInstantiate: F.() -> Unit, + fragmentArgs: Bundle? = null, + @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme, + crossinline action: F.() -> Unit = {} + ) { + val startActivityIntent = Intent.makeMainActivity( + ComponentName( + ApplicationProvider.getApplicationContext(), + EmptyHiltActivity::class.java + ) + ).putExtra( + "androidx.fragment.app.testing.FragmentScenario.EmptyFragmentActivity.THEME_EXTRAS_BUNDLE_KEY", + themeResId + ) + + ActivityScenario.launch(startActivityIntent).onActivity { activity -> + val fragment = (activity.supportFragmentManager.fragmentFactory.instantiate( + Preconditions.checkNotNull(F::class.java.classLoader), + F::class.java.name + ) as F).apply { + this.onInstantiate() + } + fragment.arguments = fragmentArgs + activity.supportFragmentManager + .beginTransaction() + .add(android.R.id.content, fragment, "") + .commitNow() + + fragment.action() + } + } +} diff --git a/app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt b/app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt new file mode 100644 index 00000000..e5888d8c --- /dev/null +++ b/app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt @@ -0,0 +1,45 @@ +package co.nimblehq.compose.crypto.ui.screens.home + +import co.nimblehq.compose.crypto.databinding.FragmentHomeBinding +import co.nimblehq.compose.crypto.test.TestNavigatorModule.mockMainNavigator +import co.nimblehq.compose.crypto.test.getPrivateProperty +import co.nimblehq.compose.crypto.test.replace +import co.nimblehq.compose.crypto.ui.BaseFragmentTest +import dagger.hilt.android.testing.* +import io.kotest.matchers.nulls.shouldNotBeNull +import io.kotest.matchers.shouldBe +import io.mockk.mockk +import org.junit.* + +@HiltAndroidTest +class HomeFragmentTest : BaseFragmentTest() { + + private val mockViewModel = mockk(relaxed = true) + + @get:Rule + var hiltRule = HiltAndroidRule(this) + + @Before + fun setup() { + hiltRule.inject() + } + + @Test + fun `When initializing HomeFragment, its views display the text correctly`() { + launchFragment() + fragment.binding.btNext.text.toString() shouldBe "Next" + fragment.binding.btCompose.text.toString() shouldBe "Jetpack Compose" + } + + private fun launchFragment() { + launchFragmentInHiltContainer( + onInstantiate = { + replace(getPrivateProperty("viewModel"), mockViewModel) + navigator = mockMainNavigator + } + ) { + fragment = this + fragment.navigator.shouldNotBeNull() + } + } +} diff --git a/app/src/test/resources/robolectric.properties b/app/src/test/resources/robolectric.properties new file mode 100644 index 00000000..1a7a2e6e --- /dev/null +++ b/app/src/test/resources/robolectric.properties @@ -0,0 +1,2 @@ +sdk=28 +application=dagger.hilt.android.testing.HiltTestApplication diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..a7cb0caa --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,67 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } + + dependencies { + classpath("androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.ANDROIDX_NAVIGATION_VERSION}") + classpath("com.android.tools.build:gradle:${Versions.BUILD_GRADLE_VERSION}") + classpath("com.google.dagger:hilt-android-gradle-plugin:${Versions.HILT_VERSION}") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.KOTLIN_VERSION}") + } +} + +plugins { + id("io.gitlab.arturbosch.detekt").version(Versions.DETEKT_VERSION) +} + +allprojects { + repositories { + google() + maven(url = "https://jitpack.io") + mavenCentral() + } +} + +tasks.register("clean", Delete::class) { + delete(rootProject.buildDir) +} + +tasks.withType().configureEach { + // Target version of the generated JVM bytecode. It is used for type resolution. + jvmTarget = JavaVersion.VERSION_1_8.toString() +} + +detekt { + toolVersion = Versions.DETEKT_VERSION + + source = files( + "app/src/main/java", + "data/src/main/java", + "domain/src/main/java", + "buildSrc/src/main/java" + ) + parallel = false + config = files("detekt-config.yml") + buildUponDefaultConfig = false + disableDefaultRuleSets = false + + debug = false + ignoreFailures = false + + ignoredBuildTypes = listOf("release") + ignoredFlavors = listOf("production") + + reports { + xml { + enabled = true + destination = file("build/reports/detekt.xml") + } + html { + enabled = true + destination = file("build/reports/detekt.html") + } + } +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000..181a9870 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,9 @@ +import org.gradle.kotlin.dsl.`kotlin-dsl` + +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() +} diff --git a/buildSrc/src/main/java/Configurations.kt b/buildSrc/src/main/java/Configurations.kt new file mode 100644 index 00000000..51b3dee4 --- /dev/null +++ b/buildSrc/src/main/java/Configurations.kt @@ -0,0 +1,15 @@ +object Flavor { + const val PRODUCTION = "production" + const val STAGING = "staging" + const val DIMENSIONS = "stage" +} + +object BuildType { + const val DEBUG = "debug" + const val RELEASE = "release" +} + +object Module { + const val DATA = ":data" + const val DOMAIN = ":domain" +} diff --git a/buildSrc/src/main/java/FileExt.kt b/buildSrc/src/main/java/FileExt.kt new file mode 100644 index 00000000..e52f52d1 --- /dev/null +++ b/buildSrc/src/main/java/FileExt.kt @@ -0,0 +1,12 @@ +import java.io.File +import java.util.* + +fun File.loadGradleProperties(fileName: String): Properties { + val properties = Properties() + val signingProperties = File(this, fileName) + + if (signingProperties.isFile) { + properties.load(signingProperties.inputStream()) + } + return properties +} diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt new file mode 100644 index 00000000..50a27c8d --- /dev/null +++ b/buildSrc/src/main/java/Versions.kt @@ -0,0 +1,50 @@ +object Versions { + const val BUILD_GRADLE_VERSION = "4.2.1" + + const val ANDROID_COMPILE_SDK_VERSION = 30 + const val ANDROID_MIN_SDK_VERSION = 23 + const val ANDROID_TARGET_SDK_VERSION = 30 + + const val ANDROID_VERSION_CODE = 1 + const val ANDROID_VERSION_NAME = "3.9.0" + + // Dependencies (Alphabet sorted) + const val ANDROID_COMMON_KTX_VERSION = "0.1.1" + const val ANDROID_CRYPTO_VERSION = "1.0.0" + const val ANDROIDX_ACTIVITY_KTX_VERSION = "1.2.1" + const val ANDROIDX_CORE_KTX_VERSION = "1.3.0" + const val ANDROIDX_FRAGMENT_VERSION = "1.3.3" + const val ANDROIDX_LIFECYCLE_VERSION = "2.4.0-alpha02" + const val ANDROIDX_NAVIGATION_VERSION = "2.3.4" + const val ANDROIDX_SUPPORT_VERSION = "1.3.0" + + const val COMPOSE_VERSION = "1.0.2" + const val CONSTRAINT_LAYOUT_VERSION = "2.0.0-alpha3" + + const val HILT_VERSION = "2.38.1" + + const val JAVAX_INJECT_VERSION = "1" + const val JACOCO_VERSION = "0.8.7" + + const val KOTLIN_REFLECT_VERSION = "1.5.10" + const val KOTLIN_VERSION = "1.5.21" + const val KOTLINX_COROUTINES_VERSION = "1.5.0" + + const val MOSHI_VERSION = "1.12.0" + + const val OKHTTP_VERSION = "4.9.1" + const val RETROFIT_VERSION = "2.9.0" + + const val TIMBER_LOG_VERSION = "4.7.1" + + // Configuration + const val DETEKT_VERSION = "1.20.0" + + // Testing libraries + const val TEST_JUNIT_ANDROIDX_EXT_VERSION = "1.1.2" + const val TEST_JUNIT_VERSION = "4.13.2" + const val TEST_KOTEST_VERSION = "4.6.3" + const val TEST_MOCKK_VERSION = "1.10.6" + const val TEST_ROBOLECTRIC_VERSION = "4.3.1" + const val TEST_RUNNER_VERSION = "1.3.0" +} diff --git a/buildSrc/src/main/java/plugins/jacoco-report.gradle.kts b/buildSrc/src/main/java/plugins/jacoco-report.gradle.kts new file mode 100644 index 00000000..d4e32fb8 --- /dev/null +++ b/buildSrc/src/main/java/plugins/jacoco-report.gradle.kts @@ -0,0 +1,142 @@ +package plugins + +plugins { + jacoco +} + +jacoco { + toolVersion = Versions.JACOCO_VERSION +} + +val fileGenerated = setOf( + "**/R.class", + "**/R\$*.class", + "**/*\$ViewBinder*.*", + "**/*\$InjectAdapter*.*", + "**/*Injector*.*", + "**/BuildConfig.*", + "**/Manifest*.*", + "**/*_ViewBinding*.*", + "**/*Adapter*.*", + "**/*Test*.*", + // Enum + "**/*\$Creator*", + // Nav Component + "**/*_Factory*", + "**/*FragmentArgs*", + "**/*FragmentDirections*", + "**/FragmentNavArgsLazy.kt", + "**/*Fragment*navArgs*", + "**/*ModuleDeps*.*", + "**/*NavGraphDirections*", + // Hilt + "**/*_ComponentTreeDeps*", + "**/*_HiltComponents*", + "**/*_HiltModules*", + "**/Hilt_*" +) + +val packagesExcluded = setOf( + "**/com/bumptech/glide", + "**/dagger/hilt/internal", + "**/hilt_aggregated_deps", + "**/co/nimblehq/coroutine/databinding/**", + "**/co/nimblehq/coroutine/di/**" +) + +val fileFilter = fileGenerated + packagesExcluded + +val classDirectoriesTree = files( + fileTree(project.rootDir) { + include( + "**/app/build/intermediates/javac/stagingDebug/classes/**", + "**/data/build/intermediates/javac/debug/classes/**", + "**/app/build/tmp/kotlin-classes/stagingDebug/**", + "**/data/build/tmp/kotlin-classes/debug/**", + "**/domain/build/classes/kotlin/main/**" + ) + exclude(fileFilter) + } +) + +val sourceDirectoriesTree = files( + listOf( + "${project.rootDir}/app/src/main/java", + "${project.rootDir}/data/src/main/java", + "${project.rootDir}/domain/src/main/java" + ) +) + +/** + * Once enabled [testCoverageEnabled], Jacoco will capture the coverage and store them in + * [${project.module}/jacoco.exec]. We need to add all [jacoco.exec] to here. + * [${project.module}/build/jacoco/testFlavorDebugTest.exec] won't have the result anymore, so we + * can safety get rid of them. + * Reference: https://stackoverflow.com/a/67626100/5187859 + * Issue tracker 1: https://issuetracker.google.com/issues/171125857#comment20 + * Issue tracker 2: https://issuetracker.google.com/issues/195860510 + */ +val executionDataTree = fileTree(project.rootDir) { + include( + "app/jacoco.exec", + "data/jacoco.exec", + "domain/build/jacoco/test.exec" + ) +} + +tasks.register("jacocoTestReport") { + group = "Reporting" + description = "Generate Jacoco coverage reports for Debug build" + + dependsOn( + ":app:testStagingDebugUnitTest", + ":data:testDebugUnitTest", + ":domain:test" + ) + + classDirectories.setFrom(classDirectoriesTree) + sourceDirectories.setFrom(sourceDirectoriesTree) + executionData.setFrom(executionDataTree) + + reports { + xml.isEnabled = true + html.isEnabled = true + csv.isEnabled = false + } +} + +tasks.withType { + configure { + isIncludeNoLocationClasses = true + /* + * From AGP 4.2, JDK 11 is now bundled, but Jacoco is running on JDK 8. It causes the + * build failed because of the missing of some classes that do not exist on JDK 8 but + * JDK 11. We need to exclude that classes temporarily until Jacoco supports running + * on JDK 11. + * Android Gradle Plugin 4.2.0 release note: https://developer.android.com/studio/releases#4.2-bundled-jdk-11 + * Reference: https://stackoverflow.com/a/68739364/5187859 + */ + excludes = listOf("jdk.internal.*") + } +} + +/** + * Workaround to bypass "Caused by: java.lang.IllegalStateException: + * Cannot process instrumented class... + * Please supply original non-instrumented classes." issue. + * + * Application projects that depend on variants of libraries that have test coverage enabled will + * still not work as app code should be instrumented on the fly, while library code should not be. + * https://issuetracker.google.com/issues/171125857#comment26 + */ +tasks.withType().configureEach { + configure { + includes = listOf("com.application.*") // include only application classes + } +} + +tasks.withType { + testLogging { + events("passed", "skipped", "failed") + } +} diff --git a/config/debug.keystore b/config/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..930eba4091f680fe7576a1216452ca9518105aea GIT binary patch literal 2230 zcmchY`8yPf8pmff7$zahFa{H{&kV9lSq|0Mo3SLuJ|;u%|eZ5D=;jM~2FAiWs8*30M;758A`S%gm&K52Sxa`iwjnoXkF z9L1sx{`h-!0mvt2{&IH6<-^+{=}{r!#6nif1J?bN5!Ir&ial{2SX?g$iuVrKjC=cZ z{h!+jMCwhU<+yew^U!jjy_OPCCaGRq7vkQq*X{^pR`f?wNwN%Ab+A46r?0cb@1dhsi3aLbKnq zTUjckg`C>Nl}4WY-CFhL9^&{ym8xNsv${_~UqDR=bisN6C+ zEB0J!>Gy=PFM#Fly6nc-SkGV+vaa>mbf+CrbkohJ#G9@5M4c%^SSkiULm0;0dC|D^ zfuzN&%WqF@8+D|L3IFnjg2RQs))@o!U{f>qOuc(%ok|0KNDXUY8g(a3x`4#{NH|Au zhp$mswKVa@8ysZVJZgOA+pBQ^TI|j`{MusQY;&|VYyDxB2Eq1hV1lMH<+@P2K4SN| zA5vM{u4tN9M?wSfJl-z8ZR02=K4wjM9K9sF8bvXRG>`)5be&8>n)hILc+_uuU2d3I zUAd%jc&U*yxk~FsUUfUS!{5TOb-|-^7#nAvl0M#n(emZF(DD-ZDC&|- zu8e#`3$3-7V2%;Xt~Yb~#VhZz{WUz{*q4*NH~GCKFgX1@Ir6c|fNXPulcdAaqbCg6 zTa?!;Eo){Mzg*XbYZd~6>7Q+HsK|hiHJ@TiCw_9h>TZ)8 zE>z_lIr;nX>Y;Pe<6%#2Usk@3bh~ugV!M#hi&yR>9B{ZlP#GK_MbfNt&*vBi=&F^V z4IU5HzpZ%gXsCG?g$TifSsaM{E9UakJ5xY;gVIeo2s^nJkl1R=${I zeNG1#d)_Otp}nhA$!_ad)h3FCbN++Wgr9gKb=9-b_SEX+y-!yG{3^=$%6nN;_qMi2 zo`GuSrLGaEp5A(ZcM?|B(YB~g9pGeHm!t_i zB_aJwcu4^lX{kkq*S;nYdT3g{kNI*Z%9 z(9E~o96f{@jCpdU9D$HW4-6_YC6_mtS5jo`3w64LP1P2t44fy1aIlimelhWcL)33b-c z!RiA5U|%d9Ovchd);GW)AP59eNbW1Z3i9x&q*|qN1%W^~6o4h;;8;E$@EHh?2q-)N zC$w*$`@ky#J42(=f}?1ED=-n*2{O%}8cf9@umbaek@Dt{I4yO3O^t4DrMel}qI#Bd!})9V$WFCl>S#$ipBz;7_yZ3$UOd zwQdQGQsSLa9Z$}v-2o>GH1B(9~;{NsQ4-p73?6017HJi1|UeWwP&gsMr zr-|k7B3GukXsll+qJwH3?5UdIFl9d7{}XU2#06uy9w@SsitsPE`JsmU0(+52@`H8`)11Hlm8j|hgGngAU5!$w^+PU)BTH%so(L!!*IXd zhaOtjFF#7GOMsG#e_fe?MMvvQ#B3B<8P=zExk_$|dW22-kTupfPb_+CoT;GZLnJl? zwCC*A_TF2{M5*T&?e#8gF7sle6bj#KwTgEw4%Y1~6ha3>yE$eip@QYJy@8`6=)vN+ zI!^UU$e-)%V)nv(V^p!dP0^OiU4golWWA;%yKzc+s!Mk`xdjc2HYa + diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt new file mode 100644 index 00000000..940bc9d6 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt @@ -0,0 +1,15 @@ +package co.nimblehq.compose.crypto.data.repository + +import co.nimblehq.compose.crypto.data.response.toUsers +import co.nimblehq.compose.crypto.data.service.ApiService +import co.nimblehq.compose.crypto.domain.model.User +import co.nimblehq.compose.crypto.domain.repository.UserRepository + +class UserRepositoryImpl constructor( + private val apiService: ApiService +) : UserRepository { + + override suspend fun getUsers(): List { + return apiService.getUsers().toUsers() + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt new file mode 100644 index 00000000..651a7b73 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt @@ -0,0 +1,62 @@ +package co.nimblehq.compose.crypto.data.response + +import co.nimblehq.compose.crypto.domain.model.User +import com.squareup.moshi.Json + +data class UserResponse( + @Json(name = "id") val id: Int?, + @Json(name = "name") val name: String?, + @Json(name = "username") val username: String?, + @Json(name = "email") val email: String?, + @Json(name = "address") val addressResponse: AddressResponse?, + @Json(name = "phone") val phone: String?, + @Json(name = "website") val website: String? +) { + + data class AddressResponse( + @Json(name = "street") val street: String?, + @Json(name = "suite") val suite: String?, + @Json(name = "city") val city: String?, + @Json(name = "zipcode") val zipCode: String?, + @Json(name = "geo") val geoResponse: GeoResponse? + ) { + + data class GeoResponse( + @Json(name = "lat") val latitude: String?, + @Json(name = "lng") val longitude: String? + ) + } +} + +fun List.toUsers(): List { + return this.map { it.toUser() } +} + +private fun UserResponse.toUser(): User { + return User( + id = this.id, + name = this.name.orEmpty(), + username = this.username.orEmpty(), + email = this.email.orEmpty(), + address = this.addressResponse?.toAddress(), + phone = this.phone.orEmpty(), + website = this.website.orEmpty() + ) +} + +private fun UserResponse.AddressResponse.toAddress(): User.Address { + return User.Address( + street = this.street.orEmpty(), + suite = this.suite.orEmpty(), + city = this.city.orEmpty(), + zipCode = this.zipCode.orEmpty(), + geo = this.geoResponse?.toGeo() + ) +} + +private fun UserResponse.AddressResponse.GeoResponse.toGeo(): User.Address.Geo { + return User.Address.Geo( + latitude = this.latitude.orEmpty(), + longitude = this.longitude.orEmpty() + ) +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt new file mode 100644 index 00000000..660e77b9 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt @@ -0,0 +1,10 @@ +package co.nimblehq.compose.crypto.data.service + +import co.nimblehq.compose.crypto.data.response.UserResponse +import retrofit2.http.GET + +interface ApiService { + + @GET("users") + suspend fun getUsers(): List +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ApiServiceProvider.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ApiServiceProvider.kt new file mode 100644 index 00000000..b2958907 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ApiServiceProvider.kt @@ -0,0 +1,11 @@ +package co.nimblehq.compose.crypto.data.service.providers + +import co.nimblehq.compose.crypto.data.service.ApiService +import retrofit2.Retrofit + +object ApiServiceProvider { + + fun getApiService(retrofit: Retrofit): ApiService { + return retrofit.create(ApiService::class.java) + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ConverterFactoryProvider.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ConverterFactoryProvider.kt new file mode 100644 index 00000000..f85bfd5a --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/ConverterFactoryProvider.kt @@ -0,0 +1,12 @@ +package co.nimblehq.compose.crypto.data.service.providers + +import com.squareup.moshi.Moshi +import retrofit2.Converter +import retrofit2.converter.moshi.MoshiConverterFactory + +object ConverterFactoryProvider { + + fun getMoshiConverterFactory(moshi: Moshi): Converter.Factory { + return MoshiConverterFactory.create(moshi) + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/MoshiBuilderProvider.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/MoshiBuilderProvider.kt new file mode 100644 index 00000000..c1087c39 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/MoshiBuilderProvider.kt @@ -0,0 +1,16 @@ +package co.nimblehq.compose.crypto.data.service.providers + +import com.squareup.moshi.Moshi +import com.squareup.moshi.adapters.Rfc3339DateJsonAdapter +import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory +import java.util.* + +object MoshiBuilderProvider { + + val moshiBuilder: Moshi.Builder + get() = Moshi.Builder() + // Parse the DateTime in this format: [yyyy-MM-ddThh:mm:ss.ssZ] + // e.g: [2019-10-12T07:20:50.52Z] + .add(Date::class.java, Rfc3339DateJsonAdapter()) + .add(KotlinJsonAdapterFactory()) +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/RetrofitProvider.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/RetrofitProvider.kt new file mode 100644 index 00000000..687e00ad --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/service/providers/RetrofitProvider.kt @@ -0,0 +1,19 @@ +package co.nimblehq.compose.crypto.data.service.providers + +import okhttp3.OkHttpClient +import retrofit2.Converter +import retrofit2.Retrofit + +object RetrofitProvider { + + fun getRetrofitBuilder( + baseUrl: String, + okHttpClient: OkHttpClient, + converterFactory: Converter.Factory, + ): Retrofit.Builder { + return Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(converterFactory) + .client(okHttpClient) + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/storage/BaseSharedPreferences.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/BaseSharedPreferences.kt new file mode 100644 index 00000000..2030d754 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/BaseSharedPreferences.kt @@ -0,0 +1,42 @@ +package co.nimblehq.compose.crypto.data.storage + +import android.content.SharedPreferences + +abstract class BaseSharedPreferences { + + protected lateinit var sharedPreferences: SharedPreferences + + protected inline fun get(key: String): T? = + if (sharedPreferences.contains(key)) { + when (T::class) { + Boolean::class -> sharedPreferences.getBoolean(key, false) as T? + String::class -> sharedPreferences.getString(key, null) as T? + Float::class -> sharedPreferences.getFloat(key, 0f) as T? + Int::class -> sharedPreferences.getInt(key, 0) as T? + Long::class -> sharedPreferences.getLong(key, 0L) as T? + else -> null + } + } else { + null + } + + protected fun set(key: String, value: T) { + sharedPreferences.execute { + when (value) { + is Boolean -> it.putBoolean(key, value) + is String -> it.putString(key, value) + is Float -> it.putFloat(key, value) + is Long -> it.putLong(key, value) + is Int -> it.putInt(key, value) + } + } + } + + protected fun remove(key: String) { + sharedPreferences.execute { it.remove(key) } + } + + protected fun clearAll() { + sharedPreferences.execute { it.clear() } + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/storage/EncryptedSharedPreferences.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/EncryptedSharedPreferences.kt new file mode 100644 index 00000000..eaabbf41 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/EncryptedSharedPreferences.kt @@ -0,0 +1,23 @@ +package co.nimblehq.compose.crypto.data.storage + +import android.content.Context +import androidx.security.crypto.EncryptedSharedPreferences +import androidx.security.crypto.MasterKeys +import javax.inject.Inject + +private const val APP_SECRET_SHARED_PREFS = "app_secret_shared_prefs" + +class EncryptedSharedPreferences @Inject constructor(applicationContext: Context) : + BaseSharedPreferences() { + + init { + val masterKey = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC) + sharedPreferences = EncryptedSharedPreferences.create( + APP_SECRET_SHARED_PREFS, + masterKey, + applicationContext, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM + ) + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/storage/NormalSharedPreferences.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/NormalSharedPreferences.kt new file mode 100644 index 00000000..3f765595 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/NormalSharedPreferences.kt @@ -0,0 +1,24 @@ +package co.nimblehq.compose.crypto.data.storage + +import android.content.Context +import android.content.SharedPreferences +import javax.inject.Inject + +class NormalSharedPreferences @Inject constructor( + private val applicationContext: Context, + private val defaultSharedPreferences: SharedPreferences +) : BaseSharedPreferences() { + + init { + useDefaultSharedPreferences() + } + + fun useDefaultSharedPreferences() { + sharedPreferences = defaultSharedPreferences + } + + // Use this function for creating a custom sharedPreferences if needed + fun useCustomSharedPreferences(name: String) { + sharedPreferences = applicationContext.getSharedPreferences(name, Context.MODE_PRIVATE) + } +} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/storage/SharedPreferencesExt.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/SharedPreferencesExt.kt new file mode 100644 index 00000000..58a3a464 --- /dev/null +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/storage/SharedPreferencesExt.kt @@ -0,0 +1,10 @@ +package co.nimblehq.compose.crypto.data.storage + +import android.content.SharedPreferences + +fun SharedPreferences.execute(operation: (SharedPreferences.Editor) -> Unit) { + with(edit()) { + operation(this) + apply() + } +} diff --git a/data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt b/data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt new file mode 100644 index 00000000..8fae3070 --- /dev/null +++ b/data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt @@ -0,0 +1,53 @@ +package co.nimblehq.compose.crypto.data.repository + +import co.nimblehq.compose.crypto.data.response.UserResponse +import co.nimblehq.compose.crypto.data.response.toUsers +import co.nimblehq.compose.crypto.data.service.ApiService +import co.nimblehq.compose.crypto.domain.repository.UserRepository +import io.kotest.assertions.throwables.shouldThrow +import io.kotest.matchers.shouldBe +import io.mockk.coEvery +import io.mockk.mockk +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runBlockingTest +import org.junit.Before +import org.junit.Test + +@ExperimentalCoroutinesApi +class UserRepositoryTest { + + private lateinit var mockService: ApiService + private lateinit var repository: UserRepository + + private val userResponse = UserResponse( + id = 1, + name = "name", + username = "username", + email = "email", + addressResponse = null, + phone = null, + website = null + ) + + @Before + fun setup() { + mockService = mockk() + repository = UserRepositoryImpl(mockService) + } + + @Test + fun `When calling getUsers request successfully, it returns success response`() = runBlockingTest { + coEvery { mockService.getUsers() } returns listOf(userResponse) + + repository.getUsers() shouldBe listOf(userResponse).toUsers() + } + + @Test + fun `When calling getUsers request failed, it returns wrapped error`() = runBlockingTest { + coEvery { mockService.getUsers() } throws Throwable() + + shouldThrow { + repository.getUsers() + } + } +} diff --git a/detekt-config.yml b/detekt-config.yml new file mode 100644 index 00000000..1b0b030d --- /dev/null +++ b/detekt-config.yml @@ -0,0 +1,345 @@ +build: + maxIssues: 10 + weights: + complexity: 2 + formatting: 1 + LongParameterList: 1 + comments: 1 + +processors: + active: true + exclude: + # - 'FunctionCountProcessor' + # - 'PropertyCountProcessor' + # - 'ClassCountProcessor' + # - 'PackageCountProcessor' + # - 'KtFileCountProcessor' + +console-reports: + active: true + exclude: + # - 'ProjectStatisticsReport' + # - 'ComplexityReport' + # - 'NotificationReport' + # - 'FindingsReport' + # - 'BuildFailureReport' + +output-reports: + active: true + exclude: + # - 'PlainOutputReport' + # - 'XmlOutputReport' + +comments: + active: true + CommentOverPrivateFunction: + active: false + CommentOverPrivateProperty: + active: false + EndOfSentenceFormat: + active: false + endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!]$) + UndocumentedPublicClass: + active: false + searchInNestedClass: true + searchInInnerClass: true + searchInInnerObject: true + searchInInnerInterface: true + UndocumentedPublicFunction: + active: false + +complexity: + active: true + ComplexCondition: + active: true + threshold: 3 + ComplexInterface: + active: false + threshold: 10 + includeStaticDeclarations: false + ComplexMethod: + active: true + threshold: 10 + LabeledExpression: + active: false + LargeClass: + active: true + threshold: 150 + LongMethod: + active: true + threshold: 20 + LongParameterList: + active: true + threshold: 5 + ignoreDefaultParameters: false + MethodOverloading: + active: false + threshold: 5 + NestedBlockDepth: + active: true + threshold: 3 + StringLiteralDuplication: + active: false + threshold: 2 + ignoreAnnotation: true + excludeStringsWithLessThan5Characters: true + ignoreStringsRegex: '$^' + TooManyFunctions: + active: true + thresholdInFiles: 10 + thresholdInClasses: 10 + thresholdInInterfaces: 10 + thresholdInObjects: 10 + thresholdInEnums: 10 + +empty-blocks: + active: true + EmptyCatchBlock: + active: true + EmptyClassBlock: + active: true + EmptyDefaultConstructor: + active: true + EmptyDoWhileBlock: + active: true + EmptyElseBlock: + active: true + EmptyFinallyBlock: + active: true + EmptyForBlock: + active: true + EmptyFunctionBlock: + active: false + EmptyIfBlock: + active: true + EmptyInitBlock: + active: true + EmptyKtFile: + active: true + EmptySecondaryConstructor: + active: true + EmptyWhenBlock: + active: true + EmptyWhileBlock: + active: true + +exceptions: + active: true + ExceptionRaisedInUnexpectedLocation: + active: false + methodNames: 'toString,hashCode,equals,finalize' + InstanceOfCheckForException: + active: false + NotImplementedDeclaration: + active: false + PrintStackTrace: + active: false + RethrowCaughtException: + active: false + ReturnFromFinally: + active: false + SwallowedException: + active: false + ThrowingExceptionFromFinally: + active: false + ThrowingExceptionInMain: + active: false + ThrowingExceptionsWithoutMessageOrCause: + active: false + exceptions: 'IllegalArgumentException,IllegalStateException,IOException' + ThrowingNewInstanceOfSameException: + active: false + TooGenericExceptionCaught: + active: true + exceptionNames: + - ArrayIndexOutOfBoundsException + - Error + - Exception + - IllegalMonitorStateException + - NullPointerException + - IndexOutOfBoundsException + - RuntimeException + - Throwable + TooGenericExceptionThrown: + active: true + exceptionNames: + - Error + - Exception + - NullPointerException + - Throwable + - RuntimeException + +naming: + active: true + ClassNaming: + active: true + classPattern: '[A-Z$][a-zA-Z0-9$]*' + EnumNaming: + active: true + enumEntryPattern: '^[A-Z$][a-zA-Z_$]*$' + ForbiddenClassName: + active: false + forbiddenName: '' + FunctionMaxLength: + active: false + maximumFunctionNameLength: 30 + FunctionMinLength: + active: false + minimumFunctionNameLength: 3 + FunctionNaming: + active: true + functionPattern: '^([a-z$][a-zA-Z$0-9]*)|(`.*`)$' + MatchingDeclarationName: + active: true + MemberNameEqualsClassName: + active: false + ignoreOverriddenFunction: true + ObjectPropertyNaming: + active: true + propertyPattern: '[A-Za-z][_A-Za-z0-9]*' + PackageNaming: + active: true + packagePattern: '^[a-z]+(\.[a-z][a-z0-9]*)*$' + TopLevelPropertyNaming: + active: true + constantPattern: '[A-Z][_A-Z0-9]*' + propertyPattern: '[a-z][A-Za-z\d]*' + privatePropertyPattern: '(_)?[a-z][A-Za-z0-9]*' + VariableMaxLength: + active: false + maximumVariableNameLength: 64 + VariableMinLength: + active: false + minimumVariableNameLength: 1 + VariableNaming: + active: true + variablePattern: '(_)?[a-z][A-Za-z0-9]*' + privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' + +performance: + active: true + ForEachOnRange: + active: true + SpreadOperator: + active: true + UnnecessaryTemporaryInstantiation: + active: true + +potential-bugs: + active: true + DuplicateCaseInWhenExpression: + active: true + EqualsAlwaysReturnsTrueOrFalse: + active: false + EqualsWithHashCodeExist: + active: true + ExplicitGarbageCollectionCall: + active: true + InvalidRange: + active: false + IteratorHasNextCallsNextMethod: + active: false + IteratorNotThrowingNoSuchElementException: + active: false + LateinitUsage: + active: false + excludeAnnotatedProperties: "" + ignoreOnClassesPattern: "" + UnconditionalJumpStatementInLoop: + active: false + UnreachableCode: + active: true + UnsafeCallOnNullableType: + active: false + UnsafeCast: + active: false + UselessPostfixExpression: + active: false + WrongEqualsTypeParameter: + active: false + +style: + active: true + CollapsibleIfStatements: + active: false + DataClassContainsFunctions: + active: false + conversionFunctionPrefix: 'to' + EqualsNullCall: + active: false + ExpressionBodySyntax: + active: false + ForbiddenComment: + active: true + values: 'FIXME:,STOPSHIP:' + ForbiddenImport: + active: false + imports: '' + FunctionOnlyReturningConstant: + active: false + ignoreOverridableFunction: true + excludedFunctions: 'describeContents' + LoopWithTooManyJumpStatements: + active: false + maxJumpCount: 1 + MagicNumber: + active: true + ignoreNumbers: '-1,0,1,2' + ignoreHashCodeFunction: false + ignorePropertyDeclaration: false + ignoreConstantDeclaration: true + ignoreCompanionObjectPropertyDeclaration: true + ignoreAnnotation: false + ignoreNamedArgument: true + ignoreEnums: false + MaxLineLength: + active: true + maxLineLength: 120 + excludePackageStatements: false + excludeImportStatements: false + ModifierOrder: + active: true + NestedClassesVisibility: + active: false + NewLineAtEndOfFile: + active: false + OptionalAbstractKeyword: + active: true + OptionalUnit: + active: false + OptionalWhenBraces: + active: false + ProtectedMemberInFinalClass: + active: false + RedundantVisibilityModifierRule: + active: false + ReturnCount: + active: true + max: 2 + excludedFunctions: "equals" + SafeCast: + active: true + SerialVersionUIDInSerializableClass: + active: false + SpacingBetweenPackageAndImports: + active: false + ThrowsCount: + active: true + max: 2 + UnnecessaryAbstractClass: + active: false + UnnecessaryInheritance: + active: false + UnnecessaryParentheses: + active: false + UntilInsteadOfRangeTo: + active: false + UnusedImports: + active: false + UseDataClass: + active: false + excludeAnnotatedClasses: "" + UtilityClassWithPublicConstructor: + active: false + WildcardImport: + active: false diff --git a/domain/.gitignore b/domain/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/domain/.gitignore @@ -0,0 +1 @@ +/build diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts new file mode 100644 index 00000000..4d57eadf --- /dev/null +++ b/domain/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + id("java-library") + id("kotlin") + + jacoco +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +dependencies { + implementation("javax.inject:javax.inject:${Versions.JAVAX_INJECT_VERSION}") + + // Testing + testImplementation("junit:junit:${Versions.TEST_JUNIT_VERSION}") + testImplementation("io.mockk:mockk:${Versions.TEST_MOCKK_VERSION}") + testImplementation("io.kotest:kotest-assertions-core:${Versions.TEST_KOTEST_VERSION}") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.KOTLINX_COROUTINES_VERSION}") +} diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt new file mode 100644 index 00000000..96f9c649 --- /dev/null +++ b/domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt @@ -0,0 +1,26 @@ +package co.nimblehq.compose.crypto.domain.model + +data class User( + val id: Int?, + val name: String, + val username: String, + val email: String, + val address: Address?, + val phone: String, + val website: String +) { + + data class Address( + val street: String, + val suite: String, + val city: String, + val zipCode: String, + val geo: Geo? + ) { + + data class Geo( + val latitude: String, + val longitude: String + ) + } +} diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt new file mode 100644 index 00000000..cbb47ab9 --- /dev/null +++ b/domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt @@ -0,0 +1,8 @@ +package co.nimblehq.compose.crypto.domain.repository + +import co.nimblehq.compose.crypto.domain.model.User + +interface UserRepository { + + suspend fun getUsers(): List +} diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt new file mode 100644 index 00000000..c922d7a0 --- /dev/null +++ b/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt @@ -0,0 +1,17 @@ +package co.nimblehq.compose.crypto.domain.usecase + +import co.nimblehq.compose.crypto.domain.model.User +import co.nimblehq.compose.crypto.domain.repository.UserRepository +import javax.inject.Inject + +class GetUsersUseCase @Inject constructor(private val userRepository: UserRepository) { + + suspend fun execute(): UseCaseResult> { + return try { + val response = userRepository.getUsers() + UseCaseResult.Success(response) + } catch (e: Exception) { + UseCaseResult.Error(e) + } + } +} diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/UseCaseResult.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/UseCaseResult.kt new file mode 100644 index 00000000..a81350b9 --- /dev/null +++ b/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/UseCaseResult.kt @@ -0,0 +1,6 @@ +package co.nimblehq.compose.crypto.domain.usecase + +sealed class UseCaseResult { + class Success(val data: T) : UseCaseResult() + class Error(val exception: Throwable) : UseCaseResult() +} diff --git a/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt b/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt new file mode 100644 index 00000000..735f948d --- /dev/null +++ b/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt @@ -0,0 +1,54 @@ +package co.nimblehq.compose.crypto.domain.usecase + +import co.nimblehq.compose.crypto.domain.model.User +import co.nimblehq.compose.crypto.domain.repository.UserRepository +import io.kotest.matchers.shouldBe +import io.mockk.coEvery +import io.mockk.mockk +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runBlockingTest +import org.junit.Before +import org.junit.Test + +@ExperimentalCoroutinesApi +class GetUsersUseCaseTest { + + private lateinit var mockRepository: UserRepository + private lateinit var usecase: GetUsersUseCase + + private val user = User( + id = 1, + name = "name", + username = "username", + email = "email", + address = null, + phone = "", + website = "" + ) + + @Before + fun setup() { + mockRepository = mockk() + usecase = GetUsersUseCase(mockRepository) + } + + @Test + fun `When calling request successfully, it returns success response`() = runBlockingTest { + val expected = listOf(user) + coEvery { mockRepository.getUsers() } returns expected + + usecase.execute().run { + (this as UseCaseResult.Success).data shouldBe expected + } + } + + @Test + fun `When calling request failed, it returns wrapped error`() = runBlockingTest { + val expected = Exception() + coEvery { mockRepository.getUsers() } throws expected + + usecase.execute().run { + (this as UseCaseResult.Error).exception shouldBe expected + } + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..0115e9df --- /dev/null +++ b/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +android.enableJetifier=true +android.useAndroidX=true +#https://kotlinlang.org/docs/kapt.html#running-kapt-tasks-in-parallel +kapt.use.worker.api=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f3d88b1c2faf2fc91d853cd5d4242b5547257070 GIT binary patch literal 58695 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

+cuHakg=^)%x!-ERTM< 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/inter_semi_bold.ttf b/app/src/main/res/font/inter_semi_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..01523b22252dc7381d00ddf40890005d506fc53a GIT binary patch literal 315756 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

qEIEEraMLk+K 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 z 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 z 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 UN{TEP##>h2xea+7Vq4I6`P2$&iI1V|&< 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 z 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 Lg_BF?GlRba@aD!@ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 13caadd1..f197b5ee 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,4 +1,16 @@ + android:layout_height="match_parent"> + + + + diff --git a/app/src/main/res/navigation/nav_graph_main.xml b/app/src/main/res/navigation/nav_graph_main.xml index 7fea3d84..e7a08259 100644 --- a/app/src/main/res/navigation/nav_graph_main.xml +++ b/app/src/main/res/navigation/nav_graph_main.xml @@ -1,7 +1,11 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/main_nav_graph" + app:startDestination="@id/homeFragment"> - + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a72561ba..a7e7bb47 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,4 +2,12 @@ Cryto Compose Unexpected error + + Trade Now and Get\nYour Life + + Total Coins + $%s + Today\'s Profit + $%s + %1$s%% diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index 50a27c8d..4a396e28 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -19,6 +19,7 @@ object Versions { const val ANDROIDX_SUPPORT_VERSION = "1.3.0" const val COMPOSE_VERSION = "1.0.2" + const val COMPOSE_CONSTRAINT_LAYOUT_VERSION = "1.0.1" const val CONSTRAINT_LAYOUT_VERSION = "2.0.0-alpha3" const val HILT_VERSION = "2.38.1" From e17c0db16cd204b6684e35dd0274b3c33a6ca542 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Mon, 4 Jul 2022 17:13:45 +0700 Subject: [PATCH 09/21] [#2] Remove unused test classes --- .../compose/crypto/test/TestModules.kt | 21 -------- .../data/repository/UserRepositoryTest.kt | 53 ------------------- .../domain/usecase/GetUsersUseCaseTest.kt | 52 ------------------ 3 files changed, 126 deletions(-) delete mode 100644 app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt delete mode 100644 data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt delete mode 100644 domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt diff --git a/app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt b/app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt deleted file mode 100644 index f00bae76..00000000 --- a/app/src/test/java/co/nimblehq/compose/crypto/test/TestModules.kt +++ /dev/null @@ -1,21 +0,0 @@ -package co.nimblehq.compose.crypto.test - -import co.nimblehq.compose.crypto.di.modules.NavigatorModule -import co.nimblehq.compose.crypto.ui.screens.MainNavigator -import dagger.Module -import dagger.Provides -import dagger.hilt.android.components.FragmentComponent -import dagger.hilt.testing.TestInstallIn -import io.mockk.mockk - -@Module -@TestInstallIn( - components = [FragmentComponent::class], - replaces = [NavigatorModule::class] -) -object TestNavigatorModule { - val mockMainNavigator = mockk() - - @Provides - fun provideMainNavigator() = mockMainNavigator -} diff --git a/data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt b/data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt deleted file mode 100644 index 8fae3070..00000000 --- a/data/src/test/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryTest.kt +++ /dev/null @@ -1,53 +0,0 @@ -package co.nimblehq.compose.crypto.data.repository - -import co.nimblehq.compose.crypto.data.response.UserResponse -import co.nimblehq.compose.crypto.data.response.toUsers -import co.nimblehq.compose.crypto.data.service.ApiService -import co.nimblehq.compose.crypto.domain.repository.UserRepository -import io.kotest.assertions.throwables.shouldThrow -import io.kotest.matchers.shouldBe -import io.mockk.coEvery -import io.mockk.mockk -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runBlockingTest -import org.junit.Before -import org.junit.Test - -@ExperimentalCoroutinesApi -class UserRepositoryTest { - - private lateinit var mockService: ApiService - private lateinit var repository: UserRepository - - private val userResponse = UserResponse( - id = 1, - name = "name", - username = "username", - email = "email", - addressResponse = null, - phone = null, - website = null - ) - - @Before - fun setup() { - mockService = mockk() - repository = UserRepositoryImpl(mockService) - } - - @Test - fun `When calling getUsers request successfully, it returns success response`() = runBlockingTest { - coEvery { mockService.getUsers() } returns listOf(userResponse) - - repository.getUsers() shouldBe listOf(userResponse).toUsers() - } - - @Test - fun `When calling getUsers request failed, it returns wrapped error`() = runBlockingTest { - coEvery { mockService.getUsers() } throws Throwable() - - shouldThrow { - repository.getUsers() - } - } -} diff --git a/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt b/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt deleted file mode 100644 index 30baae83..00000000 --- a/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt +++ /dev/null @@ -1,52 +0,0 @@ -package co.nimblehq.compose.crypto.domain.usecase - -import io.kotest.matchers.shouldBe -import io.mockk.coEvery -import io.mockk.mockk -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runBlockingTest -import org.junit.Before -import org.junit.Test - -@ExperimentalCoroutinesApi -class GetUsersUseCaseTest { - - private lateinit var mockRepository: UserRepository - private lateinit var usecase: GetUsersUseCase - - private val user = User( - id = 1, - name = "name", - username = "username", - email = "email", - address = null, - phone = "", - website = "" - ) - - @Before - fun setup() { - mockRepository = mockk() - usecase = GetUsersUseCase(mockRepository) - } - - @Test - fun `When calling request successfully, it returns success response`() = runBlockingTest { - val expected = listOf(user) - coEvery { mockRepository.getUsers() } returns expected - - usecase.execute().run { - (this as UseCaseResult.Success).data shouldBe expected - } - } - - @Test - fun `When calling request failed, it returns wrapped error`() = runBlockingTest { - val expected = Exception() - coEvery { mockRepository.getUsers() } throws expected - - usecase.execute().run { - (this as UseCaseResult.Error).exception shouldBe expected - } - } -} From 0c4063672233a2938522d0389f143fdc3aea52bd Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Tue, 5 Jul 2022 17:08:07 +0700 Subject: [PATCH 10/21] [#2] Add Danger config files --- Dangerfile | 39 ++++++++++++++++++ Gemfile | 11 ++++++ Gemfile.lock | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 Dangerfile create mode 100644 Gemfile create mode 100644 Gemfile.lock diff --git a/Dangerfile b/Dangerfile new file mode 100644 index 00000000..3456f3d4 --- /dev/null +++ b/Dangerfile @@ -0,0 +1,39 @@ +# Make it more obvious that a PR is a work in progress and shouldn't be merged yet +warn("PR is classed as Work in Progress") if github.pr_title.include? "WIP" + +# Warn when there is a big PR +warn("Big PR") if git.lines_of_code > 500 + +# Warn to encourage a PR description +warn("Please provide a summary in the PR description to make it easier to review") if github.pr_body.length == 0 + +# Warn to encourage that labels should have been used on the PR +warn("Please add labels to this PR") if github.pr_labels.empty? + +# Check commits lint and warn on all checks (instead of failing) +commit_lint.check warn: :all, disable: [:subject_length] + +# Detekt output check +detekt_dir = "**/build/reports/detekt/detekt-result.xml" +Dir[detekt_dir].each do |file_name| + kotlin_detekt.skip_gradle_task = true + kotlin_detekt.report_file = file_name + kotlin_detekt.detekt(inline_mode: true) +end + +# Android Lint output check +lint_dir = "**/**/build/reports/lint/lint-result.xml" +Dir[lint_dir].each do |file_name| + android_lint.skip_gradle_task = true + android_lint.report_file = file_name + android_lint.lint(inline_mode: true) +end + +# Show Danger test coverage report from Jacoco for CoroutineTemplate +jacoco_dir = "**/**/build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml" +markdown "## CoroutineTemplate Jacoco report:" +Dir[jacoco_dir].each do |file_name| + # Report coverage of modified files, warn if total project coverage is under 80% + # or if any modified file's coverage is under 95% + shroud.report file_name, 80, 95, false +end diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..0b95cb7d --- /dev/null +++ b/Gemfile @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } + +gem 'danger' +gem 'danger-android_lint' +gem 'danger-commit_lint' +gem 'danger-kotlin_detekt' +gem 'danger-shroud' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..264f8e5c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,109 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + ansi (1.5.0) + ast (2.4.2) + claide (1.0.3) + claide-plugins (0.9.2) + cork + nap + open4 (~> 1.3) + colored2 (3.1.2) + cork (0.3.0) + colored2 (~> 3.1) + danger (8.4.0) + claide (~> 1.0) + claide-plugins (>= 0.9.2) + colored2 (~> 3.1) + cork (~> 0.1) + faraday (>= 0.9.0, < 2.0) + faraday-http-cache (~> 2.0) + git (~> 1.7) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.0) + no_proxy_fix + octokit (~> 4.7) + terminal-table (>= 1, < 4) + danger-android_lint (0.0.9) + danger-plugin-api (~> 1.0) + oga + danger-commit_lint (0.0.7) + danger-plugin-api (~> 1.0) + danger-kotlin_detekt (0.0.3) + danger-plugin-api (~> 1.0) + danger-plugin-api (1.0.0) + danger (> 2.0) + danger-shroud (0.0.3) + danger-plugin-api (~> 1.0) + nokogiri + faraday (1.8.0) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + multipart-post (>= 1.2, < 3) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-http-cache (2.2.0) + faraday (>= 0.8) + faraday-httpclient (1.0.1) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + git (1.9.1) + rchardet (~> 1.8) + kramdown (2.3.1) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + multipart-post (2.1.1) + nap (1.1.0) + no_proxy_fix (0.1.2) + nokogiri (1.13.3-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.13.3-x86_64-linux) + racc (~> 1.4) + octokit (4.21.0) + faraday (>= 0.9) + sawyer (~> 0.8.0, >= 0.5.3) + oga (3.3) + ast + ruby-ll (~> 2.1) + open4 (1.3.4) + public_suffix (4.0.6) + racc (1.6.0) + rchardet (1.8.0) + rexml (3.2.5) + ruby-ll (2.1.2) + ansi + ast + ruby2_keywords (0.0.5) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.1.0) + +PLATFORMS + x86_64-darwin-19 + x86_64-linux + +DEPENDENCIES + danger + danger-android_lint + danger-commit_lint + danger-kotlin_detekt + danger-shroud + +BUNDLED WITH + 2.2.15 From b1ec78f86e2a1b020d02db22bb655a36fb9bc584 Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Tue, 12 Jul 2022 12:14:24 +0700 Subject: [PATCH 11/21] [#4] Apply code from review part 1 --- .../compose/{composables => }/ContentCard.kt | 2 +- .../screens/compose/{composables => }/TitleBar.kt | 2 +- .../compose/{composables => }/home/HomeScreen.kt | 7 +++---- .../{composables => }/home/PortfolioCard.kt | 2 +- .../crypto/ui/screens/compose/theme/Dimension.kt | 1 - .../crypto/ui/screens/compose/theme/Style.kt | 15 ++++++++++++--- .../ui/screens/compose/theme/TextDimension.kt | 9 +++++++++ .../crypto/ui/screens/compose/theme/Theme.kt | 8 -------- .../crypto/ui/screens/compose/theme/Typography.kt | 4 ++-- .../crypto/ui/screens/home/HomeFragment.kt | 2 +- 10 files changed, 30 insertions(+), 22 deletions(-) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/{composables => }/ContentCard.kt (91%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/{composables => }/TitleBar.kt (96%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/{composables => }/home/HomeScreen.kt (90%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/{composables => }/home/PortfolioCard.kt (98%) create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ContentCard.kt similarity index 91% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ContentCard.kt index 5c8449f2..29974755 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ContentCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ContentCard.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables +package co.nimblehq.compose.crypto.ui.screens.compose import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.RoundedCornerShape diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/TitleBar.kt similarity index 96% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/TitleBar.kt index 71176d13..f22c50af 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/TitleBar.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/TitleBar.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables +package co.nimblehq.compose.crypto.ui.screens.compose import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt similarity index 90% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt index 4229af6f..b1dac4dc 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables.home +package co.nimblehq.compose.crypto.ui.screens.compose.home import androidx.compose.foundation.layout.* import androidx.compose.material.* @@ -14,7 +14,7 @@ import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp16 import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style -import co.nimblehq.compose.crypto.ui.screens.compose.theme.titleHome +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style.titleHome @ExperimentalMaterialApi @Composable @@ -29,12 +29,11 @@ fun HomeScreen() { Text( modifier = Modifier - .padding(Dp16) + .padding(start = Dp16, top = Dp16, end = Dp16) .constrainAs(title) { top.linkTo(parent.top) linkTo(start = parent.start, end = parent.end) width = Dimension.preferredWrapContent - }, text = stringResource(id = R.string.home_title), textAlign = TextAlign.Center, diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt similarity index 98% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt index 7b75a6a1..3d6afe06 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables.home +package co.nimblehq.compose.crypto.ui.screens.compose.home import androidx.compose.foundation.background import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt index 7713f319..dcfb9278 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt @@ -6,7 +6,6 @@ import androidx.compose.ui.unit.dp object Dimension { val Dp0 = 0.dp val Dp4 = 4.dp - val Dp6 = 6.dp val Dp8 = 8.dp val Dp12 = 12.dp val Dp16 = 16.dp diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt index d29ed9ab..3c378a76 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt @@ -1,21 +1,30 @@ package co.nimblehq.compose.crypto.ui.screens.compose.theme -import androidx.compose.material.MaterialTheme +import androidx.compose.material.Colors +import androidx.compose.ui.graphics.Color import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color.Companion.White +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.DarkJungleGreen import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.LightSilver +import co.nimblehq.compose.crypto.ui.screens.compose.theme.TextDimension.Sp16 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.TextDimension.Sp24 object Style { + val Colors.titleHome: Color + @Composable + get() = if (isLight) DarkJungleGreen else White + @Composable - fun medium16() = MaterialTheme.typography.body1.copy(fontWeight = FontWeight.Medium) + fun medium16() = TextStyle(fontWeight = FontWeight.Medium, fontSize = Sp16) @Composable fun lightSilverMedium16() = medium16().copy(color = LightSilver) @Composable - fun semiBold24() = MaterialTheme.typography.h5.copy(fontWeight = FontWeight.SemiBold) + fun semiBold24() = TextStyle(fontWeight = FontWeight.SemiBold, fontSize = Sp24) @Composable fun whiteSemiBold24() = semiBold24().copy(color = White) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt new file mode 100644 index 00000000..e5c779bf --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt @@ -0,0 +1,9 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.ui.unit.sp + +@Suppress("MagicNumber") +object TextDimension { + val Sp16 = 16.sp + val Sp24 = 24.sp +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt index 3639d220..0a651a1a 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt @@ -1,16 +1,12 @@ package co.nimblehq.compose.crypto.ui.screens.compose.theme import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.Colors import androidx.compose.material.MaterialTheme import androidx.compose.material.darkColors import androidx.compose.material.lightColors import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.AlmostWhite import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.BlueFreeSpeech -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.DarkJungleGreen -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.White object Palette { val ComposeLightPalette = lightColors( @@ -21,10 +17,6 @@ object Palette { val ComposeDarkPalette = darkColors() } -val Colors.titleHome: Color - @Composable - get() = if (isLight) DarkJungleGreen else White - @Composable fun ComposeTheme( darkTheme: Boolean = isSystemInDarkTheme(), diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt index 91d58bda..aac0246e 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt @@ -7,12 +7,12 @@ import androidx.compose.ui.text.font.FontWeight import co.nimblehq.compose.crypto.R object Typography { - private val MontserratFontFamily = FontFamily( + private val InterFontFamily = FontFamily( Font(R.font.inter_medium, FontWeight.Medium), Font(R.font.inter_semi_bold, FontWeight.SemiBold) ) val ComposeTypography = Typography( - defaultFontFamily = MontserratFontFamily + defaultFontFamily = InterFontFamily ) } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt index 97d473c2..a02c7b71 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt @@ -3,7 +3,7 @@ package co.nimblehq.compose.crypto.ui.screens.home import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.runtime.Composable import co.nimblehq.compose.crypto.ui.base.BaseComposeFragment -import co.nimblehq.compose.crypto.ui.screens.compose.composables.home.HomeScreen +import co.nimblehq.compose.crypto.ui.screens.compose.home.HomeScreen import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme import dagger.hilt.android.AndroidEntryPoint From 90a711b53d195213f444091a70332c801a8448c9 Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Tue, 12 Jul 2022 14:31:25 +0700 Subject: [PATCH 12/21] [#4] Remove HomeFragment and Revert some change --- app/build.gradle.kts | 1 + .../compose/crypto/ui/screens/MainActivity.kt | 23 +++++++++++------- .../ui/screens/compose/home/HomeScreen.kt | 3 --- .../ui/screens/compose/home/PortfolioCard.kt | 6 ++--- .../crypto/ui/screens/home/HomeFragment.kt | 24 ------------------- app/src/main/res/layout/activity_main.xml | 11 +-------- .../main/res/navigation/nav_graph_main.xml | 8 ++----- buildSrc/src/main/java/Versions.kt | 1 + 8 files changed, 21 insertions(+), 56 deletions(-) delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 631fbd1c..b9f9c9e4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -129,6 +129,7 @@ dependencies { implementation("androidx.core:core-ktx:${Versions.ANDROIDX_CORE_KTX_VERSION}") implementation("androidx.lifecycle:lifecycle-runtime-ktx:${Versions.ANDROIDX_LIFECYCLE_VERSION}") + implementation("androidx.activity:activity-compose:${Versions.COMPOSE_ACTIVITY_VERSION}") implementation("androidx.constraintlayout:constraintlayout-compose:${Versions.COMPOSE_CONSTRAINT_LAYOUT_VERSION}") implementation("androidx.compose.ui:ui:${Versions.COMPOSE_VERSION}") implementation("androidx.compose.ui:ui-tooling:${Versions.COMPOSE_VERSION}") diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt index c2675055..274a4d35 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt @@ -1,16 +1,21 @@ package co.nimblehq.compose.crypto.ui.screens -import android.view.LayoutInflater -import androidx.activity.viewModels -import co.nimblehq.compose.crypto.databinding.ActivityMainBinding -import co.nimblehq.compose.crypto.ui.base.BaseActivity +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import co.nimblehq.compose.crypto.ui.screens.compose.home.HomeScreen +import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class MainActivity : BaseActivity() { +class MainActivity : ComponentActivity() { - override val bindingInflater: (LayoutInflater) -> ActivityMainBinding - get() = { inflater -> ActivityMainBinding.inflate(inflater) } - - override val viewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + ComposeTheme { + HomeScreen() + } + } + } } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt index b1dac4dc..8a4f90c7 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt @@ -16,7 +16,6 @@ import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style.titleHome -@ExperimentalMaterialApi @Composable fun HomeScreen() { Surface { @@ -50,7 +49,6 @@ fun HomeScreen() { } } -@ExperimentalMaterialApi @Composable @Preview fun HomeScreenPreview() { @@ -59,7 +57,6 @@ fun HomeScreenPreview() { } } -@ExperimentalMaterialApi @Composable @Preview fun HomeScreenPreviewDark() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt index 3d6afe06..34b723f9 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt @@ -27,7 +27,6 @@ import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp8 import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style -@ExperimentalMaterialApi @Composable fun PortfolioCard( modifier: Modifier @@ -47,7 +46,7 @@ fun PortfolioCard( totalCoins, todayProfitLabel, todayProfit, - profitPercent, + profitPercent ) = createRefs() Text( @@ -105,7 +104,7 @@ fun PortfolioCard( contentColor = Color.GuppieGreen ), shape = RoundedCornerShape(Dp20), - onClick = { /* TODO */ }, + onClick = { /* TODO */ } ) { Icon( imageVector = Icons.Filled.KeyboardArrowUp, @@ -121,7 +120,6 @@ fun PortfolioCard( } } -@ExperimentalMaterialApi @Composable @Preview fun PortfolioCardPreview() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt deleted file mode 100644 index a02c7b71..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt +++ /dev/null @@ -1,24 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.home - -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.runtime.Composable -import co.nimblehq.compose.crypto.ui.base.BaseComposeFragment -import co.nimblehq.compose.crypto.ui.screens.compose.home.HomeScreen -import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme -import dagger.hilt.android.AndroidEntryPoint - -@AndroidEntryPoint -@ExperimentalMaterialApi -class HomeFragment: BaseComposeFragment() { - - override val composeScreen: @Composable () -> Unit - get() = { - ComposeTheme { - HomeScreen() - } - } - - override fun bindViewModel() { - // TODO("Not yet implemented") - } -} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f197b5ee..1856a039 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,16 +1,7 @@ - - diff --git a/app/src/main/res/navigation/nav_graph_main.xml b/app/src/main/res/navigation/nav_graph_main.xml index e7a08259..7fea3d84 100644 --- a/app/src/main/res/navigation/nav_graph_main.xml +++ b/app/src/main/res/navigation/nav_graph_main.xml @@ -1,11 +1,7 @@ + android:id="@+id/main_nav_graph"> - + diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index 4a396e28..0c8e556f 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -19,6 +19,7 @@ object Versions { const val ANDROIDX_SUPPORT_VERSION = "1.3.0" const val COMPOSE_VERSION = "1.0.2" + const val COMPOSE_ACTIVITY_VERSION = "1.3.1" const val COMPOSE_CONSTRAINT_LAYOUT_VERSION = "1.0.1" const val CONSTRAINT_LAYOUT_VERSION = "2.0.0-alpha3" From b7510effb5e18d71f382629bc23e838fcd9e6b50 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Thu, 14 Jul 2022 10:32:17 +0700 Subject: [PATCH 13/21] [#2] Update app id --- app/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4e3e1004..62918e49 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -33,7 +33,7 @@ android { compileSdk = Versions.ANDROID_COMPILE_SDK_VERSION defaultConfig { - applicationId = "co.nimblehq.coroutine" + applicationId = "co.nimblehq.compose.crypto" minSdk = Versions.ANDROID_MIN_SDK_VERSION targetSdk = Versions.ANDROID_TARGET_SDK_VERSION versionCode = Versions.ANDROID_VERSION_CODE From b1040ceb8a6312c4b83cfadd113118c6400d7807 Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Fri, 15 Jul 2022 09:05:32 +0700 Subject: [PATCH 14/21] [#4] Apply code from review part 2 --- .../compose/crypto/ui/screens/MainActivity.kt | 5 +++-- .../crypto/ui/screens/MainViewModel.kt | 1 + .../screens/{compose => }/home/HomeScreen.kt | 12 +++++----- .../{compose => }/home/PortfolioCard.kt | 22 +++++++++---------- .../{compose => to_be_removed}/ContentCard.kt | 4 ++-- .../{compose => to_be_removed}/TitleBar.kt | 4 ++-- .../ui/{screens/compose => }/theme/Color.kt | 2 +- .../{screens/compose => }/theme/Dimension.kt | 2 +- .../ui/{screens/compose => }/theme/Shape.kt | 2 +- .../ui/{screens/compose => }/theme/Style.kt | 10 ++++----- .../compose => }/theme/TextDimension.kt | 2 +- .../ui/{screens/compose => }/theme/Theme.kt | 6 ++--- .../{screens/compose => }/theme/Typography.kt | 2 +- buildSrc/.gitignore | 1 + 14 files changed, 39 insertions(+), 36 deletions(-) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/{compose => }/home/HomeScreen.kt (80%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/{compose => }/home/PortfolioCard.kt (83%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/{compose => to_be_removed}/ContentCard.kt (83%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/screens/{compose => to_be_removed}/TitleBar.kt (93%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/Color.kt (87%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/Dimension.kt (81%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/Shape.kt (77%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/Style.kt (67%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/TextDimension.kt (68%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/Theme.kt (79%) rename app/src/main/java/co/nimblehq/compose/crypto/ui/{screens/compose => }/theme/Typography.kt (89%) create mode 100644 buildSrc/.gitignore diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt index 274a4d35..297a1e62 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainActivity.kt @@ -3,10 +3,11 @@ package co.nimblehq.compose.crypto.ui.screens import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import co.nimblehq.compose.crypto.ui.screens.compose.home.HomeScreen -import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.screens.home.HomeScreen +import co.nimblehq.compose.crypto.ui.theme.ComposeTheme import dagger.hilt.android.AndroidEntryPoint +// TODO: Consider update BaseActivity to extends ComponentActivity. @AndroidEntryPoint class MainActivity : ComponentActivity() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt index 9e8aa980..6962d1ef 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainViewModel.kt @@ -5,5 +5,6 @@ import co.nimblehq.compose.crypto.util.DispatchersProvider import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject +// TODO: Consider to update or remove it on Integrate task. @HiltViewModel class MainViewModel @Inject constructor(dispatchers: DispatchersProvider) : BaseViewModel(dispatchers) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt similarity index 80% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt index 8a4f90c7..84b21a33 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/HomeScreen.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.home +package co.nimblehq.compose.crypto.ui.screens.home import androidx.compose.foundation.layout.* import androidx.compose.material.* @@ -10,11 +10,11 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.constraintlayout.compose.ConstraintLayout import androidx.constraintlayout.compose.Dimension import co.nimblehq.compose.crypto.R -import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp16 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style.titleHome +import co.nimblehq.compose.crypto.ui.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp16 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp40 +import co.nimblehq.compose.crypto.ui.theme.Style +import co.nimblehq.compose.crypto.ui.theme.Style.titleHome @Composable fun HomeScreen() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt similarity index 83% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt index 34b723f9..21a7c820 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/home/PortfolioCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.home +package co.nimblehq.compose.crypto.ui.screens.home import androidx.compose.foundation.background import androidx.compose.foundation.layout.fillMaxWidth @@ -16,16 +16,16 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.constraintlayout.compose.ConstraintLayout import co.nimblehq.compose.crypto.R -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color -import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp0 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp12 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp16 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp20 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp4 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp8 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style +import co.nimblehq.compose.crypto.ui.theme.Color +import co.nimblehq.compose.crypto.ui.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp0 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp12 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp16 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp20 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp4 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp40 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp8 +import co.nimblehq.compose.crypto.ui.theme.Style @Composable fun PortfolioCard( diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ContentCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/ContentCard.kt similarity index 83% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ContentCard.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/ContentCard.kt index 29974755..9c0b7b09 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ContentCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/ContentCard.kt @@ -1,11 +1,11 @@ -package co.nimblehq.compose.crypto.ui.screens.compose +package co.nimblehq.compose.crypto.ui.screens.to_be_removed import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Card import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension +import co.nimblehq.compose.crypto.ui.theme.Dimension @Composable fun ContentCard( diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/TitleBar.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt similarity index 93% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/TitleBar.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt index f22c50af..d1f40dbd 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/TitleBar.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose +package co.nimblehq.compose.crypto.ui.screens.to_be_removed import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -14,7 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension +import co.nimblehq.compose.crypto.ui.theme.Dimension @Suppress("LongMethod") @ExperimentalComposeUiApi diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt similarity index 87% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt index c731c0d8..788842ac 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt similarity index 81% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt index dcfb9278..76f54952 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Shape.kt similarity index 77% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Shape.kt index 26b5709c..09bebf0e 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Shape.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Shape.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Shapes diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt similarity index 67% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt index 3c378a76..036cdb67 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.material.Colors import androidx.compose.ui.graphics.Color @@ -6,10 +6,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color.Companion.White import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.DarkJungleGreen -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.LightSilver -import co.nimblehq.compose.crypto.ui.screens.compose.theme.TextDimension.Sp16 -import co.nimblehq.compose.crypto.ui.screens.compose.theme.TextDimension.Sp24 +import co.nimblehq.compose.crypto.ui.theme.Color.DarkJungleGreen +import co.nimblehq.compose.crypto.ui.theme.Color.LightSilver +import co.nimblehq.compose.crypto.ui.theme.TextDimension.Sp16 +import co.nimblehq.compose.crypto.ui.theme.TextDimension.Sp24 object Style { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt similarity index 68% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt index e5c779bf..6a574b74 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/TextDimension.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.ui.unit.sp diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt similarity index 79% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt index 0a651a1a..07bb69ad 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt @@ -1,12 +1,12 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material.MaterialTheme import androidx.compose.material.darkColors import androidx.compose.material.lightColors import androidx.compose.runtime.Composable -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.AlmostWhite -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.BlueFreeSpeech +import co.nimblehq.compose.crypto.ui.theme.Color.AlmostWhite +import co.nimblehq.compose.crypto.ui.theme.Color.BlueFreeSpeech object Palette { val ComposeLightPalette = lightColors( diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt similarity index 89% rename from app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt rename to app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt index aac0246e..ad7515b9 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt @@ -1,4 +1,4 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.theme +package co.nimblehq.compose.crypto.ui.theme import androidx.compose.material.Typography import androidx.compose.ui.text.font.Font diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/buildSrc/.gitignore @@ -0,0 +1 @@ +/build From 90b3d3868f240f2c4d4fd7eea1cdc2d9b5b12070 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Sun, 24 Jul 2022 22:33:09 +0700 Subject: [PATCH 15/21] [#2] Add Firebase App Distribution config --- .../deploy_to_firebase_app_distribution.yml | 15 ++-- .github/workflows/review_pull_request.yml | 5 +- app/build.gradle.kts | 4 ++ app/google-services.json | 68 +++++++++++++++++++ build.gradle.kts | 1 + buildSrc/src/main/java/Versions.kt | 4 ++ 6 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 app/google-services.json diff --git a/.github/workflows/deploy_to_firebase_app_distribution.yml b/.github/workflows/deploy_to_firebase_app_distribution.yml index d65caa92..afbafc54 100644 --- a/.github/workflows/deploy_to_firebase_app_distribution.yml +++ b/.github/workflows/deploy_to_firebase_app_distribution.yml @@ -1,15 +1,15 @@ -name: Deploy staging and production to Firebase App Distribution +name: Deploy staging to Firebase App Distribution on: - # Trigger the workflow on push action in main branch. - # So it will trigger when the PR of the release branch was merged. + # Trigger the workflow on push action in develop branch. + # So it will trigger when the PR of the feature/chore/bugfix branch was merged. push: branches: - - main + - develop jobs: - deploy_staging_and_production_to_firebase_app_distribution: - name: Deploy staging and production to Firebase App Distribution + deploy_staging_to_firebase_app_distribution: + name: Deploy staging to Firebase App Distribution runs-on: ubuntu-latest timeout-minutes: 30 steps: @@ -36,6 +36,7 @@ jobs: key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} restore-keys: | ${{ runner.os }}-gradle- + - name: Run Detekt run: ./gradlew detekt @@ -65,4 +66,4 @@ jobs: appId: ${{secrets.FIREBASE_APP_ID_STAGING}} token: ${{secrets.FIREBASE_TOKEN}} groups: testers - file: app/build/outputs/apk/staging/debug/app-debug.apk \ No newline at end of file + file: app/build/outputs/apk/staging/debug/app-debug.apk diff --git a/.github/workflows/review_pull_request.yml b/.github/workflows/review_pull_request.yml index e7c534dc..2d264165 100644 --- a/.github/workflows/review_pull_request.yml +++ b/.github/workflows/review_pull_request.yml @@ -28,6 +28,7 @@ jobs: key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} restore-keys: | ${{ runner.os }}-gradle- + - name: Run Detekt run: ./gradlew detekt @@ -49,6 +50,7 @@ jobs: key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gems- + - name: Install Bundle and check environment versions run: | echo 'Install Bundle' @@ -58,7 +60,8 @@ jobs: ruby --version gem --version bundler --version + - name: Run Danger env: DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: bundle exec danger \ No newline at end of file + run: bundle exec danger diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 62918e49..a5ae7393 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id("com.android.application") + id("com.google.gms.google-services") id("kotlin-android") id("kotlin-kapt") @@ -140,6 +141,9 @@ dependencies { implementation("com.google.dagger:hilt-android:${Versions.HILT_VERSION}") + implementation("com.google.firebase:firebase-bom:${Versions.FIREBASE_BOM_VERSION}") + + implementation("com.jakewharton.timber:timber:${Versions.TIMBER_LOG_VERSION}") implementation("com.github.nimblehq:android-common-ktx:${Versions.ANDROID_COMMON_KTX_VERSION}") diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 00000000..e5b19e13 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,68 @@ +{ + "project_info": { + "project_number": "815978434764", + "project_id": "jetpack-compose-crypto", + "storage_bucket": "jetpack-compose-crypto.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:815978434764:android:2c81917e30236ed4fc7269", + "android_client_info": { + "package_name": "co.nimblehq.compose.crypto" + } + }, + "oauth_client": [ + { + "client_id": "815978434764-h4p3pe9e9198t33ghiv2ptp99b0nqko5.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBPYTu8leHXVj8iqmnrSyMllEm0Ckbp8t4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "815978434764-h4p3pe9e9198t33ghiv2ptp99b0nqko5.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:815978434764:android:fabffa0f76e72b60fc7269", + "android_client_info": { + "package_name": "co.nimblehq.compose.crypto.staging" + } + }, + "oauth_client": [ + { + "client_id": "815978434764-h4p3pe9e9198t33ghiv2ptp99b0nqko5.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBPYTu8leHXVj8iqmnrSyMllEm0Ckbp8t4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "815978434764-h4p3pe9e9198t33ghiv2ptp99b0nqko5.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index a7cb0caa..2f227aad 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,6 +10,7 @@ buildscript { classpath("com.android.tools.build:gradle:${Versions.BUILD_GRADLE_VERSION}") classpath("com.google.dagger:hilt-android-gradle-plugin:${Versions.HILT_VERSION}") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.KOTLIN_VERSION}") + classpath("com.google.gms:google-services:${Versions.GOOGLE_SERVICE_VERSION}") } } diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index 50a27c8d..537b127b 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -21,6 +21,10 @@ object Versions { const val COMPOSE_VERSION = "1.0.2" const val CONSTRAINT_LAYOUT_VERSION = "2.0.0-alpha3" + const val FIREBASE_BOM_VERSION = "30.3.0" + + const val GOOGLE_SERVICE_VERSION = "4.3.13" + const val HILT_VERSION = "2.38.1" const val JAVAX_INJECT_VERSION = "1" From 627257c5194b55fd6111271caeec9715e5bcd076 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Mon, 25 Jul 2022 22:57:59 +0700 Subject: [PATCH 16/21] [#2] Update build apk name to publish to FAD --- .github/workflows/deploy_to_firebase_app_distribution.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_to_firebase_app_distribution.yml b/.github/workflows/deploy_to_firebase_app_distribution.yml index afbafc54..3db1aaee 100644 --- a/.github/workflows/deploy_to_firebase_app_distribution.yml +++ b/.github/workflows/deploy_to_firebase_app_distribution.yml @@ -66,4 +66,4 @@ jobs: appId: ${{secrets.FIREBASE_APP_ID_STAGING}} token: ${{secrets.FIREBASE_TOKEN}} groups: testers - file: app/build/outputs/apk/staging/debug/app-debug.apk + file: app/build/outputs/apk/staging/debug/app-staging-debug.apk From 86c994e09e35998b5d00571f1715d5f1dd89c3d0 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Mon, 25 Jul 2022 23:13:17 +0700 Subject: [PATCH 17/21] [#2] Add google-services.json for different build variants --- app/{ => src/production}/google-services.json | 4 +- app/src/staging/google-services.json | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) rename app/{ => src/production}/google-services.json (91%) create mode 100644 app/src/staging/google-services.json diff --git a/app/google-services.json b/app/src/production/google-services.json similarity index 91% rename from app/google-services.json rename to app/src/production/google-services.json index e5b19e13..e8e97124 100644 --- a/app/google-services.json +++ b/app/src/production/google-services.json @@ -7,7 +7,7 @@ "client": [ { "client_info": { - "mobilesdk_app_id": "1:815978434764:android:2c81917e30236ed4fc7269", + "mobilesdk_app_id": "1:815978434764:android:c2d6ee0f2a14357ffc7269", "android_client_info": { "package_name": "co.nimblehq.compose.crypto" } @@ -36,7 +36,7 @@ }, { "client_info": { - "mobilesdk_app_id": "1:815978434764:android:fabffa0f76e72b60fc7269", + "mobilesdk_app_id": "1:815978434764:android:b009466b8c08fa18fc7269", "android_client_info": { "package_name": "co.nimblehq.compose.crypto.staging" } diff --git a/app/src/staging/google-services.json b/app/src/staging/google-services.json new file mode 100644 index 00000000..1fa69d0c --- /dev/null +++ b/app/src/staging/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "815978434764", + "project_id": "jetpack-compose-crypto", + "storage_bucket": "jetpack-compose-crypto.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:815978434764:android:b009466b8c08fa18fc7269", + "android_client_info": { + "package_name": "co.nimblehq.compose.crypto.staging" + } + }, + "oauth_client": [ + { + "client_id": "815978434764-h4p3pe9e9198t33ghiv2ptp99b0nqko5.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBPYTu8leHXVj8iqmnrSyMllEm0Ckbp8t4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "815978434764-h4p3pe9e9198t33ghiv2ptp99b0nqko5.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} From 67be93883a653d7c69c6d0cf71ca65f3fbf7d6fe Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Tue, 26 Jul 2022 12:02:01 +0700 Subject: [PATCH 18/21] [#2] Update tester group --- .github/workflows/deploy_to_firebase_app_distribution.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_to_firebase_app_distribution.yml b/.github/workflows/deploy_to_firebase_app_distribution.yml index 3db1aaee..c514340f 100644 --- a/.github/workflows/deploy_to_firebase_app_distribution.yml +++ b/.github/workflows/deploy_to_firebase_app_distribution.yml @@ -65,5 +65,5 @@ jobs: with: appId: ${{secrets.FIREBASE_APP_ID_STAGING}} token: ${{secrets.FIREBASE_TOKEN}} - groups: testers + groups: Dev file: app/build/outputs/apk/staging/debug/app-staging-debug.apk From 57871ed9b36217aeb62ab968d1706f9e97383600 Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Tue, 26 Jul 2022 20:11:57 +0700 Subject: [PATCH 19/21] [#5] Implement UI My coins list on home page --- .../crypto/ui/screens/home/CoinItem.kt | 154 ++++++++++++++++++ .../crypto/ui/screens/home/HomeScreen.kt | 51 +++++- .../crypto/ui/screens/home/PortfolioCard.kt | 6 +- .../compose/crypto/ui/screens/home/SeeAll.kt | 51 ++++++ .../nimblehq/compose/crypto/ui/theme/Color.kt | 6 +- .../compose/crypto/ui/theme/Dimension.kt | 4 + .../nimblehq/compose/crypto/ui/theme/Style.kt | 45 ++++- .../compose/crypto/ui/theme/TextDimension.kt | 1 + .../nimblehq/compose/crypto/ui/theme/Theme.kt | 10 +- .../compose/crypto/ui/theme/Typography.kt | 18 -- app/src/main/res/drawable/ic_btc_bitcoin.png | Bin 0 -> 5522 bytes app/src/main/res/values/strings.xml | 8 +- 12 files changed, 319 insertions(+), 35 deletions(-) create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt create mode 100644 app/src/main/res/drawable/ic_btc_bitcoin.png diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt new file mode 100644 index 00000000..303cb713 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt @@ -0,0 +1,154 @@ +package co.nimblehq.compose.crypto.ui.screens.home + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Icon +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.KeyboardArrowDown +import androidx.compose.material.icons.filled.KeyboardArrowUp +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.constraintlayout.compose.Dimension +import androidx.compose.ui.tooling.preview.Preview +import androidx.constraintlayout.compose.ConstraintLayout +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.ui.theme.Color.FireOpal +import co.nimblehq.compose.crypto.ui.theme.Color.GuppieGreen +import co.nimblehq.compose.crypto.ui.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp12 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp16 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp22 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp25 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp4 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp60 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp8 +import co.nimblehq.compose.crypto.ui.theme.Style +import co.nimblehq.compose.crypto.ui.theme.Style.coinItemColor +import co.nimblehq.compose.crypto.ui.theme.Style.coinNameColor +import co.nimblehq.compose.crypto.ui.theme.Style.textColor + +@Composable +fun CoinItem( + isPositiveNumber: Boolean = false /* TODO Update value to Object on Integrate ticket */ +) { + ConstraintLayout( + modifier = Modifier + .wrapContentWidth() + .clip(RoundedCornerShape(Dp12)) + .background(color = MaterialTheme.colors.coinItemColor) + ) { + val ( + logo, + coinSymbol, + coinName, + price, + icon, + priceChange + ) = createRefs() + + Image( + modifier = Modifier + .size(Dp60) + .padding(start = Dp8, end = Dp16, top = Dp8) + .constrainAs(logo) { + top.linkTo(coinSymbol.top) + bottom.linkTo(coinName.bottom) + start.linkTo(parent.start) + }, + // TODO: Remove dummy image when work on Integrate. + painter = painterResource(id = R.drawable.ic_btc_bitcoin), + contentDescription = null + ) + + Text( + modifier = Modifier + .padding(end = Dp8, top = Dp8) + .constrainAs(coinSymbol) { + top.linkTo(parent.top) + start.linkTo(logo.end) + }, + // TODO: Remove dummy value when work on Integrate. + text = "BTC", + color = MaterialTheme.colors.textColor, + style = Style.semiBold16() + ) + + Text( + modifier = Modifier + .padding(end = Dp8, top = Dp4) + .constrainAs(coinName) { + start.linkTo(coinSymbol.start) + top.linkTo(coinSymbol.bottom) + width = Dimension.preferredWrapContent + }, + // TODO: Remove dummy value when work on Integrate. + text = "Bitcoin", + color = MaterialTheme.colors.coinNameColor, + style = Style.medium14() + ) + + Text( + modifier = Modifier + .padding(start = Dp8, end = Dp8, top = Dp22, bottom = Dp8) + .constrainAs(price) { + start.linkTo(logo.start) + top.linkTo(coinName.bottom) + width = Dimension.preferredWrapContent + }, + // TODO: Remove dummy value when work on Integrate. + text = stringResource(R.string.coin_currency, "24,209"), + color = MaterialTheme.colors.textColor, + style = Style.semiBold16() + ) + + Icon( + modifier = Modifier + .padding(start = Dp25, bottom = Dp8) + .constrainAs(icon) { + start.linkTo(price.end) + top.linkTo(priceChange.top) + bottom.linkTo(priceChange.bottom) + width = Dimension.preferredWrapContent + }, + imageVector = if (isPositiveNumber) Icons.Filled.KeyboardArrowUp else Icons.Filled.KeyboardArrowDown, + tint = if (isPositiveNumber) GuppieGreen else FireOpal, + contentDescription = null + ) + + Text( + modifier = Modifier + .padding(start = Dp8, end = Dp8, bottom = Dp8) + .constrainAs(priceChange) { + start.linkTo(icon.end) + bottom.linkTo(parent.bottom) + width = Dimension.preferredWrapContent + }, + // TODO: Remove dummy value when work on Integrate. + text = stringResource(R.string.coin_profit_percent, "6.21"), + style = if (isPositiveNumber) Style.guppieGreenMedium16() else Style.fireOpalGreenMedium16() + ) + } +} + +@Composable +@Preview +fun CoinItemPreview() { + ComposeTheme { + CoinItem() + } +} + +@Composable +@Preview +fun CoinItemPreviewDark() { + ComposeTheme(darkTheme = true) { + CoinItem() + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt index 84b21a33..49b9add7 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt @@ -1,6 +1,8 @@ package co.nimblehq.compose.crypto.ui.screens.home +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyRow import androidx.compose.material.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -13,8 +15,9 @@ import co.nimblehq.compose.crypto.R import co.nimblehq.compose.crypto.ui.theme.ComposeTheme import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp16 import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp40 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp52 import co.nimblehq.compose.crypto.ui.theme.Style -import co.nimblehq.compose.crypto.ui.theme.Style.titleHome +import co.nimblehq.compose.crypto.ui.theme.Style.textColor @Composable fun HomeScreen() { @@ -24,7 +27,13 @@ fun HomeScreen() { .fillMaxSize() .padding(horizontal = Dp16) ) { - val (title, portfolioCard) = createRefs() + val ( + title, + portfolioCard, + myCoinsTitle, + seeAll, + myCoins + ) = createRefs() Text( modifier = Modifier @@ -37,7 +46,7 @@ fun HomeScreen() { text = stringResource(id = R.string.home_title), textAlign = TextAlign.Center, style = Style.semiBold24(), - color = MaterialTheme.colors.titleHome + color = MaterialTheme.colors.textColor ) PortfolioCard( @@ -45,6 +54,42 @@ fun HomeScreen() { top.linkTo(title.bottom, margin = Dp40) } ) + + Text( + modifier = Modifier.constrainAs(myCoinsTitle) { + top.linkTo(portfolioCard.bottom, margin = Dp52) + start.linkTo(parent.start) + width = Dimension.preferredWrapContent + + }, + text = stringResource(id = R.string.home_my_coins_title), + style = Style.medium16(), + color = MaterialTheme.colors.textColor + ) + + SeeAll( + modifier = Modifier + .clickable(onClick = { /* TODO: Update on Integrate ticket */ }) + .constrainAs(seeAll) { + top.linkTo(myCoinsTitle.top) + end.linkTo(parent.end) + width = Dimension.preferredWrapContent + } + ) + + LazyRow( + modifier = Modifier + .fillMaxWidth() + .constrainAs(myCoins) { + top.linkTo(myCoinsTitle.bottom, margin = Dp16) + }, + horizontalArrangement = Arrangement.spacedBy(Dp16) + ) { + // TODO: Remove dummy value when work on Integrate. + item { CoinItem() } + item { CoinItem(true) } + item { CoinItem() } + } } } } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt index 21a7c820..f4728de4 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt @@ -66,7 +66,7 @@ fun PortfolioCard( top.linkTo(totalCoinsLabel.bottom, margin = Dp8) }, // TODO: Remove dummy value when work on Integrate. - text = stringResource(R.string.portfolio_card_total_coin, "7,273,291"), + text = stringResource(R.string.coin_currency, "7,273,291"), style = Style.whiteSemiBold24() ) @@ -87,7 +87,7 @@ fun PortfolioCard( top.linkTo(todayProfitLabel.bottom, margin = Dp8) }, // TODO: Remove dummy value when work on Integrate. - text = stringResource(R.string.portfolio_card_today_profit, "193,280"), + text = stringResource(R.string.coin_currency, "193,280"), style = Style.whiteSemiBold24() ) @@ -113,7 +113,7 @@ fun PortfolioCard( ) Text( // TODO: Remove dummy value when work on Integrate. - text = stringResource(R.string.portfolio_card_profit_percent, 2.41), + text = stringResource(R.string.coin_profit_percent, "2.41"), style = Style.medium16() ) } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt new file mode 100644 index 00000000..fee8bae3 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt @@ -0,0 +1,51 @@ +package co.nimblehq.compose.crypto.ui.screens.home + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material.Icon +import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowForward +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.ui.theme.Color +import co.nimblehq.compose.crypto.ui.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp14 +import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp8 +import co.nimblehq.compose.crypto.ui.theme.Style + +@Composable +fun SeeAll( + modifier: Modifier +) { + Row(modifier = modifier) { + Text( + modifier = Modifier.padding(end = Dp8), + text = stringResource(id = R.string.home_my_coins_see_all), + style = Style.tiffanyBlueMedium14() + ) + Icon( + modifier = Modifier + .size(Dp14) + .align(Alignment.CenterVertically), + imageVector = Icons.Filled.ArrowForward, + tint = Color.TiffanyBlue, + contentDescription = null + ) + } +} + +@Composable +@Preview +fun SeeAllPreview() { + ComposeTheme { + SeeAll( + modifier = Modifier + ) + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt index 788842ac..ade2ea6b 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Color.kt @@ -5,7 +5,6 @@ import androidx.compose.ui.graphics.Color @Suppress("MagicNumber") object Color { val BlueFreeSpeech = Color(0xFF3F51B5) - val AlmostWhite = Color(0xFFDFE4EA) val White = Color.White val MetallicSeaweed = Color(0xFF028090) val TiffanyBlue = Color(0xFF00BFB2) @@ -13,4 +12,9 @@ object Color { val GuppieGreen = Color(0xFF10DC78) val DarkJungleGreen = Color(0xFF141B29) val LightSilver = Color(0xFFD6D7D8) + val Quartz = Color(0xFF484D58) + val QuartzAlpha20 = Quartz.copy(alpha = 0.2f) + val Cultured = Color(0xFFEEEEEE) + val FireOpal = Color(0xFFF15950) + val SonicSilver = Color(0xFF70747C) } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt index 76f54952..abf7cc37 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Dimension.kt @@ -8,9 +8,13 @@ object Dimension { val Dp4 = 4.dp val Dp8 = 8.dp val Dp12 = 12.dp + val Dp14 = 14.dp val Dp16 = 16.dp val Dp20 = 20.dp + val Dp22 = 22.dp val Dp24 = 24.dp + val Dp25 = 25.dp val Dp40 = 40.dp val Dp52 = 52.dp + val Dp60 = 60.dp } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt index 036cdb67..acb3799d 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Style.kt @@ -5,26 +5,65 @@ import androidx.compose.ui.graphics.Color import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color.Companion.White import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight +import co.nimblehq.compose.crypto.R import co.nimblehq.compose.crypto.ui.theme.Color.DarkJungleGreen +import co.nimblehq.compose.crypto.ui.theme.Color.FireOpal +import co.nimblehq.compose.crypto.ui.theme.Color.GuppieGreen import co.nimblehq.compose.crypto.ui.theme.Color.LightSilver +import co.nimblehq.compose.crypto.ui.theme.Color.QuartzAlpha20 +import co.nimblehq.compose.crypto.ui.theme.Color.SonicSilver +import co.nimblehq.compose.crypto.ui.theme.Color.TiffanyBlue +import co.nimblehq.compose.crypto.ui.theme.TextDimension.Sp14 import co.nimblehq.compose.crypto.ui.theme.TextDimension.Sp16 import co.nimblehq.compose.crypto.ui.theme.TextDimension.Sp24 object Style { - val Colors.titleHome: Color + private val textStyle = TextStyle( + fontFamily = FontFamily( + Font(R.font.inter_medium, FontWeight.Medium), + Font(R.font.inter_semi_bold, FontWeight.SemiBold) + ) + ) + + val Colors.textColor: Color @Composable get() = if (isLight) DarkJungleGreen else White + val Colors.coinItemColor: Color + @Composable + get() = if (isLight) White else QuartzAlpha20 + + val Colors.coinNameColor: Color + @Composable + get() = if (isLight) SonicSilver else LightSilver + + @Composable + fun medium14() = textStyle.copy(fontWeight = FontWeight.Medium, fontSize = Sp14) + @Composable - fun medium16() = TextStyle(fontWeight = FontWeight.Medium, fontSize = Sp16) + fun tiffanyBlueMedium14() = medium14().copy(color = TiffanyBlue) + + @Composable + fun medium16() = textStyle.copy(fontWeight = FontWeight.Medium, fontSize = Sp16) @Composable fun lightSilverMedium16() = medium16().copy(color = LightSilver) @Composable - fun semiBold24() = TextStyle(fontWeight = FontWeight.SemiBold, fontSize = Sp24) + fun guppieGreenMedium16() = medium16().copy(color = GuppieGreen) + + @Composable + fun fireOpalGreenMedium16() = medium16().copy(color = FireOpal) + + @Composable + fun semiBold16() = textStyle.copy(fontWeight = FontWeight.SemiBold, fontSize = Sp16) + + @Composable + fun semiBold24() = textStyle.copy(fontWeight = FontWeight.SemiBold, fontSize = Sp24) @Composable fun whiteSemiBold24() = semiBold24().copy(color = White) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt index 6a574b74..abec2d59 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/TextDimension.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.unit.sp @Suppress("MagicNumber") object TextDimension { + val Sp14 = 14.sp val Sp16 = 16.sp val Sp24 = 24.sp } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt index 07bb69ad..6e8779d0 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt @@ -5,16 +5,19 @@ import androidx.compose.material.MaterialTheme import androidx.compose.material.darkColors import androidx.compose.material.lightColors import androidx.compose.runtime.Composable -import co.nimblehq.compose.crypto.ui.theme.Color.AlmostWhite +import co.nimblehq.compose.crypto.ui.theme.Color.Cultured import co.nimblehq.compose.crypto.ui.theme.Color.BlueFreeSpeech +import co.nimblehq.compose.crypto.ui.theme.Color.DarkJungleGreen object Palette { val ComposeLightPalette = lightColors( primary = BlueFreeSpeech, - background = AlmostWhite + surface = Cultured ) - val ComposeDarkPalette = darkColors() + val ComposeDarkPalette = darkColors( + surface = DarkJungleGreen + ) } @Composable @@ -30,7 +33,6 @@ fun ComposeTheme( MaterialTheme( colors = colors, - typography = Typography.ComposeTypography, shapes = Shape.ComposeShapes, content = content ) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt deleted file mode 100644 index ad7515b9..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Typography.kt +++ /dev/null @@ -1,18 +0,0 @@ -package co.nimblehq.compose.crypto.ui.theme - -import androidx.compose.material.Typography -import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight -import co.nimblehq.compose.crypto.R - -object Typography { - private val InterFontFamily = FontFamily( - Font(R.font.inter_medium, FontWeight.Medium), - Font(R.font.inter_semi_bold, FontWeight.SemiBold) - ) - - val ComposeTypography = Typography( - defaultFontFamily = InterFontFamily - ) -} diff --git a/app/src/main/res/drawable/ic_btc_bitcoin.png b/app/src/main/res/drawable/ic_btc_bitcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..3a311de92a9eff150d3fc78ca18c1c90c614f9c7 GIT binary patch literal 5522 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 error Trade Now and Get\nYour Life + My Coins 😎 + see all Total Coins - $%s Today\'s Profit - $%s - %1$s%% + + $%s + %1$s%% From 7b1bc5e55945266dab682b4489b79d838998430a Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Wed, 3 Aug 2022 09:59:23 +0700 Subject: [PATCH 20/21] [#5] Fix detext warning --- .../co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt | 3 +++ .../co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt | 3 +++ .../nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt | 2 ++ .../java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt | 2 ++ .../compose/crypto/ui/screens/to_be_removed/TitleBar.kt | 1 - app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt | 2 ++ 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt index 303cb713..2ddea52c 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt @@ -34,6 +34,7 @@ import co.nimblehq.compose.crypto.ui.theme.Style.coinItemColor import co.nimblehq.compose.crypto.ui.theme.Style.coinNameColor import co.nimblehq.compose.crypto.ui.theme.Style.textColor +@Suppress("FunctionNaming", "LongMethod") @Composable fun CoinItem( isPositiveNumber: Boolean = false /* TODO Update value to Object on Integrate ticket */ @@ -137,6 +138,7 @@ fun CoinItem( } } +@Suppress("FunctionNaming") @Composable @Preview fun CoinItemPreview() { @@ -145,6 +147,7 @@ fun CoinItemPreview() { } } +@Suppress("FunctionNaming") @Composable @Preview fun CoinItemPreviewDark() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt index 49b9add7..ae3d49f0 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt @@ -19,6 +19,7 @@ import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp52 import co.nimblehq.compose.crypto.ui.theme.Style import co.nimblehq.compose.crypto.ui.theme.Style.textColor +@Suppress("FunctionNaming", "LongMethod") @Composable fun HomeScreen() { Surface { @@ -94,6 +95,7 @@ fun HomeScreen() { } } +@Suppress("FunctionNaming") @Composable @Preview fun HomeScreenPreview() { @@ -102,6 +104,7 @@ fun HomeScreenPreview() { } } +@Suppress("FunctionNaming") @Composable @Preview fun HomeScreenPreviewDark() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt index f4728de4..2c0f9051 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt @@ -27,6 +27,7 @@ import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp40 import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp8 import co.nimblehq.compose.crypto.ui.theme.Style +@Suppress("FunctionNaming", "LongMethod") @Composable fun PortfolioCard( modifier: Modifier @@ -120,6 +121,7 @@ fun PortfolioCard( } } +@Suppress("FunctionNaming") @Composable @Preview fun PortfolioCardPreview() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt index fee8bae3..9220a716 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/SeeAll.kt @@ -19,6 +19,7 @@ import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp14 import co.nimblehq.compose.crypto.ui.theme.Dimension.Dp8 import co.nimblehq.compose.crypto.ui.theme.Style +@Suppress("FunctionNaming") @Composable fun SeeAll( modifier: Modifier @@ -40,6 +41,7 @@ fun SeeAll( } } +@Suppress("FunctionNaming") @Composable @Preview fun SeeAllPreview() { diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt index d1f40dbd..28332ef5 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/to_be_removed/TitleBar.kt @@ -16,7 +16,6 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import co.nimblehq.compose.crypto.ui.theme.Dimension -@Suppress("LongMethod") @ExperimentalComposeUiApi @Composable fun TitleBar( diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt index 6e8779d0..fdf67922 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/theme/Theme.kt @@ -9,6 +9,7 @@ import co.nimblehq.compose.crypto.ui.theme.Color.Cultured import co.nimblehq.compose.crypto.ui.theme.Color.BlueFreeSpeech import co.nimblehq.compose.crypto.ui.theme.Color.DarkJungleGreen +@Suppress("MatchingDeclarationName") object Palette { val ComposeLightPalette = lightColors( primary = BlueFreeSpeech, @@ -20,6 +21,7 @@ object Palette { ) } +@Suppress("FunctionNaming") @Composable fun ComposeTheme( darkTheme: Boolean = isSystemInDarkTheme(), From 1c2e973e07967463d8f08e9b39041cd893aa8bf8 Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Thu, 18 Aug 2022 09:00:56 +0700 Subject: [PATCH 21/21] [#5] Apply code from review --- .../crypto/ui/screens/home/CoinItem.kt | 11 +++---- .../crypto/ui/screens/home/HomeScreen.kt | 31 ++++++++++--------- .../crypto/ui/screens/home/PortfolioCard.kt | 6 +--- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt index 2ddea52c..1eba485c 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/CoinItem.kt @@ -44,6 +44,7 @@ fun CoinItem( .wrapContentWidth() .clip(RoundedCornerShape(Dp12)) .background(color = MaterialTheme.colors.coinItemColor) + .padding(horizontal = Dp8, vertical = Dp8) ) { val ( logo, @@ -57,7 +58,7 @@ fun CoinItem( Image( modifier = Modifier .size(Dp60) - .padding(start = Dp8, end = Dp16, top = Dp8) + .padding(end = Dp16) .constrainAs(logo) { top.linkTo(coinSymbol.top) bottom.linkTo(coinName.bottom) @@ -70,7 +71,6 @@ fun CoinItem( Text( modifier = Modifier - .padding(end = Dp8, top = Dp8) .constrainAs(coinSymbol) { top.linkTo(parent.top) start.linkTo(logo.end) @@ -83,7 +83,7 @@ fun CoinItem( Text( modifier = Modifier - .padding(end = Dp8, top = Dp4) + .padding(top = Dp4) .constrainAs(coinName) { start.linkTo(coinSymbol.start) top.linkTo(coinSymbol.bottom) @@ -97,7 +97,7 @@ fun CoinItem( Text( modifier = Modifier - .padding(start = Dp8, end = Dp8, top = Dp22, bottom = Dp8) + .padding(top = Dp22) .constrainAs(price) { start.linkTo(logo.start) top.linkTo(coinName.bottom) @@ -111,7 +111,7 @@ fun CoinItem( Icon( modifier = Modifier - .padding(start = Dp25, bottom = Dp8) + .padding(start = Dp25) .constrainAs(icon) { start.linkTo(price.end) top.linkTo(priceChange.top) @@ -125,7 +125,6 @@ fun CoinItem( Text( modifier = Modifier - .padding(start = Dp8, end = Dp8, bottom = Dp8) .constrainAs(priceChange) { start.linkTo(icon.end) bottom.linkTo(parent.bottom) diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt index ae3d49f0..e8b271ec 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeScreen.kt @@ -24,9 +24,7 @@ import co.nimblehq.compose.crypto.ui.theme.Style.textColor fun HomeScreen() { Surface { ConstraintLayout( - modifier = Modifier - .fillMaxSize() - .padding(horizontal = Dp16) + modifier = Modifier.fillMaxSize() ) { val ( title, @@ -38,7 +36,7 @@ fun HomeScreen() { Text( modifier = Modifier - .padding(start = Dp16, top = Dp16, end = Dp16) + .padding(top = Dp16) .constrainAs(title) { top.linkTo(parent.top) linkTo(start = parent.start, end = parent.end) @@ -51,18 +49,21 @@ fun HomeScreen() { ) PortfolioCard( - modifier = Modifier.constrainAs(portfolioCard) { - top.linkTo(title.bottom, margin = Dp40) - } + modifier = Modifier + .constrainAs(portfolioCard) { + top.linkTo(title.bottom, margin = Dp40) + } + .padding(horizontal = Dp16) ) Text( - modifier = Modifier.constrainAs(myCoinsTitle) { - top.linkTo(portfolioCard.bottom, margin = Dp52) - start.linkTo(parent.start) - width = Dimension.preferredWrapContent - - }, + modifier = Modifier + .constrainAs(myCoinsTitle) { + top.linkTo(portfolioCard.bottom, margin = Dp52) + start.linkTo(parent.start) + width = Dimension.preferredWrapContent + } + .padding(start = Dp16), text = stringResource(id = R.string.home_my_coins_title), style = Style.medium16(), color = MaterialTheme.colors.textColor @@ -76,6 +77,7 @@ fun HomeScreen() { end.linkTo(parent.end) width = Dimension.preferredWrapContent } + .padding(end = Dp16) ) LazyRow( @@ -84,7 +86,8 @@ fun HomeScreen() { .constrainAs(myCoins) { top.linkTo(myCoinsTitle.bottom, margin = Dp16) }, - horizontalArrangement = Arrangement.spacedBy(Dp16) + contentPadding = PaddingValues(horizontal = Dp16), + horizontalArrangement = Arrangement.spacedBy(Dp16), ) { // TODO: Remove dummy value when work on Integrate. item { CoinItem() } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt index 2c0f9051..f06d9760 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/PortfolioCard.kt @@ -41,6 +41,7 @@ fun PortfolioCard( colors = listOf(Color.MetallicSeaweed, Color.TiffanyBlue), ) ) + .padding(horizontal = Dp16, vertical = Dp16) ) { val ( totalCoinsLabel, @@ -52,7 +53,6 @@ fun PortfolioCard( Text( modifier = Modifier - .padding(top = Dp16, start = Dp16) .constrainAs(totalCoinsLabel) { start.linkTo(parent.start) }, @@ -62,7 +62,6 @@ fun PortfolioCard( Text( modifier = Modifier - .padding(horizontal = Dp16) .constrainAs(totalCoins) { top.linkTo(totalCoinsLabel.bottom, margin = Dp8) }, @@ -73,7 +72,6 @@ fun PortfolioCard( Text( modifier = Modifier - .padding(start = Dp16) .constrainAs(todayProfitLabel) { top.linkTo(totalCoins.bottom, margin = Dp40) }, @@ -83,7 +81,6 @@ fun PortfolioCard( Text( modifier = Modifier - .padding(start = Dp16, bottom = Dp16) .constrainAs(todayProfit) { top.linkTo(todayProfitLabel.bottom, margin = Dp8) }, @@ -94,7 +91,6 @@ fun PortfolioCard( Button( modifier = Modifier - .padding(start = Dp16, end = Dp16, bottom = Dp16) .shadow(elevation = Dp0) .constrainAs(profitPercent) { linkTo(top = todayProfitLabel.top, bottom = todayProfit.bottom)

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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..9fe8d05d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 00000000..2fe81a7d --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..9618d8d9 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..6f32d6ba --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,2 @@ +// FIXME Project build error when using Configurations.Module constants +include(":app", ":data", ":domain") diff --git a/signing.properties b/signing.properties new file mode 100644 index 00000000..e13bd617 --- /dev/null +++ b/signing.properties @@ -0,0 +1,3 @@ +KEY_ALIAS=ENTER_KEY_ALIAS_NAME +KEYSTORE_PASSWORD=ENTER_KEYSTORE_PASSWORD +KEY_PASSWORD=ENTER_KEY_PASSWORD From da486c42c8acead24474428e0b86c9a0b62a3521 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Thu, 16 Jun 2022 11:41:37 +0700 Subject: [PATCH 02/21] [#1] Update pull request template --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .../PULL_REQUEST_TEMPLATE/release_template.md | 4 ++-- .gitlab/merge_request_templates/Default.md | 20 ----------------- .gitlab/merge_request_templates/Release.md | 22 ------------------- 4 files changed, 3 insertions(+), 45 deletions(-) delete mode 100644 .gitlab/merge_request_templates/Default.md delete mode 100644 .gitlab/merge_request_templates/Release.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a1eda23a..107d9e0e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,7 +2,7 @@ Note: for a release PR, append this parameter `?template=release_template.md` to -- -https://github.com/nimblehq/android-templates/issues/?? +https://github.com/nimblehq/jetpack-compose-crypto/issues/?? ## What happened 👀 diff --git a/.github/PULL_REQUEST_TEMPLATE/release_template.md b/.github/PULL_REQUEST_TEMPLATE/release_template.md index 819fd591..f3558cb6 100644 --- a/.github/PULL_REQUEST_TEMPLATE/release_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/release_template.md @@ -1,4 +1,4 @@ -Link to the milestone on Github e.g. https://github.com/nimblehq/git-templates/milestone/41?closed=1 +Link to the milestone on Github e.g. https://github.com/nimblehq/jetpack-compose-crypto/milestone/1?closed=1 or Link to the project management tool for the release @@ -8,7 +8,7 @@ Provide the ID and title of the issue in the section for each type (feature, cho - [ch1234] As a user, I can log in or -- [[ch1234](https://github.com/nimblehq/git-templates/issues/1234)] As a user, I can log in +- [[ch1234](https://github.com/nimblehq/jetpack-compose-crypto/issues/1234)] As a user, I can log in ## Chores - Same structure as in ## Feature diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md deleted file mode 100644 index feb41aa8..00000000 --- a/.gitlab/merge_request_templates/Default.md +++ /dev/null @@ -1,20 +0,0 @@ -{COPY THE TASK URL HERE} - -## What happened 👀 - -Describe the big picture of your changes here to communicate to the team why we should accept this pull request. - -## Insight 📝 - -Describe in detail how to test the changes, which solution you tried but did not go with, referenced documentation is welcome as well. - -## Proof Of Work 📹 - -Show us the implementation: screenshots, GIFs, etc. - -## Reviewers ✅ - -Mention the reviewers here once the merge request is ready for review. - - -/label ~"status : wip" diff --git a/.gitlab/merge_request_templates/Release.md b/.gitlab/merge_request_templates/Release.md deleted file mode 100644 index fbc43e3d..00000000 --- a/.gitlab/merge_request_templates/Release.md +++ /dev/null @@ -1,22 +0,0 @@ -## Features - -Provide the ID and title of each issue in the section for each type (feature, chore and bug). The link is optional. - -- [{ISSUE ID}] {ISSUE TITLE} -or -- [[{ISSUE ID}]]({ISSUE LINK})] {ISSUE TITLE} - -## Chores - -- Same structure as in ## Feature - -## Bugs - -- Same structure as in ## Feature - -## Reviewers ✅ - -Mention the reviewers here once the merge request is ready for review. - - -/label ~"type : release" From 59e6917fb4a27c48f5424911ca8e9dcbd6a72a2a Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Mon, 20 Jun 2022 17:29:53 +0700 Subject: [PATCH 03/21] [#1] Clean unused files --- .../crypto/di/modules/NavigatorModule.kt | 6 +- .../crypto/di/modules/RepositoryModule.kt | 8 +-- .../compose/crypto/model/UserUiModel.kt | 17 ----- .../compose/crypto/ui/base/NavigationEvent.kt | 4 -- .../crypto/ui/screens/MainNavigator.kt | 46 ------------- .../ui/screens/compose/ComposeFragment.kt | 33 --------- .../ui/screens/compose/ComposeViewModel.kt | 57 --------------- .../compose/composables/ComposeScreen.kt | 46 ------------- .../screens/compose/composables/UserItem.kt | 53 -------------- .../screens/compose/composables/UserList.kt | 28 -------- .../crypto/ui/screens/home/HomeFragment.kt | 65 ----------------- .../crypto/ui/screens/home/HomeViewModel.kt | 63 ----------------- .../crypto/ui/screens/second/SecondBundle.kt | 9 --- .../ui/screens/second/SecondFragment.kt | 28 -------- .../ui/screens/second/SecondViewModel.kt | 9 --- app/src/main/res/layout/activity_main.xml | 14 +--- app/src/main/res/layout/fragment_home.xml | 32 --------- app/src/main/res/layout/fragment_second.xml | 20 ------ app/src/main/res/layout/view_loading.xml | 20 ------ .../main/res/navigation/nav_graph_main.xml | 41 +---------- .../compose/crypto/ui/BaseFragmentTest.kt | 69 ------------------- .../ui/screens/home/HomeFragmentTest.kt | 45 ------------ .../data/repository/UserRepositoryImpl.kt | 15 ---- .../crypto/data/response/UserResponse.kt | 62 ----------------- .../compose/crypto/data/service/ApiService.kt | 7 +- .../compose/crypto/domain/model/User.kt | 26 ------- .../domain/repository/UserRepository.kt | 8 --- .../crypto/domain/usecase/GetUsersUseCase.kt | 17 ----- .../domain/usecase/GetUsersUseCaseTest.kt | 2 - 29 files changed, 6 insertions(+), 844 deletions(-) delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt delete mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt delete mode 100644 app/src/main/res/layout/fragment_home.xml delete mode 100644 app/src/main/res/layout/fragment_second.xml delete mode 100644 app/src/main/res/layout/view_loading.xml delete mode 100644 app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt delete mode 100644 app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt delete mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt delete mode 100644 data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt delete mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt delete mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt delete mode 100644 domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt index 80826fdd..7674ccaa 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/NavigatorModule.kt @@ -1,8 +1,5 @@ package co.nimblehq.compose.crypto.di.modules -import co.nimblehq.compose.crypto.ui.screens.MainNavigator -import co.nimblehq.compose.crypto.ui.screens.MainNavigatorImpl -import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.android.components.FragmentComponent @@ -11,6 +8,5 @@ import dagger.hilt.android.components.FragmentComponent @InstallIn(FragmentComponent::class) abstract class NavigatorModule { - @Binds - abstract fun mainNavigator(mainNavigator: MainNavigatorImpl): MainNavigator + // TODO Bind navigator } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt index 8d785d3f..3e379025 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/di/modules/RepositoryModule.kt @@ -1,10 +1,6 @@ package co.nimblehq.compose.crypto.di.modules -import co.nimblehq.compose.crypto.data.repository.UserRepositoryImpl -import co.nimblehq.compose.crypto.data.service.ApiService -import co.nimblehq.compose.crypto.domain.repository.UserRepository import dagger.Module -import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.components.ViewModelComponent @@ -12,7 +8,5 @@ import dagger.hilt.android.components.ViewModelComponent @InstallIn(ViewModelComponent::class) class RepositoryModule { - @Provides - fun provideUserRepository(apiService: ApiService): UserRepository = - UserRepositoryImpl(apiService) + // TODO Provides Repositories } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt deleted file mode 100644 index 100e7901..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/model/UserUiModel.kt +++ /dev/null @@ -1,17 +0,0 @@ -package co.nimblehq.compose.crypto.model - -import co.nimblehq.compose.crypto.domain.model.User - -data class UserUiModel( - val id: Int, - val name: String, - val username: String, - val phone: String -) - -private fun User.toUserUiModel(): UserUiModel = - UserUiModel(id = id ?: 0, name = name, username = username, phone = phone) - -fun List.toUserUiModels(): List { - return this.map { it.toUserUiModel() } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt index 6e322d32..a6481bea 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/base/NavigationEvent.kt @@ -1,8 +1,4 @@ package co.nimblehq.compose.crypto.ui.base -import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle - sealed class NavigationEvent { - data class Second(val bundle: SecondBundle) : NavigationEvent() - object Compose : NavigationEvent() } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt deleted file mode 100644 index a3b0438b..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/MainNavigator.kt +++ /dev/null @@ -1,46 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens - -import androidx.fragment.app.Fragment -import co.nimblehq.compose.crypto.R -import co.nimblehq.compose.crypto.ui.base.BaseNavigator -import co.nimblehq.compose.crypto.ui.base.BaseNavigatorImpl -import co.nimblehq.compose.crypto.ui.base.NavigationEvent -import co.nimblehq.compose.crypto.ui.screens.home.HomeFragmentDirections -import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle -import javax.inject.Inject - -interface MainNavigator : BaseNavigator - -class MainNavigatorImpl @Inject constructor( - fragment: Fragment -) : BaseNavigatorImpl(fragment), MainNavigator { - - override val navHostFragmentId = R.id.navHostFragment - - override fun navigate(event: NavigationEvent) { - when (event) { - is NavigationEvent.Second -> navigateToSecond(event.bundle) - is NavigationEvent.Compose -> navigateToCompose() - } - } - - private fun navigateToSecond(bundle: SecondBundle) { - val navController = findNavController() - when (navController?.currentDestination?.id) { - R.id.homeFragment -> navController.navigate( - HomeFragmentDirections.actionHomeFragmentToSecondFragment(bundle) - ) - else -> unsupportedNavigation() - } - } - - private fun navigateToCompose() { - val navController = findNavController() - when (navController?.currentDestination?.id) { - R.id.homeFragment -> navController.navigate( - HomeFragmentDirections.actionHomeFragmentToComposeFragment() - ) - else -> unsupportedNavigation() - } - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt deleted file mode 100644 index b7aec41a..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeFragment.kt +++ /dev/null @@ -1,33 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.compose - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.fragment.app.viewModels -import co.nimblehq.compose.crypto.ui.base.BaseComposeFragment -import co.nimblehq.compose.crypto.ui.screens.compose.composables.ComposeScreen -import dagger.hilt.android.AndroidEntryPoint - -@ExperimentalComposeUiApi -@AndroidEntryPoint -class ComposeFragment : BaseComposeFragment() { - - private val viewModel: ComposeViewModel by viewModels() - - override val composeScreen: @Composable () -> Unit - get() = { - with(viewModel) { - ComposeScreen( - userUiModels = userUiModels.collectAsState().value, - showLoading = showLoading.collectAsState().value, - textFieldValue = textFieldValue.value, - onTextFieldValueChange = ::updateTextFieldValue, - onUserItemClick = toaster::display - ) - } - } - - override fun bindViewModel() { - viewModel.error bindTo toaster::display - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt deleted file mode 100644 index 50080832..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/ComposeViewModel.kt +++ /dev/null @@ -1,57 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.compose - -import androidx.compose.runtime.State -import androidx.compose.runtime.mutableStateOf -import co.nimblehq.compose.crypto.model.UserUiModel -import co.nimblehq.compose.crypto.model.toUserUiModels -import co.nimblehq.compose.crypto.ui.base.BaseViewModel -import co.nimblehq.compose.crypto.domain.usecase.GetUsersUseCase -import co.nimblehq.compose.crypto.domain.usecase.UseCaseResult -import co.nimblehq.compose.crypto.util.DispatchersProvider -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import javax.inject.Inject - -interface Output { - - val userUiModels: StateFlow> - - val textFieldValue: State - - fun updateTextFieldValue(value: String) -} - -@HiltViewModel -class ComposeViewModel @Inject constructor( - private val getUsersUseCase: GetUsersUseCase, - dispatchers: DispatchersProvider -) : BaseViewModel(dispatchers), Output { - - private val _userUiModels = MutableStateFlow>(emptyList()) - override val userUiModels: StateFlow> - get() = _userUiModels - - private val _textFieldValue = mutableStateOf("") - override val textFieldValue: State - get() = _textFieldValue - - init { - fetchUsers() - } - - override fun updateTextFieldValue(value: String) { - _textFieldValue.value = value - } - - private fun fetchUsers() { - showLoading() - execute { - when (val result = getUsersUseCase.execute()) { - is UseCaseResult.Success -> _userUiModels.value = result.data.toUserUiModels() - is UseCaseResult.Error -> _error.emit(result.exception.message.orEmpty()) - } - hideLoading() - } - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt deleted file mode 100644 index e6e329a3..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/ComposeScreen.kt +++ /dev/null @@ -1,46 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables - -import androidx.compose.foundation.layout.Box -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material.Scaffold -import androidx.compose.runtime.Composable -import androidx.compose.ui.* -import co.nimblehq.compose.crypto.model.UserUiModel -import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme - -@Suppress("LongMethod", "LongParameterList") -@ExperimentalComposeUiApi -@Composable -fun ComposeScreen( - userUiModels: List, - showLoading: Boolean, - textFieldValue: String, - onTextFieldValueChange: (String) -> Unit, - onUserItemClick: (String) -> Unit -) { - ComposeTheme { - Scaffold( - topBar = { - TitleBar( - title = "Jetpack Compose", - textFieldValue = textFieldValue, - onTextFieldValueChange = onTextFieldValueChange - ) - } - ) { - ContentCard { - Box { - UserList( - userUiModels = userUiModels, - onUserItemClick = onUserItemClick - ) - if (showLoading) { - CircularProgressIndicator( - modifier = Modifier.align(alignment = Alignment.Center) - ) - } - } - } - } - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt deleted file mode 100644 index a113b978..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserItem.kt +++ /dev/null @@ -1,53 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables - -import androidx.compose.foundation.Image -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.material.* -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import co.nimblehq.compose.crypto.R -import co.nimblehq.compose.crypto.model.UserUiModel -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension - -@Suppress("LongMethod") -@Composable -fun UserItem( - userUiModel: UserUiModel, - onClick: (String) -> Unit -) { - Surface( - modifier = Modifier - .fillMaxWidth() - .clickable(onClick = { onClick(userUiModel.toString()) }) - ) { - Row(modifier = Modifier.padding(Dimension.Dp16)) { - Image( - painter = painterResource(id = R.drawable.ic_launcher_foreground), - contentDescription = null, - modifier = Modifier - .width(Dimension.Dp52) - .height(Dimension.Dp52), - ) - Column( - modifier = Modifier - .align(Alignment.CenterVertically) - .padding(start = Dimension.Dp16) - ) { - with(userUiModel) { - Text( - text = name, - style = MaterialTheme.typography.subtitle1 - ) - Text( - text = phone, - style = MaterialTheme.typography.body1, - modifier = Modifier.padding(top = Dimension.Dp4) - ) - } - } - } - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt deleted file mode 100644 index b8be3267..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/UserList.kt +++ /dev/null @@ -1,28 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.compose.composables - -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.material.Divider -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import co.nimblehq.compose.crypto.model.UserUiModel -import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension - -@Composable -fun UserList( - userUiModels: List, - onUserItemClick: (String) -> Unit -) { - LazyColumn { - itemsIndexed(items = userUiModels) { index, user -> - if (index == 0) Spacer(modifier = Modifier.height(Dimension.Dp8)) - UserItem( - userUiModel = user, - onClick = onUserItemClick - ) - if (index != userUiModels.size - 1) Divider() - } - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt deleted file mode 100644 index c1bd1bb1..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt +++ /dev/null @@ -1,65 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.home - -import android.view.LayoutInflater -import android.view.ViewGroup -import co.nimblehq.common.extensions.visibleOrGone -import co.nimblehq.compose.crypto.databinding.FragmentHomeBinding -import co.nimblehq.compose.crypto.databinding.ViewLoadingBinding -import co.nimblehq.compose.crypto.extension.provideViewModels -import co.nimblehq.compose.crypto.lib.IsLoading -import co.nimblehq.compose.crypto.model.UserUiModel -import co.nimblehq.compose.crypto.ui.base.BaseFragment -import co.nimblehq.compose.crypto.ui.screens.MainNavigator -import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle -import dagger.hilt.android.AndroidEntryPoint -import timber.log.Timber -import javax.inject.Inject - -@AndroidEntryPoint -class HomeFragment : BaseFragment() { - - @Inject - lateinit var navigator: MainNavigator - - private val viewModel: HomeViewModel by provideViewModels() - - private lateinit var viewLoadingBinding: ViewLoadingBinding - - override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentHomeBinding - get() = { inflater, container, attachToParent -> - FragmentHomeBinding.inflate(inflater, container, attachToParent) - } - - override fun setupView() { - viewLoadingBinding = ViewLoadingBinding.bind(binding.root) - } - - override fun bindViewEvents() { - super.bindViewEvents() - - with(binding) { - btNext.setOnClickListener { - viewModel.navigateToSecond(SecondBundle("From home")) - } - - btCompose.setOnClickListener { - viewModel.navigateToCompose() - } - } - } - - override fun bindViewModel() { - viewModel.userUiModels bindTo ::displayUsers - viewModel.showLoading bindTo ::bindLoading - viewModel.error bindTo toaster::display - viewModel.navigator bindTo navigator::navigate - } - - private fun displayUsers(userUiModels: List) { - Timber.d("Result : $userUiModels") - } - - private fun bindLoading(isLoading: IsLoading) { - viewLoadingBinding.pbLoading.visibleOrGone(isLoading) - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt deleted file mode 100644 index 9518e485..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeViewModel.kt +++ /dev/null @@ -1,63 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.home - -import androidx.lifecycle.viewModelScope -import co.nimblehq.compose.crypto.model.UserUiModel -import co.nimblehq.compose.crypto.model.toUserUiModels -import co.nimblehq.compose.crypto.ui.base.BaseViewModel -import co.nimblehq.compose.crypto.ui.base.NavigationEvent -import co.nimblehq.compose.crypto.ui.screens.second.SecondBundle -import co.nimblehq.compose.crypto.domain.usecase.GetUsersUseCase -import co.nimblehq.compose.crypto.domain.usecase.UseCaseResult -import co.nimblehq.compose.crypto.util.DispatchersProvider -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.launch -import javax.inject.Inject - -interface Output { - - val userUiModels: StateFlow> - - fun navigateToSecond(bundle: SecondBundle) - - fun navigateToCompose() -} - -@HiltViewModel -class HomeViewModel @Inject constructor( - private val getUsersUseCase: GetUsersUseCase, - dispatchers: DispatchersProvider -) : BaseViewModel(dispatchers), Output { - - private val _userUiModels = MutableStateFlow>(emptyList()) - override val userUiModels: StateFlow> - get() = _userUiModels - - init { - fetchUsers() - } - - override fun navigateToSecond(bundle: SecondBundle) { - viewModelScope.launch { - _navigator.emit(NavigationEvent.Second(bundle)) - } - } - - override fun navigateToCompose() { - viewModelScope.launch { - _navigator.emit(NavigationEvent.Compose) - } - } - - private fun fetchUsers() { - showLoading() - execute { - when (val result = getUsersUseCase.execute()) { - is UseCaseResult.Success -> _userUiModels.value = result.data.toUserUiModels() - is UseCaseResult.Error -> _error.emit(result.exception.message.orEmpty()) - } - hideLoading() - } - } -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt deleted file mode 100644 index a8dbba8a..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondBundle.kt +++ /dev/null @@ -1,9 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.second - -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize -data class SecondBundle( - val message: String -) : Parcelable diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt deleted file mode 100644 index 24632dbc..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondFragment.kt +++ /dev/null @@ -1,28 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.second - -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.fragment.app.viewModels -import androidx.navigation.fragment.navArgs -import co.nimblehq.compose.crypto.databinding.FragmentSecondBinding -import co.nimblehq.compose.crypto.ui.base.BaseFragment -import dagger.hilt.android.AndroidEntryPoint - -@AndroidEntryPoint -class SecondFragment : BaseFragment() { - - private val viewModel by viewModels() - - private val args: SecondFragmentArgs by navArgs() - - override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentSecondBinding - get() = { inflater, container, attachToParent -> - FragmentSecondBinding.inflate(inflater, container, attachToParent) - } - - override fun setupView() { - binding.tvMessage.text = args.bundle.message - } - - override fun bindViewModel() {} -} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt deleted file mode 100644 index 0473f494..00000000 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/second/SecondViewModel.kt +++ /dev/null @@ -1,9 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.second - -import co.nimblehq.compose.crypto.ui.base.BaseViewModel -import co.nimblehq.compose.crypto.util.DispatchersProvider -import dagger.hilt.android.lifecycle.HiltViewModel -import javax.inject.Inject - -@HiltViewModel -class SecondViewModel @Inject constructor(dispatchers: DispatchersProvider) : BaseViewModel(dispatchers) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f197b5ee..13caadd1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,16 +1,4 @@ - - - - + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml deleted file mode 100644 index ba885d12..00000000 --- a/app/src/main/res/layout/fragment_home.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_second.xml deleted file mode 100644 index 2e2b65d6..00000000 --- a/app/src/main/res/layout/fragment_second.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/app/src/main/res/layout/view_loading.xml b/app/src/main/res/layout/view_loading.xml deleted file mode 100644 index 0ec4df1f..00000000 --- a/app/src/main/res/layout/view_loading.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/app/src/main/res/navigation/nav_graph_main.xml b/app/src/main/res/navigation/nav_graph_main.xml index a418b8fb..7fea3d84 100644 --- a/app/src/main/res/navigation/nav_graph_main.xml +++ b/app/src/main/res/navigation/nav_graph_main.xml @@ -1,44 +1,7 @@ + android:id="@+id/main_nav_graph"> - - - - - - - - - - - - - + diff --git a/app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt b/app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt deleted file mode 100644 index 99aa56b5..00000000 --- a/app/src/test/java/co/nimblehq/compose/crypto/ui/BaseFragmentTest.kt +++ /dev/null @@ -1,69 +0,0 @@ -package co.nimblehq.compose.crypto.ui - -import android.content.ComponentName -import android.content.Intent -import android.os.Bundle -import androidx.annotation.StyleRes -import androidx.core.util.Preconditions -import androidx.test.core.app.ActivityScenario -import androidx.test.core.app.ApplicationProvider -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.viewbinding.ViewBinding -import co.nimblehq.compose.crypto.EmptyHiltActivity -import co.nimblehq.compose.crypto.R -import co.nimblehq.compose.crypto.ui.base.BaseFragment -import dagger.hilt.android.testing.* -import org.junit.runner.RunWith - -@RunWith(AndroidJUnit4::class) -abstract class BaseFragmentTest, VB : ViewBinding> { - - protected lateinit var fragment: F - - /** - * Issue: launchFragmentInContainer from the androidx.fragment:fragment-testing library - * is NOT possible to use right now as it uses a hardcoded Activity under the hood - * (i.e. [EmptyFragmentActivity]) which is not annotated with @AndroidEntryPoint. - * - * As a workaround, use this function that is equivalent. It requires you to add - * [HiltTestActivity] in the debug folder and include it in the debug AndroidManifest.xml file - * as can be found in this project. - * Read more: https://dagger.dev/hilt/testing - * Solution: launchFragmentInHiltContainer is copied from architecture-sample repo, but has - * been modified to receive input [onInstantiate] so the devs can create the fragment - * instance with mock/ fake variables at the initial step. - * Reference: https://github.com/android/architecture-samples/blob/dev-hilt/app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/HiltExt.kt - */ - protected inline fun > launchFragmentInHiltContainer( - crossinline onInstantiate: F.() -> Unit, - fragmentArgs: Bundle? = null, - @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme, - crossinline action: F.() -> Unit = {} - ) { - val startActivityIntent = Intent.makeMainActivity( - ComponentName( - ApplicationProvider.getApplicationContext(), - EmptyHiltActivity::class.java - ) - ).putExtra( - "androidx.fragment.app.testing.FragmentScenario.EmptyFragmentActivity.THEME_EXTRAS_BUNDLE_KEY", - themeResId - ) - - ActivityScenario.launch(startActivityIntent).onActivity { activity -> - val fragment = (activity.supportFragmentManager.fragmentFactory.instantiate( - Preconditions.checkNotNull(F::class.java.classLoader), - F::class.java.name - ) as F).apply { - this.onInstantiate() - } - fragment.arguments = fragmentArgs - activity.supportFragmentManager - .beginTransaction() - .add(android.R.id.content, fragment, "") - .commitNow() - - fragment.action() - } - } -} diff --git a/app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt b/app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt deleted file mode 100644 index e5888d8c..00000000 --- a/app/src/test/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragmentTest.kt +++ /dev/null @@ -1,45 +0,0 @@ -package co.nimblehq.compose.crypto.ui.screens.home - -import co.nimblehq.compose.crypto.databinding.FragmentHomeBinding -import co.nimblehq.compose.crypto.test.TestNavigatorModule.mockMainNavigator -import co.nimblehq.compose.crypto.test.getPrivateProperty -import co.nimblehq.compose.crypto.test.replace -import co.nimblehq.compose.crypto.ui.BaseFragmentTest -import dagger.hilt.android.testing.* -import io.kotest.matchers.nulls.shouldNotBeNull -import io.kotest.matchers.shouldBe -import io.mockk.mockk -import org.junit.* - -@HiltAndroidTest -class HomeFragmentTest : BaseFragmentTest() { - - private val mockViewModel = mockk(relaxed = true) - - @get:Rule - var hiltRule = HiltAndroidRule(this) - - @Before - fun setup() { - hiltRule.inject() - } - - @Test - fun `When initializing HomeFragment, its views display the text correctly`() { - launchFragment() - fragment.binding.btNext.text.toString() shouldBe "Next" - fragment.binding.btCompose.text.toString() shouldBe "Jetpack Compose" - } - - private fun launchFragment() { - launchFragmentInHiltContainer( - onInstantiate = { - replace(getPrivateProperty("viewModel"), mockViewModel) - navigator = mockMainNavigator - } - ) { - fragment = this - fragment.navigator.shouldNotBeNull() - } - } -} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt deleted file mode 100644 index 940bc9d6..00000000 --- a/data/src/main/java/co/nimblehq/compose/crypto/data/repository/UserRepositoryImpl.kt +++ /dev/null @@ -1,15 +0,0 @@ -package co.nimblehq.compose.crypto.data.repository - -import co.nimblehq.compose.crypto.data.response.toUsers -import co.nimblehq.compose.crypto.data.service.ApiService -import co.nimblehq.compose.crypto.domain.model.User -import co.nimblehq.compose.crypto.domain.repository.UserRepository - -class UserRepositoryImpl constructor( - private val apiService: ApiService -) : UserRepository { - - override suspend fun getUsers(): List { - return apiService.getUsers().toUsers() - } -} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt deleted file mode 100644 index 651a7b73..00000000 --- a/data/src/main/java/co/nimblehq/compose/crypto/data/response/UserResponse.kt +++ /dev/null @@ -1,62 +0,0 @@ -package co.nimblehq.compose.crypto.data.response - -import co.nimblehq.compose.crypto.domain.model.User -import com.squareup.moshi.Json - -data class UserResponse( - @Json(name = "id") val id: Int?, - @Json(name = "name") val name: String?, - @Json(name = "username") val username: String?, - @Json(name = "email") val email: String?, - @Json(name = "address") val addressResponse: AddressResponse?, - @Json(name = "phone") val phone: String?, - @Json(name = "website") val website: String? -) { - - data class AddressResponse( - @Json(name = "street") val street: String?, - @Json(name = "suite") val suite: String?, - @Json(name = "city") val city: String?, - @Json(name = "zipcode") val zipCode: String?, - @Json(name = "geo") val geoResponse: GeoResponse? - ) { - - data class GeoResponse( - @Json(name = "lat") val latitude: String?, - @Json(name = "lng") val longitude: String? - ) - } -} - -fun List.toUsers(): List { - return this.map { it.toUser() } -} - -private fun UserResponse.toUser(): User { - return User( - id = this.id, - name = this.name.orEmpty(), - username = this.username.orEmpty(), - email = this.email.orEmpty(), - address = this.addressResponse?.toAddress(), - phone = this.phone.orEmpty(), - website = this.website.orEmpty() - ) -} - -private fun UserResponse.AddressResponse.toAddress(): User.Address { - return User.Address( - street = this.street.orEmpty(), - suite = this.suite.orEmpty(), - city = this.city.orEmpty(), - zipCode = this.zipCode.orEmpty(), - geo = this.geoResponse?.toGeo() - ) -} - -private fun UserResponse.AddressResponse.GeoResponse.toGeo(): User.Address.Geo { - return User.Address.Geo( - latitude = this.latitude.orEmpty(), - longitude = this.longitude.orEmpty() - ) -} diff --git a/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt b/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt index 660e77b9..283a83e5 100644 --- a/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt +++ b/data/src/main/java/co/nimblehq/compose/crypto/data/service/ApiService.kt @@ -1,10 +1,5 @@ package co.nimblehq.compose.crypto.data.service -import co.nimblehq.compose.crypto.data.response.UserResponse -import retrofit2.http.GET - interface ApiService { - - @GET("users") - suspend fun getUsers(): List + // TODO Add API Service } diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt deleted file mode 100644 index 96f9c649..00000000 --- a/domain/src/main/java/co/nimblehq/compose/crypto/domain/model/User.kt +++ /dev/null @@ -1,26 +0,0 @@ -package co.nimblehq.compose.crypto.domain.model - -data class User( - val id: Int?, - val name: String, - val username: String, - val email: String, - val address: Address?, - val phone: String, - val website: String -) { - - data class Address( - val street: String, - val suite: String, - val city: String, - val zipCode: String, - val geo: Geo? - ) { - - data class Geo( - val latitude: String, - val longitude: String - ) - } -} diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt deleted file mode 100644 index cbb47ab9..00000000 --- a/domain/src/main/java/co/nimblehq/compose/crypto/domain/repository/UserRepository.kt +++ /dev/null @@ -1,8 +0,0 @@ -package co.nimblehq.compose.crypto.domain.repository - -import co.nimblehq.compose.crypto.domain.model.User - -interface UserRepository { - - suspend fun getUsers(): List -} diff --git a/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt b/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt deleted file mode 100644 index c922d7a0..00000000 --- a/domain/src/main/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCase.kt +++ /dev/null @@ -1,17 +0,0 @@ -package co.nimblehq.compose.crypto.domain.usecase - -import co.nimblehq.compose.crypto.domain.model.User -import co.nimblehq.compose.crypto.domain.repository.UserRepository -import javax.inject.Inject - -class GetUsersUseCase @Inject constructor(private val userRepository: UserRepository) { - - suspend fun execute(): UseCaseResult> { - return try { - val response = userRepository.getUsers() - UseCaseResult.Success(response) - } catch (e: Exception) { - UseCaseResult.Error(e) - } - } -} diff --git a/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt b/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt index 735f948d..30baae83 100644 --- a/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt +++ b/domain/src/test/java/co/nimblehq/compose/crypto/domain/usecase/GetUsersUseCaseTest.kt @@ -1,7 +1,5 @@ package co.nimblehq.compose.crypto.domain.usecase -import co.nimblehq.compose.crypto.domain.model.User -import co.nimblehq.compose.crypto.domain.repository.UserRepository import io.kotest.matchers.shouldBe import io.mockk.coEvery import io.mockk.mockk From 70dd2c0889fe330a8bbef265eb584def333f2943 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Mon, 20 Jun 2022 17:30:48 +0700 Subject: [PATCH 04/21] [#1] Update logo adapt dark/light theme --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 08bb2476..c5b580ef 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,12 @@ and may be redistributed under the terms specified in the [LICENSE] file. ## About -![Nimble](https://assets.nimblehq.co/logo/dark/logo-dark-text-160.png) + + + + Nimble logo + + This project is maintained and funded by Nimble. From 6049a5939516991b567f0c524e75d7df691b8e35 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Sat, 25 Jun 2022 23:24:44 +0700 Subject: [PATCH 05/21] [#2] Add Review new PR workflow --- .github/workflows/review_pull_request.yml | 64 +++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/review_pull_request.yml diff --git a/.github/workflows/review_pull_request.yml b/.github/workflows/review_pull_request.yml new file mode 100644 index 00000000..e7c534dc --- /dev/null +++ b/.github/workflows/review_pull_request.yml @@ -0,0 +1,64 @@ +name: Review pull request + +on: + pull_request: + types: [ opened, edited, reopened, synchronize ] + +jobs: + review_pull_request: + name: Review pull request + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + - name: Checkout source code + uses: actions/checkout@v2.3.2 + + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches/modules-* + ~/.gradle/caches/jars-* + ~/.gradle/caches/build-cache-* + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + - name: Run Detekt + run: ./gradlew detekt + + - name: Run Android Lint + run: ./gradlew lint + + - name: Run unit tests and Jacoco + run: ./gradlew jacocoTestReport + + - name: Set up Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: '2.7' + + - name: Cache gems + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + - name: Install Bundle and check environment versions + run: | + echo 'Install Bundle' + bundle config path vendor/bundle + bundle install + echo 'Check environment setup versions' + ruby --version + gem --version + bundler --version + - name: Run Danger + env: + DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: bundle exec danger \ No newline at end of file From 8a639b235d910686dd2d95bacb94be8fd9f093a8 Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Sat, 25 Jun 2022 23:24:59 +0700 Subject: [PATCH 06/21] [#2] Add Deploy debug build to FAD workflow --- .../deploy_to_firebase_app_distribution.yml | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/deploy_to_firebase_app_distribution.yml diff --git a/.github/workflows/deploy_to_firebase_app_distribution.yml b/.github/workflows/deploy_to_firebase_app_distribution.yml new file mode 100644 index 00000000..d65caa92 --- /dev/null +++ b/.github/workflows/deploy_to_firebase_app_distribution.yml @@ -0,0 +1,68 @@ +name: Deploy staging and production to Firebase App Distribution + +on: + # Trigger the workflow on push action in main branch. + # So it will trigger when the PR of the release branch was merged. + push: + branches: + - main + +jobs: + deploy_staging_and_production_to_firebase_app_distribution: + name: Deploy staging and production to Firebase App Distribution + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + + - name: Set up timezone + uses: zcong1993/setup-timezone@master + with: + timezone: Asia/Bangkok + + - name: Checkout source code + uses: actions/checkout@v2.3.2 + + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches/modules-* + ~/.gradle/caches/jars-* + ~/.gradle/caches/build-cache-* + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + - name: Run Detekt + run: ./gradlew detekt + + - name: Archive Detekt reports + uses: actions/upload-artifact@v2 + with: + name: DetektReports + path: build/reports/detekt/ + + - name: Run unit tests and Jacoco + run: ./gradlew jacocoTestReport + + - name: Archive code coverage reports + uses: actions/upload-artifact@v2 + with: + name: CodeCoverageReports + path: | + app/build/reports/jacoco/jacocoTestReport/ + data/build/reports/jacoco/jacocoTestReport/ + + - name: Build debug APK + run: ./gradlew assembleDebug + + - name: Deploy staging to Firebase + uses: wzieba/Firebase-Distribution-Github-Action@v1 + with: + appId: ${{secrets.FIREBASE_APP_ID_STAGING}} + token: ${{secrets.FIREBASE_TOKEN}} + groups: testers + file: app/build/outputs/apk/staging/debug/app-debug.apk \ No newline at end of file From 17f07f4ceb142a8e312d1372ba04c8e77642eabd Mon Sep 17 00:00:00 2001 From: hoangnguyen92dn Date: Sat, 25 Jun 2022 23:25:14 +0700 Subject: [PATCH 07/21] [#2] Remove unused template --- .../PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md deleted file mode 100644 index 819fd591..00000000 --- a/.github/PULL_REQUEST_TEMPLATE/RELEASE_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ -Link to the milestone on Github e.g. https://github.com/nimblehq/git-templates/milestone/41?closed=1 -or -Link to the project management tool for the release - -## Features - -Provide the ID and title of the issue in the section for each type (feature, chore and bug). The link is optional. - -- [ch1234] As a user, I can log in - or -- [[ch1234](https://github.com/nimblehq/git-templates/issues/1234)] As a user, I can log in - -## Chores -- Same structure as in ## Feature - -## Bugs -- Same structure as in ## Feature From 6c19aa84d875a10791edf0fd8529e41ffd30a673 Mon Sep 17 00:00:00 2001 From: Wadeewee Date: Wed, 29 Jun 2022 09:11:00 +0700 Subject: [PATCH 08/21] [#4] Implement UI Today's profit card on Home screen --- app/build.gradle.kts | 1 + .../compose/composables/home/HomeScreen.kt | 70 +++++++++ .../compose/composables/home/PortfolioCard.kt | 133 ++++++++++++++++++ .../crypto/ui/screens/compose/theme/Color.kt | 7 + .../ui/screens/compose/theme/Dimension.kt | 4 + .../crypto/ui/screens/compose/theme/Style.kt | 22 +++ .../crypto/ui/screens/compose/theme/Theme.kt | 27 +++- .../ui/screens/compose/theme/Typography.kt | 4 +- .../crypto/ui/screens/home/HomeFragment.kt | 24 ++++ app/src/main/res/font/inter_medium.ttf | Bin 0 -> 314712 bytes app/src/main/res/font/inter_semi_bold.ttf | Bin 0 -> 315756 bytes app/src/main/res/font/montserrat_regular.ttf | Bin 245708 -> 0 bytes app/src/main/res/layout/activity_main.xml | 14 +- .../main/res/navigation/nav_graph_main.xml | 8 +- app/src/main/res/values/strings.xml | 8 ++ buildSrc/src/main/java/Versions.kt | 1 + 16 files changed, 316 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt create mode 100644 app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt create mode 100644 app/src/main/res/font/inter_medium.ttf create mode 100644 app/src/main/res/font/inter_semi_bold.ttf delete mode 100644 app/src/main/res/font/montserrat_regular.ttf diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4e3e1004..631fbd1c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -129,6 +129,7 @@ dependencies { implementation("androidx.core:core-ktx:${Versions.ANDROIDX_CORE_KTX_VERSION}") implementation("androidx.lifecycle:lifecycle-runtime-ktx:${Versions.ANDROIDX_LIFECYCLE_VERSION}") + implementation("androidx.constraintlayout:constraintlayout-compose:${Versions.COMPOSE_CONSTRAINT_LAYOUT_VERSION}") implementation("androidx.compose.ui:ui:${Versions.COMPOSE_VERSION}") implementation("androidx.compose.ui:ui-tooling:${Versions.COMPOSE_VERSION}") implementation("androidx.compose.foundation:foundation:${Versions.COMPOSE_VERSION}") diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt new file mode 100644 index 00000000..4229af6f --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/HomeScreen.kt @@ -0,0 +1,70 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables.home + +import androidx.compose.foundation.layout.* +import androidx.compose.material.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.constraintlayout.compose.ConstraintLayout +import androidx.constraintlayout.compose.Dimension +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp16 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style +import co.nimblehq.compose.crypto.ui.screens.compose.theme.titleHome + +@ExperimentalMaterialApi +@Composable +fun HomeScreen() { + Surface { + ConstraintLayout( + modifier = Modifier + .fillMaxSize() + .padding(horizontal = Dp16) + ) { + val (title, portfolioCard) = createRefs() + + Text( + modifier = Modifier + .padding(Dp16) + .constrainAs(title) { + top.linkTo(parent.top) + linkTo(start = parent.start, end = parent.end) + width = Dimension.preferredWrapContent + + }, + text = stringResource(id = R.string.home_title), + textAlign = TextAlign.Center, + style = Style.semiBold24(), + color = MaterialTheme.colors.titleHome + ) + + PortfolioCard( + modifier = Modifier.constrainAs(portfolioCard) { + top.linkTo(title.bottom, margin = Dp40) + } + ) + } + } +} + +@ExperimentalMaterialApi +@Composable +@Preview +fun HomeScreenPreview() { + ComposeTheme { + HomeScreen() + } +} + +@ExperimentalMaterialApi +@Composable +@Preview +fun HomeScreenPreviewDark() { + ComposeTheme(darkTheme = true) { + HomeScreen() + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt new file mode 100644 index 00000000..7b75a6a1 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/composables/home/PortfolioCard.kt @@ -0,0 +1,133 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.composables.home + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.KeyboardArrowUp +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.constraintlayout.compose.ConstraintLayout +import co.nimblehq.compose.crypto.R +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color +import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp0 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp12 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp16 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp20 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp4 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp40 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Dimension.Dp8 +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Style + +@ExperimentalMaterialApi +@Composable +fun PortfolioCard( + modifier: Modifier +) { + ConstraintLayout( + modifier = modifier + .fillMaxWidth() + .clip(RoundedCornerShape(Dp12)) + .background( + brush = Brush.linearGradient( + colors = listOf(Color.MetallicSeaweed, Color.TiffanyBlue), + ) + ) + ) { + val ( + totalCoinsLabel, + totalCoins, + todayProfitLabel, + todayProfit, + profitPercent, + ) = createRefs() + + Text( + modifier = Modifier + .padding(top = Dp16, start = Dp16) + .constrainAs(totalCoinsLabel) { + start.linkTo(parent.start) + }, + text = stringResource(R.string.portfolio_card_total_coin_label), + style = Style.lightSilverMedium16() + ) + + Text( + modifier = Modifier + .padding(horizontal = Dp16) + .constrainAs(totalCoins) { + top.linkTo(totalCoinsLabel.bottom, margin = Dp8) + }, + // TODO: Remove dummy value when work on Integrate. + text = stringResource(R.string.portfolio_card_total_coin, "7,273,291"), + style = Style.whiteSemiBold24() + ) + + Text( + modifier = Modifier + .padding(start = Dp16) + .constrainAs(todayProfitLabel) { + top.linkTo(totalCoins.bottom, margin = Dp40) + }, + text = stringResource(R.string.portfolio_card_today_profit_label), + style = Style.lightSilverMedium16() + ) + + Text( + modifier = Modifier + .padding(start = Dp16, bottom = Dp16) + .constrainAs(todayProfit) { + top.linkTo(todayProfitLabel.bottom, margin = Dp8) + }, + // TODO: Remove dummy value when work on Integrate. + text = stringResource(R.string.portfolio_card_today_profit, "193,280"), + style = Style.whiteSemiBold24() + ) + + Button( + modifier = Modifier + .padding(start = Dp16, end = Dp16, bottom = Dp16) + .shadow(elevation = Dp0) + .constrainAs(profitPercent) { + linkTo(top = todayProfitLabel.top, bottom = todayProfit.bottom) + end.linkTo(parent.end) + }, + colors = ButtonDefaults.buttonColors( + backgroundColor = Color.Water, + contentColor = Color.GuppieGreen + ), + shape = RoundedCornerShape(Dp20), + onClick = { /* TODO */ }, + ) { + Icon( + imageVector = Icons.Filled.KeyboardArrowUp, + modifier = Modifier.padding(end = Dp4), + contentDescription = null + ) + Text( + // TODO: Remove dummy value when work on Integrate. + text = stringResource(R.string.portfolio_card_profit_percent, 2.41), + style = Style.medium16() + ) + } + } +} + +@ExperimentalMaterialApi +@Composable +@Preview +fun PortfolioCardPreview() { + ComposeTheme { + PortfolioCard( + modifier = Modifier + ) + } +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt index e875f0e0..c731c0d8 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Color.kt @@ -6,4 +6,11 @@ import androidx.compose.ui.graphics.Color object Color { val BlueFreeSpeech = Color(0xFF3F51B5) val AlmostWhite = Color(0xFFDFE4EA) + val White = Color.White + val MetallicSeaweed = Color(0xFF028090) + val TiffanyBlue = Color(0xFF00BFB2) + val Water = Color(0xFFD6F5F3) + val GuppieGreen = Color(0xFF10DC78) + val DarkJungleGreen = Color(0xFF141B29) + val LightSilver = Color(0xFFD6D7D8) } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt index 2e5f0065..7713f319 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Dimension.kt @@ -6,8 +6,12 @@ import androidx.compose.ui.unit.dp object Dimension { val Dp0 = 0.dp val Dp4 = 4.dp + val Dp6 = 6.dp val Dp8 = 8.dp + val Dp12 = 12.dp val Dp16 = 16.dp + val Dp20 = 20.dp val Dp24 = 24.dp + val Dp40 = 40.dp val Dp52 = 52.dp } diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt new file mode 100644 index 00000000..d29ed9ab --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Style.kt @@ -0,0 +1,22 @@ +package co.nimblehq.compose.crypto.ui.screens.compose.theme + +import androidx.compose.material.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color.Companion.White +import androidx.compose.ui.text.font.FontWeight +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.LightSilver + +object Style { + + @Composable + fun medium16() = MaterialTheme.typography.body1.copy(fontWeight = FontWeight.Medium) + + @Composable + fun lightSilverMedium16() = medium16().copy(color = LightSilver) + + @Composable + fun semiBold24() = MaterialTheme.typography.h5.copy(fontWeight = FontWeight.SemiBold) + + @Composable + fun whiteSemiBold24() = semiBold24().copy(color = White) +} diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt index 3f4a1860..3639d220 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Theme.kt @@ -1,22 +1,43 @@ package co.nimblehq.compose.crypto.ui.screens.compose.theme +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material.Colors import androidx.compose.material.MaterialTheme +import androidx.compose.material.darkColors import androidx.compose.material.lightColors import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.AlmostWhite +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.BlueFreeSpeech +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.DarkJungleGreen +import co.nimblehq.compose.crypto.ui.screens.compose.theme.Color.White object Palette { val ComposeLightPalette = lightColors( - primary = Color.BlueFreeSpeech, - background = Color.AlmostWhite + primary = BlueFreeSpeech, + background = AlmostWhite ) + + val ComposeDarkPalette = darkColors() } +val Colors.titleHome: Color + @Composable + get() = if (isLight) DarkJungleGreen else White + @Composable fun ComposeTheme( + darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit ) { + val colors = if (darkTheme) { + Palette.ComposeDarkPalette + } else { + Palette.ComposeLightPalette + } + MaterialTheme( - colors = Palette.ComposeLightPalette, + colors = colors, typography = Typography.ComposeTypography, shapes = Shape.ComposeShapes, content = content diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt index 01efb8d9..91d58bda 100644 --- a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/compose/theme/Typography.kt @@ -3,11 +3,13 @@ package co.nimblehq.compose.crypto.ui.screens.compose.theme import androidx.compose.material.Typography import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight import co.nimblehq.compose.crypto.R object Typography { private val MontserratFontFamily = FontFamily( - Font(R.font.montserrat_regular) + Font(R.font.inter_medium, FontWeight.Medium), + Font(R.font.inter_semi_bold, FontWeight.SemiBold) ) val ComposeTypography = Typography( diff --git a/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt new file mode 100644 index 00000000..97d473c2 --- /dev/null +++ b/app/src/main/java/co/nimblehq/compose/crypto/ui/screens/home/HomeFragment.kt @@ -0,0 +1,24 @@ +package co.nimblehq.compose.crypto.ui.screens.home + +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.runtime.Composable +import co.nimblehq.compose.crypto.ui.base.BaseComposeFragment +import co.nimblehq.compose.crypto.ui.screens.compose.composables.home.HomeScreen +import co.nimblehq.compose.crypto.ui.screens.compose.theme.ComposeTheme +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +@ExperimentalMaterialApi +class HomeFragment: BaseComposeFragment() { + + override val composeScreen: @Composable () -> Unit + get() = { + ComposeTheme { + HomeScreen() + } + } + + override fun bindViewModel() { + // TODO("Not yet implemented") + } +} diff --git a/app/src/main/res/font/inter_medium.ttf b/app/src/main/res/font/inter_medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..49b53ab343cb18f12794b1c3103791a8d315b751 GIT binary patch literal 314712 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