├── android ├── .idea │ ├── .name │ ├── .gitignore │ ├── compiler.xml │ └── libraries │ │ ├── Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_1.xml │ │ ├── Gradle__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml │ │ ├── Gradle__androidx_room_room_common_2_2_5.xml │ │ ├── Gradle__androidx_room_room_common_2_4_0.xml │ │ ├── Gradle__androidx_annotation_annotation_1_2_0.xml │ │ ├── Gradle__androidx_annotation_annotation_1_3_0.xml │ │ ├── Gradle__androidx_arch_core_core_common_2_1_0.xml │ │ ├── Gradle__androidx_collection_collection_1_1_0.xml │ │ ├── Gradle__androidx_room_room_migration_2_2_5.xml │ │ ├── Gradle__androidx_datastore_datastore_core_1_0_0.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_common_2_5_0.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_reflect_1_5_31.xml │ │ ├── Gradle__androidx_compose_compiler_compiler_1_2_0_alpha07.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_common_java8_2_5_0.xml │ │ ├── Gradle__androidx_datastore_datastore_preferences_core_1_0_0.xml │ │ ├── Gradle__org_ow2_asm_asm_9_1.xml │ │ ├── Gradle__androidx_constraintlayout_constraintlayout_2_0_1_aar.xml │ │ ├── Gradle__com_ibm_icu_icu4j_53_1.xml │ │ ├── Gradle__io_mockk_mockk_1_10_0.xml │ │ ├── Gradle__org_json_json_20201115.xml │ │ ├── Gradle__org_robolectric_junit_4_6.xml │ │ ├── Gradle__org_robolectric_utils_4_6.xml │ │ ├── Gradle__org_ow2_asm_asm_tree_9_0.xml │ │ ├── Gradle__org_ow2_asm_asm_util_9_0.xml │ │ ├── Gradle__io_grpc_grpc_api_1_44_1.xml │ │ ├── Gradle__io_grpc_grpc_core_1_44_1.xml │ │ ├── Gradle__io_grpc_grpc_stub_1_44_1.xml │ │ ├── Gradle__org_robolectric_sandbox_4_6.xml │ │ ├── Gradle__com_google_truth_truth_1_1_3.xml │ │ ├── Gradle__com_squareup_okio_okio_2_8_0.xml │ │ ├── Gradle__io_mockk_mockk_dsl_1_10_0.xml │ │ ├── Gradle__org_objenesis_objenesis_3_1.xml │ │ ├── Gradle__com_google_dagger_dagger_2_40.xml │ │ ├── Gradle__javax_inject_javax_inject_1.xml │ │ ├── Gradle__com_squareup_okio_okio_2_10_0.xml │ │ ├── Gradle__io_grpc_grpc_okhttp_1_44_1.xml │ │ ├── Gradle__org_ow2_asm_asm_commons_9_0.xml │ │ ├── Gradle__org_robolectric_pluginapi_4_6.xml │ │ ├── Gradle__org_robolectric_resources_4_6.xml │ │ ├── Gradle__org_robolectric_shadowapi_4_6.xml │ │ ├── Gradle__com_google_code_gson_gson_2_8_9.xml │ │ ├── Gradle__org_ow2_asm_asm_analysis_9_0.xml │ │ ├── Gradle__com_squareup_moshi_moshi_1_13_0.xml │ │ ├── Gradle__io_grpc_grpc_context_1_44_1.xml │ │ ├── Gradle__com_squareup_okhttp_okhttp_2_7_5.xml │ │ ├── Gradle__org_jetbrains_annotations_13_0.xml │ │ ├── Gradle__com_google_dagger_hilt_core_2_40.xml │ │ ├── Gradle__com_squareup_okhttp3_okhttp_4_9_3.xml │ │ ├── Gradle__io_mockk_mockk_dsl_jvm_1_10_0.xml │ │ ├── Gradle__org_hamcrest_hamcrest_core_1_3.xml │ │ ├── Gradle__org_mockito_mockito_core_3_6_0.xml │ │ ├── Gradle__org_robolectric_annotations_4_6.xml │ │ ├── Gradle__org_robolectric_robolectric_4_6.xml │ │ ├── Gradle__net_bytebuddy_byte_buddy_1_10_15.xml │ │ ├── Gradle__org_jetbrains_annotations_20_1_0.xml │ │ ├── Gradle__io_mockk_mockk_common_1_10_0.xml │ │ ├── Gradle__app_cash_turbine_turbine_jvm_0_7_0.xml │ │ ├── Gradle__com_google_code_findbugs_jsr305_3_0_1.xml │ │ ├── Gradle__com_google_code_findbugs_jsr305_3_0_2.xml │ │ ├── Gradle__org_mockito_mockito_inline_3_6_0.xml │ │ ├── Gradle__com_squareup_retrofit2_retrofit_2_9_0.xml │ │ ├── Gradle__org_robolectric_utils_reflector_4_6.xml │ │ ├── Gradle__com_google_guava_failureaccess_1_0_1.xml │ │ ├── Gradle__io_grpc_grpc_protobuf_lite_1_44_1.xml │ │ ├── Gradle__org_bouncycastle_bcprov_jdk15on_1_68.xml │ │ ├── Gradle__com_google_guava_guava_30_1_1_android.xml │ │ ├── Gradle__org_robolectric_shadows_framework_4_6.xml │ │ ├── Gradle__androidx_sqlite_sqlite_2_2_0_aar.xml │ │ ├── Gradle__com_squareup_okhttp3_mockwebserver_4_9_3.xml │ │ ├── Gradle__org_checkerframework_checker_qual_3_13_0.xml │ │ ├── Gradle__net_bytebuddy_byte_buddy_agent_1_10_15.xml │ │ ├── Gradle__androidx_compose_ui_ui_1_1_1_aar.xml │ │ ├── Gradle__com_google_j2objc_j2objc_annotations_1_3.xml │ │ ├── Gradle__com_squareup_okhttp3_okhttp_5_0_0_alpha_2.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_5_31.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_21.xml │ │ ├── Gradle__androidx_cardview_cardview_1_0_0_aar.xml │ │ ├── Gradle__com_almworks_sqlite4java_sqlite4java_1_0_392.xml │ │ ├── Gradle__com_squareup_retrofit2_converter_moshi_2_9_0.xml │ │ ├── Gradle__androidx_core_core_ktx_1_7_0_aar.xml │ │ ├── Gradle__androidx_room_room_ktx_2_4_0_aar.xml │ │ ├── Gradle__com_google_firebase_firebase_encoders_17_0_0.xml │ │ ├── Gradle__com_google_protobuf_protobuf_javalite_3_19_2.xml │ │ ├── Gradle__javax_annotation_javax_annotation_api_1_3_2.xml │ │ ├── Gradle__androidx_compose_ui_ui_test_1_1_1_aar.xml │ │ ├── Gradle__androidx_compose_ui_ui_text_1_1_1_aar.xml │ │ ├── Gradle__androidx_compose_ui_ui_unit_1_1_1_aar.xml │ │ ├── Gradle__com_nhaarman_mockitokotlin2_mockito_kotlin_2_1_0.xml │ │ ├── Gradle__org_checkerframework_checker_compat_qual_2_5_5.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_5_31.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_5_31.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml │ │ ├── Gradle__androidx_datastore_datastore_1_0_0_aar.xml │ │ ├── Gradle__androidx_compose_runtime_runtime_1_1_1_aar.xml │ │ ├── Gradle__com_google_firebase_firebase_annotations_16_1_0.xml │ │ ├── Gradle__androidx_compose_ui_ui_tooling_1_1_1_aar.xml │ │ ├── Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml │ │ ├── Gradle__androidx_savedstate_savedstate_1_2_0_aar.xml │ │ ├── Gradle__junit_junit_4_13_2.xml │ │ ├── Gradle__androidx_compose_material_material_1_1_1_aar.xml │ │ ├── Gradle__androidx_sqlite_sqlite_framework_2_2_0_aar.xml │ │ ├── Gradle__androidx_activity_activity_ktx_1_5_0_aar.xml │ │ ├── Gradle__androidx_compose_ui_ui_geometry_1_1_1_aar.xml │ │ ├── Gradle__androidx_compose_ui_ui_graphics_1_1_1_aar.xml │ │ ├── Gradle__com_google_auto_value_auto_value_annotations_1_8_1.xml │ │ ├── Gradle__androidx_compose_animation_animation_1_1_1_aar.xml │ │ ├── Gradle__androidx_hilt_hilt_navigation_1_0_0_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_2_5_0_aar.xml │ │ ├── Gradle__com_google_errorprone_error_prone_annotations_2_7_1.xml │ │ ├── Gradle__com_google_errorprone_error_prone_annotations_2_9_0.xml │ │ ├── Gradle__com_google_firebase_firebase_encoders_proto_16_0_0.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_31.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_21.xml │ │ ├── Gradle__androidx_compose_foundation_foundation_1_1_1_aar.xml │ │ ├── Gradle__androidx_navigation_navigation_common_2_5_0_aar.xml │ │ ├── Gradle__androidx_compose_ui_ui_test_junit4_1_1_1_aar.xml │ │ ├── Gradle__androidx_navigation_navigation_runtime_2_5_0_aar.xml │ │ ├── Gradle__androidx_savedstate_savedstate_ktx_1_2_0_aar.xml │ │ ├── Gradle__org_jetbrains_kotlin_kotlin_parcelize_runtime_1_6_10.xml │ │ ├── Gradle__androidx_compose_ui_ui_tooling_data_1_1_1_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml │ │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_2_5_0_aar.xml │ │ └── Gradle__androidx_activity_activity_compose_1_5_0_aar.xml ├── core-ui │ ├── .gitignore │ ├── consumer-rules.pro │ ├── src │ │ ├── main │ │ │ ├── ic_launcher-playstore.png │ │ │ ├── res │ │ │ │ ├── font │ │ │ │ │ ├── roboto_bold.ttf │ │ │ │ │ ├── roboto_italic.ttf │ │ │ │ │ ├── roboto_medium.ttf │ │ │ │ │ └── roboto_regular.ttf │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── values │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ └── splash.xml │ │ │ │ ├── drawable │ │ │ │ │ ├── ic_home.xml │ │ │ │ │ ├── ic_logout.xml │ │ │ │ │ ├── ic_wallpaper.xml │ │ │ │ │ └── ic_default_android.xml │ │ │ │ └── values-night │ │ │ │ │ └── themes.xml │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── core_ui │ │ │ │ ├── theme │ │ │ │ ├── Shape.kt │ │ │ │ ├── Color.kt │ │ │ │ └── Dimensions.kt │ │ │ │ └── composables │ │ │ │ └── ComposablesText.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── iprayforgod │ │ │ └── core_ui │ │ │ └── ExampleInstrumentedTest.kt │ ├── build.gradle.kts │ └── proguard-rules.pro ├── core │ ├── .gitignore │ ├── consumer-rules.pro │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── iprayforgod │ │ │ │ │ └── core │ │ │ │ │ ├── platform │ │ │ │ │ ├── base │ │ │ │ │ │ └── BaseViewModel.kt │ │ │ │ │ ├── ui │ │ │ │ │ │ └── uiEvent │ │ │ │ │ │ │ ├── UiEvent.kt │ │ │ │ │ │ │ └── UiText.kt │ │ │ │ │ ├── extensions │ │ │ │ │ │ └── Context.kt │ │ │ │ │ └── functional │ │ │ │ │ │ ├── State.kt │ │ │ │ │ │ └── Resource.kt │ │ │ │ │ ├── data │ │ │ │ │ ├── implementation │ │ │ │ │ │ ├── logger │ │ │ │ │ │ │ └── utilities │ │ │ │ │ │ │ │ ├── KeysFeatureNames.kt │ │ │ │ │ │ │ │ ├── modules │ │ │ │ │ │ │ │ ├── OrHaNoButModule.kt │ │ │ │ │ │ │ │ └── CrashReportingTree.java │ │ │ │ │ │ │ │ └── AppLogger.kt │ │ │ │ │ │ ├── firebase │ │ │ │ │ │ │ ├── utilities │ │ │ │ │ │ │ │ └── endpoints │ │ │ │ │ │ │ │ │ └── Constants.kt │ │ │ │ │ │ │ ├── FirebaseAuthImpl.kt │ │ │ │ │ │ │ └── FirebaseFirestoreImpl.kt │ │ │ │ │ │ ├── preference │ │ │ │ │ │ │ └── utilities │ │ │ │ │ │ │ │ └── KeysPreferences.kt │ │ │ │ │ │ └── parser │ │ │ │ │ │ │ └── ParserFeatureImpl.kt │ │ │ │ │ └── repository │ │ │ │ │ │ ├── firebase │ │ │ │ │ │ ├── FirebaseAuthRepository.kt │ │ │ │ │ │ └── FirebaseFirestoreRepository.kt │ │ │ │ │ │ ├── parser │ │ │ │ │ │ └── ParserRepository.kt │ │ │ │ │ │ └── logger │ │ │ │ │ │ └── LoggerRepository.kt │ │ │ │ │ ├── domain │ │ │ │ │ ├── features │ │ │ │ │ │ ├── analytics │ │ │ │ │ │ │ └── AnalyticsFeature.kt │ │ │ │ │ │ ├── firebase │ │ │ │ │ │ │ ├── FirebaseAuthFeature.kt │ │ │ │ │ │ │ └── FirebaseFirestoreFeature.kt │ │ │ │ │ │ ├── parser │ │ │ │ │ │ │ └── ParserFeature.kt │ │ │ │ │ │ ├── logger │ │ │ │ │ │ │ └── LoggerFeature.kt │ │ │ │ │ │ └── preferences │ │ │ │ │ │ │ └── PreferenceDatastore.kt │ │ │ │ │ └── models │ │ │ │ │ │ ├── RemoteLog.kt │ │ │ │ │ │ ├── DeviceDetails.kt │ │ │ │ │ │ └── User.kt │ │ │ │ │ └── di │ │ │ │ │ ├── qualifiers │ │ │ │ │ └── Dispatchers.kt │ │ │ │ │ └── modules │ │ │ │ │ └── AnalyticsModule.kt │ │ │ └── AndroidManifest.xml │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── iprayforgod │ │ │ └── core │ │ │ └── ExampleUnitTest.kt │ ├── build.gradle.kts │ └── proguard-rules.pro ├── core-mock │ ├── .gitignore │ ├── consumer-rules.pro │ ├── src │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── droid │ │ │ │ └── core_mock │ │ │ │ ├── core │ │ │ │ ├── domain │ │ │ │ │ └── logger │ │ │ │ │ │ └── FakeLoggerFeature.kt │ │ │ │ └── modules │ │ │ │ │ └── logger │ │ │ │ │ └── repository │ │ │ │ │ └── FakeLoggerRepository.kt │ │ │ │ └── features │ │ │ │ └── common │ │ │ │ └── common_domain │ │ │ │ └── repository │ │ │ │ ├── FakeSuccessCommonRepository.kt │ │ │ │ └── FakeFailureMsgCheckCommonRepository.kt │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── droid │ │ │ └── core_mock │ │ │ └── ExampleUnitTest.kt │ ├── build.gradle.kts │ └── proguard-rules.pro ├── app │ ├── .gitignore │ ├── src │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── app │ │ │ │ ├── navigation │ │ │ │ └── Route.kt │ │ │ │ ├── application │ │ │ │ └── IPrayForGodApp.kt │ │ │ │ └── MainVm.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── iprayforggod │ │ │ ├── HiltTestRunner.kt │ │ │ └── end_to_end_tests │ │ │ └── LoginFunctionalityTest.kt │ └── proguard-rules.pro ├── buildSrc │ ├── .gitignore │ ├── src │ │ └── main │ │ │ └── java │ │ │ ├── Kotlin.kt │ │ │ ├── Coil.kt │ │ │ ├── SqlDelight.kt │ │ │ ├── Google.kt │ │ │ ├── Moshi.kt │ │ │ ├── DaggerHilt.kt │ │ │ ├── DataStorePreferences.kt │ │ │ ├── ScriptPlugins.kt │ │ │ ├── Room.kt │ │ │ ├── SplashScreen.kt │ │ │ ├── AndroidX.kt │ │ │ ├── CustomLogging.kt │ │ │ ├── Accompanist.kt │ │ │ ├── Coroutines.kt │ │ │ ├── ProjectConfig.kt │ │ │ ├── FlavourUtils.kt │ │ │ ├── Retrofit.kt │ │ │ ├── Firebase.kt │ │ │ └── Modules.kt │ └── build.gradle.kts ├── features │ ├── common │ │ ├── common_data │ │ │ ├── .gitignore │ │ │ ├── consumer-rules.pro │ │ │ ├── src │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java │ │ │ │ │ │ └── com │ │ │ │ │ │ └── iprayforgod │ │ │ │ │ │ └── common_data │ │ │ │ │ │ ├── repository │ │ │ │ │ │ └── CommonRepositoryImpl.kt │ │ │ │ │ │ └── di │ │ │ │ │ │ └── SaveDataModule.kt │ │ │ │ ├── test │ │ │ │ │ └── java │ │ │ │ │ │ └── com │ │ │ │ │ │ └── iprayforgod │ │ │ │ │ │ └── common_data │ │ │ │ │ │ └── ExampleUnitTest.kt │ │ │ │ └── androidTest │ │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── iprayforgod │ │ │ │ │ └── common_data │ │ │ │ │ └── ExampleInstrumentedTest.kt │ │ │ ├── build.gradle.kts │ │ │ └── proguard-rules.pro │ │ └── common_domain │ │ │ ├── .gitignore │ │ │ ├── consumer-rules.pro │ │ │ ├── src │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── iprayforgod │ │ │ │ │ └── common_domain │ │ │ │ │ ├── repository │ │ │ │ │ └── CommonRepository.kt │ │ │ │ │ ├── usecases │ │ │ │ │ ├── CommonModuleUseCases.kt │ │ │ │ │ └── module │ │ │ │ │ │ └── SaveUserUseCase.kt │ │ │ │ │ └── di │ │ │ │ │ └── CommonDomainModule.kt │ │ │ ├── test │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── iprayforgod │ │ │ │ │ └── common_domain │ │ │ │ │ └── ExampleUnitTest.kt │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── common_domain │ │ │ │ └── ExampleInstrumentedTest.kt │ │ │ ├── build.gradle.kts │ │ │ └── proguard-rules.pro │ └── login │ │ ├── login_data │ │ ├── .gitignore │ │ ├── consumer-rules.pro │ │ ├── src │ │ │ ├── main │ │ │ │ └── AndroidManifest.xml │ │ │ ├── test │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── iprayforgod │ │ │ │ │ └── login_data │ │ │ │ │ └── ExampleUnitTest.kt │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── login_data │ │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── build.gradle.kts │ │ └── proguard-rules.pro │ │ ├── login_domain │ │ ├── .gitignore │ │ ├── consumer-rules.pro │ │ ├── src │ │ │ ├── main │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── iprayforgod │ │ │ │ │ │ └── login_domain │ │ │ │ │ │ ├── entities │ │ │ │ │ │ └── inputs │ │ │ │ │ │ │ ├── ForgotPwdInput.kt │ │ │ │ │ │ │ ├── LoginInput.kt │ │ │ │ │ │ │ └── RegistrationInput.kt │ │ │ │ │ │ ├── utils │ │ │ │ │ │ └── UseCaseUtils.kt │ │ │ │ │ │ ├── ValidationResult.kt │ │ │ │ │ │ ├── service │ │ │ │ │ │ ├── ForgotPwdService.kt │ │ │ │ │ │ ├── LoginService.kt │ │ │ │ │ │ └── RegistrationService.kt │ │ │ │ │ │ ├── usecases │ │ │ │ │ │ ├── forgotPassword │ │ │ │ │ │ │ └── ForgotPwdUseCase.kt │ │ │ │ │ │ ├── login │ │ │ │ │ │ │ └── LoginUserUseCase.kt │ │ │ │ │ │ └── registration │ │ │ │ │ │ │ └── RegisterUserUseCase.kt │ │ │ │ │ │ ├── repository │ │ │ │ │ │ └── LoginRepository.kt │ │ │ │ │ │ └── states │ │ │ │ │ │ └── LoginViewStates.kt │ │ │ │ └── AndroidManifest.xml │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── login_domain │ │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── build.gradle.kts │ │ └── proguard-rules.pro │ │ └── login_presentation │ │ ├── .gitignore │ │ ├── consumer-rules.pro │ │ ├── src │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── login_presentation │ │ │ │ └── states │ │ │ │ ├── forgotPassword │ │ │ │ ├── ForgotPwdUiState.kt │ │ │ │ └── ForgotPwdViewEvent.kt │ │ │ │ ├── login │ │ │ │ ├── LoginUiState.kt │ │ │ │ ├── LoginViewResponseEvent.kt │ │ │ │ └── LoginViewEvent.kt │ │ │ │ └── registration │ │ │ │ ├── RegistrationUiState.kt │ │ │ │ └── RegistrationViewEvent.kt │ │ ├── test │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── iprayforgod │ │ │ │ └── login_presentation │ │ │ │ └── ExampleUnitTest.kt │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── iprayforgod │ │ │ └── login_presentation │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── build.gradle.kts │ │ └── proguard-rules.pro ├── login.png ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties └── settings.gradle └── assets ├── layer.png ├── hilt_img_new.png ├── mvvm_structure.png ├── output ├── login.png ├── forgot_pwd.png └── registration.png ├── MadScore ├── jetpack.png ├── kotlin.png ├── studio.png ├── summary.png └── mad_banner.png ├── KotlinAndroidStudio.png ├── compose_clean_arch.png ├── skeletal_structure_new.png └── Clean-architecture-layered-interaction.png /android/.idea/.name: -------------------------------------------------------------------------------- 1 | iPrayForGod -------------------------------------------------------------------------------- /android/core-ui/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/core/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/core/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/core-mock/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/core-mock/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/core-ui/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | *.json -------------------------------------------------------------------------------- /android/buildSrc/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | build -------------------------------------------------------------------------------- /android/features/common/common_data/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/features/login/login_data/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/features/login/login_data/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/features/login/login_domain/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/features/common/common_data/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/features/common/common_domain/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/features/common/common_domain/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/features/login/login_domain/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/features/login/login_presentation/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Kotlin.kt: -------------------------------------------------------------------------------- 1 | object Kotlin { 2 | const val version = "1.6.10" 3 | } -------------------------------------------------------------------------------- /android/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/login.png -------------------------------------------------------------------------------- /assets/layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/layer.png -------------------------------------------------------------------------------- /assets/hilt_img_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/hilt_img_new.png -------------------------------------------------------------------------------- /assets/mvvm_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/mvvm_structure.png -------------------------------------------------------------------------------- /assets/output/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/output/login.png -------------------------------------------------------------------------------- /assets/MadScore/jetpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/MadScore/jetpack.png -------------------------------------------------------------------------------- /assets/MadScore/kotlin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/MadScore/kotlin.png -------------------------------------------------------------------------------- /assets/MadScore/studio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/MadScore/studio.png -------------------------------------------------------------------------------- /assets/MadScore/summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/MadScore/summary.png -------------------------------------------------------------------------------- /assets/KotlinAndroidStudio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/KotlinAndroidStudio.png -------------------------------------------------------------------------------- /assets/MadScore/mad_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/MadScore/mad_banner.png -------------------------------------------------------------------------------- /assets/compose_clean_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/compose_clean_arch.png -------------------------------------------------------------------------------- /assets/output/forgot_pwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/output/forgot_pwd.png -------------------------------------------------------------------------------- /assets/output/registration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/output/registration.png -------------------------------------------------------------------------------- /assets/skeletal_structure_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/skeletal_structure_new.png -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Coil.kt: -------------------------------------------------------------------------------- 1 | object Coil { 2 | private const val version = "1.3.2" 3 | const val coilCompose = "io.coil-kt:coil-compose:$version" 4 | } -------------------------------------------------------------------------------- /android/buildSrc/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.gradle.kotlin.dsl.`kotlin-dsl` 2 | 3 | repositories { 4 | mavenCentral() 5 | } 6 | 7 | plugins { 8 | `kotlin-dsl` 9 | } -------------------------------------------------------------------------------- /android/core-ui/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/font/roboto_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/font/roboto_bold.ttf -------------------------------------------------------------------------------- /assets/Clean-architecture-layered-interaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/assets/Clean-architecture-layered-interaction.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/font/roboto_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/font/roboto_italic.ttf -------------------------------------------------------------------------------- /android/core-ui/src/main/res/font/roboto_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/font/roboto_medium.ttf -------------------------------------------------------------------------------- /android/core-ui/src/main/res/font/roboto_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/font/roboto_regular.ttf -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/SqlDelight.kt: -------------------------------------------------------------------------------- 1 | object SqlDelight { 2 | private const val version = "1.5.2" 3 | const val repo = "com.squareup.sqldelight:gradle-plugin:$version" 4 | } -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Google.kt: -------------------------------------------------------------------------------- 1 | object Google { 2 | private const val materialVersion = "1.4.0" 3 | const val material = "com.google.android.material:material:$materialVersion" 4 | } -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/core-ui/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devrath/droid-pure-kotlin-application/HEAD/android/core-ui/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/core-mock/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/platform/base/BaseViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.platform.base 2 | 3 | import androidx.lifecycle.ViewModel 4 | 5 | open class BaseViewModel : ViewModel() 6 | -------------------------------------------------------------------------------- /android/core-ui/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/entities/inputs/ForgotPwdInput.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.entities.inputs 2 | 3 | data class ForgotPwdInput(val email: String) 4 | -------------------------------------------------------------------------------- /android/core/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/base-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(DataStorePreferences.datastorePreferences) 7 | "implementation"(AndroidX.coreKtx) 8 | } 9 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/entities/inputs/LoginInput.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.entities.inputs 2 | 3 | data class LoginInput(val email: String, val password: String) 4 | -------------------------------------------------------------------------------- /android/features/common/common_data/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/features/login/login_data/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/features/common/common_domain/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/features/login/login_data/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/base-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(project(Modules.core)) 7 | "implementation"(project(Modules.featureLoginDomain)) 8 | } 9 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Moshi.kt: -------------------------------------------------------------------------------- 1 | object Moshi { 2 | private const val version = "1.13.0" 3 | const val moshiRepo = "com.squareup.moshi:moshi:$version" 4 | const val moshiCodegen = "com.squareup.moshi:moshi-kotlin-codegen:$version" 5 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/logger/utilities/KeysFeatureNames.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.logger.utilities 2 | 3 | object KeysFeatureNames { 4 | const val FEATURE_LOGIN = "Login" 5 | } 6 | -------------------------------------------------------------------------------- /android/features/common/common_data/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/base-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(project(Modules.core)) 7 | "implementation"(project(Modules.featureCommonDomain)) 8 | } 9 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/DaggerHilt.kt: -------------------------------------------------------------------------------- 1 | object DaggerHilt { 2 | const val version = "2.40" 3 | const val hiltAndroid = "com.google.dagger:hilt-android:$version" 4 | const val hiltCompiler = "com.google.dagger:hilt-android-compiler:$version" 5 | } -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/DataStorePreferences.kt: -------------------------------------------------------------------------------- 1 | object DataStorePreferences { 2 | private const val datastorePreferencesVersion = "1.0.0" 3 | const val datastorePreferences = "androidx.datastore:datastore-preferences:$datastorePreferencesVersion" 4 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/firebase/utilities/endpoints/Constants.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.firebase.utilities.endpoints 2 | 3 | object Constants { 4 | const val USERS: String = "users" 5 | } 6 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/ScriptPlugins.kt: -------------------------------------------------------------------------------- 1 | object ScriptPlugins { 2 | const val infrastructure = "scripts.infrastructure" 3 | const val variants = "scripts.variants" 4 | const val quality = "scripts.quality" 5 | const val compilation = "scripts.compilation" 6 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/features/analytics/AnalyticsFeature.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.features.analytics 2 | 3 | interface AnalyticsFeature { 4 | // fun loginStatus(userId: Int, isSuccessful: Boolean, reasonForFailure: String) 5 | } 6 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/features/firebase/FirebaseAuthFeature.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.features.firebase 2 | 3 | import com.google.firebase.auth.FirebaseAuth 4 | 5 | interface FirebaseAuthFeature { 6 | fun getFirebaseAuth(): FirebaseAuth 7 | } 8 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/features/parser/ParserFeature.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.features.parser 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | 5 | interface ParserFeature { 6 | fun convertUserObjectToJson(user: User): String 7 | } 8 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Room.kt: -------------------------------------------------------------------------------- 1 | object Room { 2 | private const val version = "2.4.0" 3 | const val roomRuntime = "androidx.room:room-runtime:$version" 4 | const val roomCompiler = "androidx.room:room-compiler:$version" 5 | const val roomKtx = "androidx.room:room-ktx:$version" 6 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/platform/ui/uiEvent/UiEvent.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.platform.ui.uiEvent 2 | 3 | sealed class UiEvent { 4 | object Success : UiEvent() 5 | object NavigateUp : UiEvent() 6 | data class ShowSnackbar(val message: UiText) : UiEvent() 7 | } 8 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/SplashScreen.kt: -------------------------------------------------------------------------------- 1 | object SplashScreen { 2 | // In Android-11 and above, its automatically provided but for backward compatibility, we include this 3 | private const val version = "1.0.0-rc01" 4 | const val splashAndroidApi = "androidx.core:core-splashscreen:$version" 5 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/models/RemoteLog.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.models 2 | 3 | data class RemoteLog( 4 | var priority: String, 5 | var tag: String?, 6 | var message: String, 7 | var throwable: String?, 8 | val time: String 9 | ) 10 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/AndroidX.kt: -------------------------------------------------------------------------------- 1 | object AndroidX { 2 | private const val coreKtxVersion = "1.7.0" 3 | const val coreKtx = "androidx.core:core-ktx:$coreKtxVersion" 4 | 5 | private const val appCompatVersion = "1.4.0" 6 | const val appCompat = "androidx.appcompat:appcompat:$appCompatVersion" 7 | } -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/CustomLogging.kt: -------------------------------------------------------------------------------- 1 | object CustomLogging { 2 | private const val timberVersion = "5.0.1" 3 | private const val orhanobutVersion = "2.2.0" 4 | const val timber = "com.jakewharton.timber:timber:$timberVersion" 5 | const val orhanobut = "com.orhanobut:logger:$orhanobutVersion" 6 | } -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/utils/UseCaseUtils.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.utils 2 | 3 | object UseCaseUtils { 4 | 5 | fun containsLettersAndDigits(password: String) = password.any { it.isDigit() } && 6 | password.any { it.isLetter() } 7 | } 8 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/forgotPassword/ForgotPwdUiState.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.forgotPassword 2 | 3 | data class ForgotPwdUiState( 4 | val email: String = "", 5 | val isLoaderVisible: Boolean = false 6 | ) 7 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/preference/utilities/KeysPreferences.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.preference.utilities 2 | 3 | object KeysPreferences { 4 | const val SHARED_PREFERENCES_NAME = "preferences_file" 5 | const val KEY_TEXT = "key_text" 6 | } 7 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/features/firebase/FirebaseFirestoreFeature.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.features.firebase 2 | 3 | import com.google.firebase.firestore.FirebaseFirestore 4 | 5 | interface FirebaseFirestoreFeature { 6 | fun getFirebaseFirestore(): FirebaseFirestore 7 | } 8 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/login/LoginUiState.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.login 2 | 3 | data class LoginUiState( 4 | val email: String = "", 5 | val pwd: String = "", 6 | val isLoaderVisible: Boolean = false 7 | ) 8 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/ValidationResult.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain 2 | 3 | import com.iprayforgod.core.platform.ui.uiEvent.UiText 4 | 5 | data class ValidationResult( 6 | val successful: Boolean, 7 | val errorMessage: UiText.StringResource? = null 8 | ) 9 | -------------------------------------------------------------------------------- /android/features/common/common_domain/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/base-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(project(Modules.core)) 7 | "implementation"(Coroutines.coroutineLib) 8 | // For injecting the mocks 9 | "testImplementation"(project(Modules.coreMock)) 10 | } 11 | -------------------------------------------------------------------------------- /android/features/login/login_domain/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/base-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(project(Modules.core)) 7 | "implementation"(Coroutines.coroutineLib) 8 | // For injecting the mocks 9 | "testImplementation"(project(Modules.coreMock)) 10 | } 11 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/iprayforgod/app/navigation/Route.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.app.navigation 2 | 3 | object Route { 4 | const val ON_BOARDING = "on_boarding" 5 | const val HOME = "home" 6 | const val LOGIN = "login" 7 | const val REGISTRATION = "registration" 8 | const val FORGOT_PASSWORD = "forgot_password" 9 | } 10 | -------------------------------------------------------------------------------- /android/core-mock/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/base-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(AndroidX.coreKtx) 7 | "implementation"(project(Modules.core)) 8 | 9 | "implementation"(project(Modules.featureLoginDomain)) 10 | "implementation"(project(Modules.featureCommonDomain)) 11 | } 12 | -------------------------------------------------------------------------------- /android/core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Accompanist.kt: -------------------------------------------------------------------------------- 1 | object Accompanist { 2 | private const val accompanistPagerVersion = "0.24.2-alpha" 3 | const val accompanistPager = "com.google.accompanist:accompanist-pager:$accompanistPagerVersion" 4 | const val accompanistPagerIndicators = "com.google.accompanist:accompanist-pager-indicators:$accompanistPagerVersion" 5 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/platform/extensions/Context.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.platform.extensions 2 | 3 | import android.content.Context 4 | import android.net.ConnectivityManager 5 | 6 | val Context.connectivityManager: ConnectivityManager 7 | get() = 8 | this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager 9 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/entities/inputs/RegistrationInput.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.entities.inputs 2 | 3 | data class RegistrationInput( 4 | val firstName: String, 5 | val lastName: String, 6 | val email: String, 7 | val password: String, 8 | val confirmPassword: String 9 | ) 10 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/drawable/ic_home.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/compose-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(project(Modules.core)) 7 | "implementation"(project(Modules.coreUi)) 8 | "implementation"(project(Modules.featureLoginDomain)) 9 | "implementation"(project(Modules.featureCommonDomain)) 10 | } 11 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF00C713 4 | #FF00790C 5 | #FF000000 6 | #FFFFFFFF 7 | 8 | #FFFFFF 9 | 10 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Coroutines.kt: -------------------------------------------------------------------------------- 1 | object Coroutines { 2 | const val version = "1.6.0" 3 | const val coroutineLib = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version" 4 | const val coroutineAndroidLib = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version" 5 | const val coroutinePlayServicesLib = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$version" 6 | } -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/ProjectConfig.kt: -------------------------------------------------------------------------------- 1 | object ProjectConfig { 2 | const val appId = "com.iprayforgod.app" 3 | const val compileSdk = 31 4 | const val minSdk = 21 5 | const val targetSdk = 31 6 | const val versionCode = 1 7 | const val versionName = "1.0" 8 | const val jvmTarget = "1.8" 9 | const val testRunner = "com.iprayforgod.app.TestRunner" 10 | 11 | } -------------------------------------------------------------------------------- /android/features/common/common_domain/src/main/java/com/iprayforgod/common_domain/repository/CommonRepository.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_domain.repository 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.functional.State 5 | import kotlinx.coroutines.flow.Flow 6 | 7 | interface CommonRepository { 8 | fun saveUser(input: User): Flow> 9 | } 10 | -------------------------------------------------------------------------------- /android/core-ui/src/main/java/com/iprayforgod/core_ui/theme/Shape.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core_ui.theme 2 | 3 | import androidx.compose.foundation.shape.RoundedCornerShape 4 | import androidx.compose.material.Shapes 5 | import androidx.compose.ui.unit.dp 6 | 7 | val Shapes = Shapes( 8 | small = RoundedCornerShape(4.dp), 9 | medium = RoundedCornerShape(4.dp), 10 | large = RoundedCornerShape(0.dp) 11 | ) 12 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/service/ForgotPwdService.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.service 2 | 3 | import com.iprayforgod.core.platform.functional.State 4 | import com.iprayforgod.login_domain.entities.inputs.ForgotPwdInput 5 | import kotlinx.coroutines.flow.Flow 6 | 7 | interface ForgotPwdService { 8 | fun forgotPwd(input: ForgotPwdInput): Flow> 9 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/features/logger/LoggerFeature.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.features.logger 2 | 3 | interface LoggerFeature { 4 | fun d(featureName: String?, msg: String?) 5 | fun e(featureName: String?, msg: String?) 6 | fun w(featureName: String?, msg: String?) 7 | fun v(featureName: String?, msg: String?) 8 | fun i(featureName: String?, msg: String?) 9 | } 10 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/FlavourUtils.kt: -------------------------------------------------------------------------------- 1 | object FlavourUtils { 2 | object BuildTypes { 3 | const val DEBUG = "debug" 4 | const val RELEASE = "release" 5 | } 6 | 7 | object ProductFlavors { 8 | const val DEV = "dev" 9 | const val INTERNAL = "internal" 10 | const val PUBLIC = "public" 11 | } 12 | 13 | object FlavorDimensions { 14 | const val DEFAULT = "default" 15 | } 16 | } -------------------------------------------------------------------------------- /android/core-ui/src/main/res/values/splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /android/features/common/common_domain/src/main/java/com/iprayforgod/common_domain/usecases/CommonModuleUseCases.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_domain.usecases 2 | 3 | import com.iprayforgod.common_domain.usecases.module.SaveUserUseCase 4 | 5 | data class CommonModuleUseCases( 6 | // --> ***************** REPO_CALL ******************* 7 | val saveUserUseCase: SaveUserUseCase 8 | // --> ***************** REPO_CALL ******************* 9 | ) 10 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/registration/RegistrationUiState.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.registration 2 | 3 | data class RegistrationUiState( 4 | val firstName: String = "", 5 | val lastName: String = "", 6 | val email: String = "", 7 | val pwd: String = "", 8 | val confirmPwd: String = "", 9 | val isLoaderVisible: Boolean = false 10 | ) 11 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/di/qualifiers/Dispatchers.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.di.qualifiers 2 | 3 | import javax.inject.Qualifier 4 | 5 | @Retention(AnnotationRetention.BINARY) 6 | @Qualifier 7 | annotation class DefaultDispatcher 8 | 9 | @Retention(AnnotationRetention.BINARY) 10 | @Qualifier 11 | annotation class IoDispatcher 12 | 13 | @Retention(AnnotationRetention.BINARY) 14 | @Qualifier 15 | annotation class MainDispatcher 16 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/service/LoginService.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.service 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.functional.State 5 | import com.iprayforgod.login_domain.entities.inputs.LoginInput 6 | import kotlinx.coroutines.flow.Flow 7 | 8 | interface LoginService { 9 | fun loginUser(input: LoginInput): Flow> 10 | } -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/forgotPassword/ForgotPwdViewEvent.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.forgotPassword 2 | 3 | sealed class ForgotPwdViewEvent { 4 | object OnSubmitClick : ForgotPwdViewEvent() 5 | data class OnViewChangedEmail(val valueEmail: String) : ForgotPwdViewEvent() 6 | data class OnViewLoaderVisibility(val isVisible: Boolean) : ForgotPwdViewEvent() 7 | } 8 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jan 07 19:01:21 CET 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | # Modify the content of this from your machine of Java-11 8 | org.gradle.java.home=/Applications/Android Studio.app/Contents/jvm/jdk-11.0.15.1.jdk 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/features/preferences/PreferenceDatastore.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.features.preferences 2 | 3 | import kotlinx.coroutines.flow.Flow 4 | 5 | interface PreferenceDatastore { 6 | 7 | suspend fun saveCurrentUser(text: String) 8 | suspend fun readCurrentUser(): Flow 9 | 10 | suspend fun saveOnBoardingState(text: Boolean) 11 | suspend fun readOnBoardingState(): Flow 12 | } 13 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/drawable/ic_logout.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/firebase/FirebaseAuthImpl.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.firebase 2 | 3 | import com.google.firebase.auth.FirebaseAuth 4 | import com.iprayforgod.core.domain.features.firebase.FirebaseAuthFeature 5 | 6 | class FirebaseAuthImpl( 7 | private val firebaseAuth: FirebaseAuth 8 | ) : FirebaseAuthFeature { 9 | 10 | override fun getFirebaseAuth(): FirebaseAuth { return firebaseAuth } 11 | } 12 | -------------------------------------------------------------------------------- /android/core/src/test/java/com/iprayforgod/core/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Retrofit.kt: -------------------------------------------------------------------------------- 1 | object Retrofit { 2 | private const val version = "2.9.0" 3 | const val retrofit = "com.squareup.retrofit2:retrofit:$version" 4 | const val moshiConverter = "com.squareup.retrofit2:converter-moshi:$version" 5 | 6 | private const val okHttpVersion = "5.0.0-alpha.2" 7 | const val okHttp = "com.squareup.okhttp3:okhttp:$okHttpVersion" 8 | const val okHttpLoggingInterceptor = "com.squareup.okhttp3:logging-interceptor:$okHttpVersion" 9 | } -------------------------------------------------------------------------------- /android/core-mock/src/test/java/com/droid/core_mock/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.droid.core_mock 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/service/RegistrationService.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.service 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.functional.State 5 | import com.iprayforgod.login_domain.entities.inputs.RegistrationInput 6 | import kotlinx.coroutines.flow.Flow 7 | 8 | interface RegistrationService { 9 | fun registerUser(input: RegistrationInput): Flow> 10 | } -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/repository/firebase/FirebaseAuthRepository.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.repository.firebase 2 | 3 | import com.google.firebase.auth.FirebaseAuth 4 | import com.iprayforgod.core.domain.features.firebase.FirebaseAuthFeature 5 | 6 | class FirebaseAuthRepository( 7 | private val authFeature: FirebaseAuthFeature 8 | ) { 9 | 10 | fun getFirebaseAuth(): FirebaseAuth { 11 | return authFeature.getFirebaseAuth() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/repository/parser/ParserRepository.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.repository.parser 2 | 3 | import com.iprayforgod.core.domain.features.parser.ParserFeature 4 | import com.iprayforgod.core.domain.models.User 5 | 6 | class ParserRepository( 7 | private val parserFeature: ParserFeature 8 | ) { 9 | 10 | fun convertUserObjectToJson(user: User): String { 11 | return parserFeature.convertUserObjectToJson(user) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/features/login/login_data/src/test/java/com/iprayforgod/login_data/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_data 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/features/common/common_data/src/test/java/com/iprayforgod/common_data/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_data 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/platform/functional/State.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.platform.functional 2 | 3 | sealed class State { 4 | class Loading : State() 5 | data class Success(val data: T) : State() 6 | data class Failed(val message: String) : State() 7 | 8 | companion object { 9 | fun loading() = Loading() 10 | fun success(data: T) = Success(data) 11 | fun failed(message: String) = Failed(message) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/features/common/common_domain/src/test/java/com/iprayforgod/common_domain/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_domain 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/core-ui/src/main/java/com/iprayforgod/core_ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core_ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val BrightGreen = Color(0xFF00C713) 6 | val DarkGreen = Color(0xFF00790C) 7 | val Orange = Color(0xFFFFAA00) 8 | val CarbColor = Color(0xFFEEFF00) 9 | val ProteinColor = Orange 10 | val FatColor = Color(0xFFF44336) 11 | val LightGray = Color(0xFF808080) 12 | val MediumGray = Color(0xFF404040) 13 | val DarkGray = Color(0xFF202020) 14 | val TextWhite = Color(0xFFEEEEEE) 15 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/firebase/FirebaseFirestoreImpl.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.firebase 2 | 3 | import com.google.firebase.firestore.FirebaseFirestore 4 | import com.iprayforgod.core.domain.features.firebase.FirebaseFirestoreFeature 5 | 6 | class FirebaseFirestoreImpl( 7 | private val firebaseFirestore: FirebaseFirestore 8 | ) : FirebaseFirestoreFeature { 9 | 10 | override fun getFirebaseFirestore(): FirebaseFirestore { return firebaseFirestore } 11 | } 12 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/repository/firebase/FirebaseFirestoreRepository.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.repository.firebase 2 | 3 | import com.google.firebase.firestore.FirebaseFirestore 4 | import com.iprayforgod.core.domain.features.firebase.FirebaseFirestoreFeature 5 | 6 | class FirebaseFirestoreRepository( 7 | private val fireStore: FirebaseFirestoreFeature 8 | ) { 9 | 10 | fun getFirebaseFirestore(): FirebaseFirestore { 11 | return fireStore.getFirebaseFirestore() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/platform/ui/uiEvent/UiText.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.platform.ui.uiEvent 2 | 3 | import android.content.Context 4 | 5 | sealed class UiText { 6 | data class DynamicString(val text: String) : UiText() 7 | data class StringResource(val resId: Int) : UiText() 8 | 9 | fun asString(context: Context): String { 10 | return when (this) { 11 | is DynamicString -> text 12 | is StringResource -> context.getString(resId) 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/test/java/com/iprayforgod/login_presentation/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/login/LoginViewResponseEvent.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.login 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.ui.uiEvent.UiText 5 | 6 | sealed class LoginViewResponseEvent { 7 | object SaveUserSuccess : LoginViewResponseEvent() 8 | data class ShowSnackbar(val message: UiText) : LoginViewResponseEvent() 9 | data class LoginApiSuccess(val user: User) : LoginViewResponseEvent() 10 | } 11 | -------------------------------------------------------------------------------- /android/core-ui/src/main/java/com/iprayforgod/core_ui/theme/Dimensions.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core_ui.theme 2 | 3 | import androidx.compose.runtime.compositionLocalOf 4 | import androidx.compose.ui.unit.Dp 5 | import androidx.compose.ui.unit.dp 6 | 7 | data class Dimensions( 8 | val default: Dp = 0.dp, 9 | val spaceExtraSmall: Dp = 4.dp, 10 | val spaceSmall: Dp = 8.dp, 11 | val spaceMedium: Dp = 16.dp, 12 | val spaceLarge: Dp = 32.dp, 13 | val spaceExtraLarge: Dp = 64.dp 14 | ) 15 | 16 | val LocalSpacing = compositionLocalOf { Dimensions() } 17 | -------------------------------------------------------------------------------- /android/core-mock/src/main/java/com/droid/core_mock/core/domain/logger/FakeLoggerFeature.kt: -------------------------------------------------------------------------------- 1 | package com.droid.core_mock.core.domain.logger 2 | 3 | import com.iprayforgod.core.domain.features.logger.LoggerFeature 4 | 5 | class FakeLoggerFeature : LoggerFeature { 6 | override fun d(featureName: String?, msg: String?) {} 7 | override fun e(featureName: String?, msg: String?) {} 8 | override fun w(featureName: String?, msg: String?) {} 9 | override fun v(featureName: String?, msg: String?) {} 10 | override fun i(featureName: String?, msg: String?) {} 11 | } 12 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/iprayforgod/app/application/IPrayForGodApp.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.app.application 2 | 3 | import android.app.Application 4 | import com.iprayforgod.app.BuildConfig 5 | import com.iprayforgod.core.data.implementation.logger.utilities.AppLoggerConfig 6 | import dagger.hilt.android.HiltAndroidApp 7 | 8 | @HiltAndroidApp 9 | class IPrayForGodApp : Application() { 10 | override fun onCreate() { 11 | super.onCreate() 12 | if (BuildConfig.DEBUG) { 13 | AppLoggerConfig(this).initializeLogging() 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/models/DeviceDetails.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.models 2 | 3 | import android.os.Build 4 | 5 | data class DeviceDetails( 6 | val deviceId: String, 7 | val osVersion: String = Build.VERSION.RELEASE, 8 | val manufacturer: String = Build.MANUFACTURER, 9 | val brand: String = Build.BRAND, 10 | val device: String = Build.DEVICE, 11 | val model: String = Build.MODEL 12 | /*val appVersionName: String = BuildConfig.VERSION_NAME, 13 | val appVersionCode: Int = BuildConfig.VERSION_CODE*/ 14 | ) 15 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/androidTest/java/com/iprayforggod/HiltTestRunner.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforggod 2 | 3 | import android.app.Application 4 | import android.content.Context 5 | import androidx.test.runner.AndroidJUnitRunner 6 | import dagger.hilt.android.testing.HiltTestApplication 7 | 8 | class HiltTestRunner : AndroidJUnitRunner() { 9 | 10 | override fun newApplication( 11 | cl: ClassLoader?, 12 | className: String?, 13 | context: Context? 14 | ): Application { 15 | return super.newApplication(cl, HiltTestApplication::class.java.name, context) 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /android/features/common/common_domain/src/main/java/com/iprayforgod/common_domain/usecases/module/SaveUserUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_domain.usecases.module 2 | 3 | import com.iprayforgod.common_domain.repository.CommonRepository 4 | import com.iprayforgod.core.domain.models.User 5 | import com.iprayforgod.core.platform.functional.State 6 | import kotlinx.coroutines.flow.Flow 7 | 8 | class SaveUserUseCase( 9 | private val commonRepository: CommonRepository 10 | ) { 11 | 12 | operator fun invoke(user: User): Flow> { 13 | return commonRepository.saveUser(user) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/drawable/ic_wallpaper.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_room_room_common_2_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_room_room_common_2_4_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/iprayforgod/app/MainVm.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.app 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.viewModelScope 5 | import kotlinx.coroutines.delay 6 | import kotlinx.coroutines.flow.MutableStateFlow 7 | import kotlinx.coroutines.flow.asStateFlow 8 | import kotlinx.coroutines.launch 9 | 10 | class MainVm : ViewModel() { 11 | 12 | private val _isLoading = MutableStateFlow(true) 13 | val isLoading = _isLoading.asStateFlow() 14 | 15 | init { 16 | viewModelScope.launch { 17 | delay(0) 18 | _isLoading.value = false 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /android/core-mock/src/main/java/com/droid/core_mock/features/common/common_domain/repository/FakeSuccessCommonRepository.kt: -------------------------------------------------------------------------------- 1 | package com.droid.core_mock.features.common.common_domain.repository 2 | 3 | import com.iprayforgod.common_domain.repository.CommonRepository 4 | import com.iprayforgod.core.domain.models.User 5 | import com.iprayforgod.core.platform.functional.State 6 | import kotlinx.coroutines.flow.Flow 7 | import kotlinx.coroutines.flow.flow 8 | 9 | class FakeSuccessCommonRepository : CommonRepository { 10 | override fun saveUser(input: User): Flow> { 11 | return flow { emit(State.success(Unit)) } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/core-ui/build.gradle.kts: -------------------------------------------------------------------------------- 1 | apply { 2 | from("$rootDir/compose-module.gradle") 3 | } 4 | 5 | dependencies { 6 | "implementation"(Compose.compiler) 7 | "implementation"(Compose.ui) 8 | "implementation"(Compose.uiToolingPreview) 9 | "implementation"(Compose.hiltNavigationCompose) 10 | "implementation"(Compose.material) 11 | "implementation"(Compose.runtime) 12 | "implementation"(Compose.navigation) 13 | "implementation"(Compose.viewModelCompose) 14 | "implementation"(Compose.activityCompose) 15 | 16 | "implementation"(Google.material) 17 | 18 | "implementation"(SplashScreen.splashAndroidApi) 19 | } 20 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/login/LoginViewEvent.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.login 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | 5 | sealed class LoginViewEvent { 6 | object OnLoginViewClick : LoginViewEvent() 7 | data class LoginSaveUserToPreference(val user: User) : LoginViewEvent() 8 | data class OnViewChangedEmail(val valueEmail: String) : LoginViewEvent() 9 | data class OnViewChangedPassword(val valuePwd: String) : LoginViewEvent() 10 | data class OnViewLoaderVisibility(val isVisible: Boolean) : LoginViewEvent() 11 | } 12 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_annotation_annotation_1_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_room_room_migration_2_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/usecases/forgotPassword/ForgotPwdUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.usecases.forgotPassword 2 | 3 | import com.iprayforgod.core.platform.functional.State 4 | import com.iprayforgod.login_domain.entities.inputs.ForgotPwdInput 5 | import com.iprayforgod.login_domain.repository.LoginRepository 6 | import kotlinx.coroutines.flow.Flow 7 | 8 | class ForgotPwdUseCase( 9 | private val loginRepo: LoginRepository 10 | ) { 11 | 12 | operator fun invoke(input: ForgotPwdInput): Flow> { 13 | return loginRepo.forgotPassword(input) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/domain/models/User.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.domain.models 2 | 3 | import android.os.Parcelable 4 | import com.squareup.moshi.JsonClass 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * A data model class for User with required fields. 9 | */ 10 | @JsonClass(generateAdapter = true) 11 | @Parcelize 12 | data class User( 13 | val id: String = "", 14 | val firstName: String = "", 15 | val lastName: String = "", 16 | val email: String = "", 17 | val image: String = "", 18 | val mobile: Long = 0, 19 | val gender: String = "", 20 | val profileCompleted: Int = 0 21 | ) : Parcelable 22 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_datastore_datastore_core_1_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/usecases/login/LoginUserUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.usecases.login 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.functional.State 5 | import com.iprayforgod.login_domain.entities.inputs.LoginInput 6 | import com.iprayforgod.login_domain.repository.LoginRepository 7 | import kotlinx.coroutines.flow.Flow 8 | 9 | class LoginUserUseCase( 10 | private val loginRepo: LoginRepository 11 | ) { 12 | 13 | operator fun invoke(input: LoginInput): Flow> { 14 | return loginRepo.loginUser(input) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_reflect_1_5_31.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/parser/ParserFeatureImpl.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.parser 2 | 3 | import com.iprayforgod.core.domain.features.parser.ParserFeature 4 | import com.iprayforgod.core.domain.models.User 5 | import com.squareup.moshi.JsonAdapter 6 | import com.squareup.moshi.Moshi 7 | 8 | class ParserFeatureImpl( 9 | private val moshi: Moshi 10 | ) : ParserFeature { 11 | 12 | override fun convertUserObjectToJson(user: User): String { 13 | val jsonAdapter: JsonAdapter = moshi.adapter(User::class.java) 14 | jsonAdapter.toJson(user)?.let { return it } ?: run { return "" } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/di/modules/AnalyticsModule.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.di.modules 2 | 3 | import com.google.firebase.analytics.FirebaseAnalytics 4 | import com.google.firebase.analytics.ktx.analytics 5 | import com.google.firebase.ktx.Firebase 6 | import dagger.Module 7 | import dagger.Provides 8 | import dagger.hilt.InstallIn 9 | import dagger.hilt.components.SingletonComponent 10 | import javax.inject.Singleton 11 | 12 | @Module 13 | @InstallIn(SingletonComponent::class) 14 | object AnalyticsModule { 15 | 16 | @Provides 17 | @Singleton 18 | fun provideAnalytics(): FirebaseAnalytics { 19 | return Firebase.analytics 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_compiler_compiler_1_2_0_alpha07.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/usecases/registration/RegisterUserUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.usecases.registration 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.functional.State 5 | import com.iprayforgod.login_domain.entities.inputs.RegistrationInput 6 | import com.iprayforgod.login_domain.repository.LoginRepository 7 | import kotlinx.coroutines.flow.Flow 8 | 9 | class RegisterUserUseCase( 10 | private val loginRepo: LoginRepository 11 | ) { 12 | 13 | operator fun invoke(input: RegistrationInput): Flow> { 14 | return loginRepo.registerUser(input) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/core-mock/src/main/java/com/droid/core_mock/core/modules/logger/repository/FakeLoggerRepository.kt: -------------------------------------------------------------------------------- 1 | package com.droid.core_mock.core.modules.logger.repository 2 | 3 | import com.droid.core_mock.core.domain.logger.FakeLoggerFeature 4 | import com.iprayforgod.core.data.repository.logger.LoggerRepository 5 | 6 | class FakeLoggerRepository : LoggerRepository(loggerFeature = FakeLoggerFeature()) { 7 | override fun d(featureName: String?, msg: String?) { } 8 | override fun e(featureName: String?, msg: String?) { } 9 | override fun w(featureName: String?, msg: String?) { } 10 | override fun v(featureName: String?, msg: String?) { } 11 | override fun i(featureName: String?, msg: String?) { } 12 | } 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_java8_2_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 3 | repositories { 4 | google() 5 | mavenCentral() 6 | jcenter() // Warning: this repository is going to shut down soon 7 | } 8 | } 9 | rootProject.name = "iPrayForGod" 10 | include ':app' 11 | include ':core' 12 | include ':core-ui' 13 | include ':features' 14 | include ':features:login' 15 | include ':features:login:login_data' 16 | include ':features:login:login_domain' 17 | include ':features:login:login_presentation' 18 | include ':features:common' 19 | include ':features:common:common_data' 20 | include ':features:common:common_domain' 21 | include ':core-mock' 22 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_datastore_datastore_preferences_core_1_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_ow2_asm_asm_9_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/repository/LoginRepository.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.repository 2 | 3 | import com.iprayforgod.core.domain.models.User 4 | import com.iprayforgod.core.platform.functional.State 5 | import com.iprayforgod.login_domain.entities.inputs.ForgotPwdInput 6 | import com.iprayforgod.login_domain.entities.inputs.LoginInput 7 | import com.iprayforgod.login_domain.entities.inputs.RegistrationInput 8 | import kotlinx.coroutines.flow.Flow 9 | 10 | interface LoginRepository { 11 | fun registerUser(input: RegistrationInput): Flow> 12 | fun loginUser(input: LoginInput): Flow> 13 | fun forgotPassword(input: ForgotPwdInput): Flow> 14 | } 15 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_ibm_icu_icu4j_53_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_mockk_mockk_1_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_json_json_20201115.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/repository/logger/LoggerRepository.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.repository.logger 2 | 3 | import com.iprayforgod.core.domain.features.logger.LoggerFeature 4 | 5 | open class LoggerRepository( 6 | private val loggerFeature: LoggerFeature 7 | ) { 8 | open fun d(featureName: String?, msg: String?) { loggerFeature.d(featureName, msg) } 9 | open fun e(featureName: String?, msg: String?) { loggerFeature.e(featureName, msg) } 10 | open fun w(featureName: String?, msg: String?) { loggerFeature.w(featureName, msg) } 11 | open fun v(featureName: String?, msg: String?) { loggerFeature.v(featureName, msg) } 12 | open fun i(featureName: String?, msg: String?) { loggerFeature.i(featureName, msg) } 13 | } 14 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_junit_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_utils_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_ow2_asm_asm_tree_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_ow2_asm_asm_util_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/logger/utilities/modules/OrHaNoButModule.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.logger.utilities.modules 2 | 3 | import android.content.Context 4 | import com.iprayforgod.core.data.implementation.logger.utilities.adapters.AndroidDiskLogAdapter 5 | import com.iprayforgod.core.data.implementation.logger.utilities.adapters.AndroidLogCatAdapter 6 | import com.orhanobut.logger.Logger 7 | 8 | class OrHaNoButModule { 9 | 10 | fun initialize(context: Context) { 11 | // Log to be displayed in LogCat 12 | Logger.addLogAdapter(AndroidLogCatAdapter().initiate()) 13 | // Log to be saved in the disk 14 | Logger.addLogAdapter(AndroidDiskLogAdapter().initiate(context)) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/features/common/common_data/src/main/java/com/iprayforgod/common_data/repository/CommonRepositoryImpl.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_data.repository 2 | 3 | import com.iprayforgod.common_data.service.preferences.SaveUserService 4 | import com.iprayforgod.common_domain.repository.CommonRepository 5 | import com.iprayforgod.core.domain.models.User 6 | import com.iprayforgod.core.platform.functional.State 7 | import kotlinx.coroutines.flow.Flow 8 | import javax.inject.Inject 9 | 10 | class CommonRepositoryImpl @Inject constructor( 11 | private val saveUserService: SaveUserService 12 | ) : CommonRepository { 13 | 14 | // --> SAVE-USER 15 | override fun saveUser(input: User): Flow> { 16 | return saveUserService.saveUser(input) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_grpc_grpc_api_1_44_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_grpc_grpc_core_1_44_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_grpc_grpc_stub_1_44_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_sandbox_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_truth_truth_1_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_okio_okio_2_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_mockk_mockk_dsl_1_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_objenesis_objenesis_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_dagger_dagger_2_40.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/logger/utilities/AppLogger.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.logger.utilities 2 | 3 | import com.iprayforgod.core.data.implementation.logger.utilities.AppLoggerConfig.Companion.TAG_LOG_CAT 4 | import timber.log.Timber 5 | 6 | /** 7 | * Android Log wrapper class that can use [String.format] in logging message 8 | */ 9 | object AppLogger { 10 | fun d(msg: String?) { msg?.let { Timber.tag(TAG_LOG_CAT).d(it) } } 11 | fun e(msg: String?) { msg?.let { Timber.tag(TAG_LOG_CAT).e(it) } } 12 | fun w(msg: String?) { msg?.let { Timber.tag(TAG_LOG_CAT).w(it) } } 13 | fun v(msg: String?) { msg?.let { Timber.tag(TAG_LOG_CAT).v(it) } } 14 | fun i(msg: String?) { msg?.let { Timber.tag(TAG_LOG_CAT).i(it) } } 15 | } 16 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_okio_okio_2_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_grpc_grpc_okhttp_1_44_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_ow2_asm_asm_commons_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_pluginapi_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_resources_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_shadowapi_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/platform/functional/Resource.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.platform.functional 2 | 3 | /** 4 | * By making a class a sealed class, We will be telling the compiler that only the sub-classes possible are the ones that we can put in here 5 | * *** 6 | * On comparing when with sealed class: -> When condition will have a else case but a sealed class already knows the number of conditions it has so there is no scenario of else condition 7 | */ 8 | sealed class Resource( 9 | val data: T? = null, 10 | val error: Throwable? = null 11 | ) { 12 | class Success(data: T) : Resource(data) 13 | class Loading(data: T? = null) : Resource(data) 14 | class Error(throwable: Throwable, data: T? = null) : Resource(data, throwable) 15 | } 16 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_ow2_asm_asm_analysis_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_moshi_moshi_1_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_grpc_grpc_context_1_44_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core-mock/src/main/java/com/droid/core_mock/features/common/common_domain/repository/FakeFailureMsgCheckCommonRepository.kt: -------------------------------------------------------------------------------- 1 | package com.droid.core_mock.features.common.common_domain.repository 2 | 3 | import com.iprayforgod.common_domain.repository.CommonRepository 4 | import com.iprayforgod.core.domain.models.User 5 | import com.iprayforgod.core.platform.functional.State 6 | import kotlinx.coroutines.flow.Flow 7 | import kotlinx.coroutines.flow.flow 8 | 9 | class FakeFailureMsgCheckCommonRepository : CommonRepository { 10 | 11 | companion object { 12 | const val FAILURE_MSG_SAVE_USER = "Saving the user failed for the repository" 13 | } 14 | 15 | override fun saveUser(input: User): Flow> { 16 | return flow { emit(State.failed(FAILURE_MSG_SAVE_USER)) } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_okhttp_okhttp_2_7_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/androidTest/java/com/iprayforggod/end_to_end_tests/LoginFunctionalityTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforggod.end_to_end_tests 2 | 3 | import androidx.compose.ui.ExperimentalComposeUiApi 4 | import androidx.compose.ui.test.junit4.createAndroidComposeRule 5 | import androidx.navigation.NavHostController 6 | import com.iprayforgod.app.MainActivity 7 | import dagger.hilt.android.testing.HiltAndroidRule 8 | import dagger.hilt.android.testing.HiltAndroidTest 9 | import org.junit.Rule 10 | 11 | @ExperimentalComposeUiApi 12 | @HiltAndroidTest 13 | class LoginFunctionalityTest { 14 | 15 | @get:Rule 16 | val hiltRule = HiltAndroidRule(this) 17 | 18 | @get:Rule 19 | val composeRule = createAndroidComposeRule() 20 | 21 | 22 | private lateinit var navController: NavHostController 23 | 24 | 25 | } -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_dagger_hilt_core_2_40.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_mockk_mockk_dsl_jvm_1_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_mockito_mockito_core_3_6_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_annotations_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_robolectric_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__net_bytebuddy_byte_buddy_1_10_15.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_annotations_20_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_mockk_mockk_common_1_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__app_cash_turbine_turbine_jvm_0_7_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_mockito_mockito_inline_3_6_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_retrofit2_retrofit_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core-ui/src/main/res/drawable/ic_default_android.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_utils_reflector_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle.kts. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/core-mock/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/core-ui/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/core/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle.kts. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_guava_failureaccess_1_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__io_grpc_grpc_protobuf_lite_1_44_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_bouncycastle_bcprov_jdk15on_1_68.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Firebase.kt: -------------------------------------------------------------------------------- 1 | object Firebase { 2 | private const val firebaseBomVersion = "30.2.0" 3 | const val googleFirebase = "com.google.firebase:firebase-bom:$firebaseBomVersion" 4 | 5 | const val firebaseKtx = "com.google.firebase:firebase-common-ktx" 6 | const val firebaseDatabaseKtx = "com.google.firebase:firebase-database-ktx" 7 | const val firebaseAnalytics = "com.google.firebase:firebase-analytics" 8 | const val firebaseCrashlyticsKtx = "com.google.firebase:firebase-crashlytics-ktx" 9 | const val firebaseAnalyticsKtx = "com.google.firebase:firebase-analytics-ktx" 10 | const val firebaseAuthKtx = "com.google.firebase:firebase-auth-ktx" 11 | 12 | const val firebaseFirestoreKtx = "com.google.firebase:firebase-firestore-ktx" 13 | const val firebaseStorageKtx = "com.google.firebase:firebase-storage-ktx" 14 | } -------------------------------------------------------------------------------- /android/core-ui/src/androidTest/java/com/iprayforgod/core_ui/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core_ui 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.com.iprayforgod.core_ui.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/main/java/com/iprayforgod/login_presentation/states/registration/RegistrationViewEvent.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation.states.registration 2 | 3 | sealed class RegistrationViewEvent { 4 | object OnRegisterViewClick : RegistrationViewEvent() 5 | data class OnViewChangedFirstName(val valueFirstName: String) : RegistrationViewEvent() 6 | data class OnViewChangedLastName(val valueLastName: String) : RegistrationViewEvent() 7 | data class OnViewChangedEmail(val valueEmail: String) : RegistrationViewEvent() 8 | data class OnViewChangedPassword(val valuePwd: String) : RegistrationViewEvent() 9 | data class OnViewChangedConfirmPassword(val valueConfirmPwd: String) : RegistrationViewEvent() 10 | data class OnViewLoaderVisibility(val isVisible: Boolean) : RegistrationViewEvent() 11 | } 12 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_guava_guava_30_1_1_android.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_robolectric_shadows_framework_4_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/features/login/login_data/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/features/common/common_data/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/features/common/common_domain/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/features/login/login_data/src/androidTest/java/com/iprayforgod/login_data/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_data 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.droid.login_data.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/features/login/login_domain/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/features/login/login_domain/src/main/java/com/iprayforgod/login_domain/states/LoginViewStates.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain.states 2 | 3 | import com.iprayforgod.core.platform.ui.uiEvent.UiText 4 | import com.iprayforgod.login_domain.ValidationResult 5 | 6 | sealed class LoginViewStates { 7 | object InitialState : LoginViewStates() 8 | object NoConnectivity : LoginViewStates() 9 | data class Loading(val isLoading: Boolean) : LoginViewStates() 10 | data class LoginStatus(val isUserLoggedIn: Boolean) : LoginViewStates() 11 | data class EmailValidationStatus(val result: ValidationResult) : LoginViewStates() 12 | data class PasswordValidationStatus(val result: ValidationResult) : LoginViewStates() 13 | object LoginValidationSuccessful : LoginViewStates() 14 | data class ErrorState(val errorMessage: UiText) : LoginViewStates() 15 | } 16 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_sqlite_sqlite_2_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_okhttp3_mockwebserver_4_9_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_checkerframework_checker_qual_3_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/features/common/common_data/src/androidTest/java/com/iprayforgod/common_data/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_data 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.droid.common_data.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__net_bytebuddy_byte_buddy_agent_1_10_15.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/features/login/login_domain/src/androidTest/java/com/iprayforgod/login_domain/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_domain 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.droid.login_domain.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_j2objc_j2objc_annotations_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_5_0_0_alpha_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_5_31.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_21.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/features/common/common_data/src/main/java/com/iprayforgod/common_data/di/SaveDataModule.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_data.di 2 | 3 | import com.iprayforgod.common_data.repository.CommonRepositoryImpl 4 | import com.iprayforgod.common_data.service.preferences.SaveUserService 5 | import com.iprayforgod.common_domain.repository.CommonRepository 6 | import dagger.Module 7 | import dagger.Provides 8 | import dagger.hilt.InstallIn 9 | import dagger.hilt.components.SingletonComponent 10 | import javax.inject.Singleton 11 | 12 | @Module 13 | @InstallIn(SingletonComponent::class) 14 | object SaveDataModule { 15 | 16 | @Provides 17 | @Singleton 18 | fun provideLoginRepository( 19 | saveUserService: SaveUserService 20 | ): CommonRepository { 21 | return CommonRepositoryImpl( 22 | saveUserService = saveUserService 23 | ) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /android/features/common/common_domain/src/androidTest/java/com/iprayforgod/common_domain/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_domain 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.droid.common_domain.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_almworks_sqlite4java_sqlite4java_1_0_392.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_squareup_retrofit2_converter_moshi_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/features/login/login_presentation/src/androidTest/java/com/iprayforgod/login_presentation/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.login_presentation 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 20 | assertEquals("com.droid.login_presentation.test", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_core_core_ktx_1_7_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_room_room_ktx_2_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_firebase_firebase_encoders_17_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_protobuf_protobuf_javalite_3_19_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_3_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_test_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_text_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_unit_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_nhaarman_mockitokotlin2_mockito_kotlin_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/core/src/main/java/com/iprayforgod/core/data/implementation/logger/utilities/modules/CrashReportingTree.java: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core.data.implementation.logger.utilities.modules; 2 | 3 | import android.util.Log; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import timber.log.Timber; 8 | 9 | public class CrashReportingTree extends Timber.Tree { 10 | @Override protected void log(int priority, String tag, @NonNull String message, Throwable t) { 11 | if (priority == Log.VERBOSE || priority == Log.DEBUG) { 12 | return; 13 | } 14 | 15 | /*FakeCrashLibrary.log(priority, tag, message); 16 | 17 | if (t != null) { 18 | if (priority == Log.ERROR) { 19 | FakeCrashLibrary.logError(t); 20 | } else if (priority == Log.WARN) { 21 | FakeCrashLibrary.logWarning(t); 22 | } 23 | }*/ 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_checkerframework_checker_compat_qual_2_5_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_5_31.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_5_31.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_datastore_datastore_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_runtime_runtime_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_firebase_firebase_annotations_16_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_tooling_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__junit_junit_4_13_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_material_material_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_sqlite_sqlite_framework_2_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/buildSrc/src/main/java/Modules.kt: -------------------------------------------------------------------------------- 1 | object Modules { 2 | const val app = ":app" 3 | 4 | const val core = ":core" 5 | const val coreUi = ":core-ui" 6 | 7 | const val coreMock = ":core-mock" 8 | 9 | // -------------------- Login --------------------------> 10 | const val featureLogin = ":features:login" 11 | const val featureLoginData = ":features:login:login_data" 12 | const val featureLoginDomain = ":features:login:login_domain" 13 | const val featureLoginPresentation = ":features:login:login_presentation" 14 | // -------------------- Login --------------------------> 15 | 16 | // -------------------- Common ------------------------> 17 | const val featureCommon = ":features:common" 18 | const val featureCommonData = ":features:common:common_data" 19 | const val featureCommonDomain = ":features:common:common_domain" 20 | // -------------------- Common ------------------------> 21 | 22 | } -------------------------------------------------------------------------------- /android/core-ui/src/main/java/com/iprayforgod/core_ui/composables/ComposablesText.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.core_ui.composables 2 | 3 | import androidx.compose.material.Text 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.graphics.Color 6 | import androidx.compose.ui.text.TextStyle 7 | import androidx.compose.ui.text.font.FontFamily 8 | import androidx.compose.ui.text.style.TextAlign 9 | import androidx.compose.ui.unit.TextUnit 10 | import androidx.compose.ui.unit.sp 11 | 12 | @Composable 13 | fun CustomText( 14 | contentValue: String, 15 | textColor: Color, 16 | textAlign: TextAlign = TextAlign.Start, 17 | fontSize: TextUnit = 9.sp 18 | ) { 19 | Text( 20 | text = contentValue, 21 | color = textColor, 22 | textAlign = textAlign, 23 | style = TextStyle( 24 | fontSize = fontSize, 25 | fontFamily = FontFamily.Monospace 26 | ) 27 | ) 28 | } 29 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_activity_activity_ktx_1_5_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_geometry_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_graphics_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_auto_value_auto_value_annotations_1_8_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_animation_animation_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_hilt_hilt_navigation_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_5_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_errorprone_error_prone_annotations_2_7_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_errorprone_error_prone_annotations_2_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__com_google_firebase_firebase_encoders_proto_16_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_5_31.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_21.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/features/common/common_domain/src/main/java/com/iprayforgod/common_domain/di/CommonDomainModule.kt: -------------------------------------------------------------------------------- 1 | package com.iprayforgod.common_domain.di 2 | 3 | import com.iprayforgod.common_domain.repository.CommonRepository 4 | import com.iprayforgod.common_domain.usecases.CommonModuleUseCases 5 | import com.iprayforgod.common_domain.usecases.module.SaveUserUseCase 6 | import dagger.Module 7 | import dagger.Provides 8 | import dagger.hilt.InstallIn 9 | import dagger.hilt.android.components.ViewModelComponent 10 | import dagger.hilt.android.scopes.ViewModelScoped 11 | 12 | @Module 13 | @InstallIn(ViewModelComponent::class) 14 | object CommonDomainModule { 15 | 16 | @ViewModelScoped 17 | @Provides 18 | fun provideTrackerUseCases( 19 | commonRepo: CommonRepository 20 | ): CommonModuleUseCases { 21 | return CommonModuleUseCases( 22 | saveUserUseCase = SaveUserUseCase(commonRepository = commonRepo) 23 | ) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_foundation_foundation_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_navigation_navigation_common_2_5_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_test_junit4_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_navigation_navigation_runtime_2_5_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_savedstate_savedstate_ktx_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_parcelize_runtime_1_6_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_compose_ui_ui_tooling_data_1_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_5_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/.idea/libraries/Gradle__androidx_activity_activity_compose_1_5_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | --------------------------------------------------------------------------------