From 0a2e7659675bf3beee6f25500398c5e614499aea Mon Sep 17 00:00:00 2001 From: motorro Date: Mon, 26 Jan 2026 18:51:04 +0100 Subject: [PATCH 1/8] Common flow host and API Refs: #11 --- .idea/deploymentTargetSelector.xml | 3 + .idea/gradle.xml | 5 + .idea/inspectionProfiles/Project_Default.xml | 5 + .../commonstatemachine/flow/CommonFlowApi.kt | 23 +++ .../commonstatemachine/flow/CommonFlowHost.kt | 11 ++ examples/androidcore/build.gradle.kts | 1 + .../statemachine/androidcore/compose/Error.kt | 84 ++++++++ .../androidcore/compose/Loading.kt | 4 +- examples/di/api/.gitignore | 1 + examples/di/api/build.gradle.kts | 71 +++++++ examples/di/api/consumer-rules.pro | 0 examples/di/api/proguard-rules.pro | 21 ++ .../motorro/statemachine/di/api/AuthApi.kt | 61 ++++++ .../statemachine/di/api/AuthFlowHost.kt | 22 +++ .../statemachine/di/api/SessionManager.kt | 33 ++++ .../statemachine/di/api/data/Session.kt | 29 +++ examples/di/app/.gitignore | 1 + examples/di/app/build.gradle.kts | 139 +++++++++++++ examples/di/app/proguard-rules.pro | 21 ++ examples/di/app/src/main/AndroidManifest.xml | 35 ++++ .../com/motorro/statemachine/di/app/App.kt | 30 +++ .../statemachine/di/app/MainActivity.kt | 69 +++++++ .../statemachine/di/app/MainViewModel.kt | 36 ++++ .../statemachine/di/app/data/MainGesture.kt | 25 +++ .../statemachine/di/app/data/MainUiState.kt | 24 +++ .../di/app/di/ApplicationModule.kt | 30 +++ .../statemachine/di/app/di/MainModule.kt | 27 +++ .../di/app/session/SessionManagerImpl.kt | 30 +++ .../statemachine/di/app/state/AuthProxy.kt | 63 ++++++ .../di/app/state/BaseMainState.kt | 25 +++ .../statemachine/di/app/state/Content.kt | 67 +++++++ .../statemachine/di/app/state/MainContext.kt | 21 ++ .../statemachine/di/app/state/MainFactory.kt | 67 +++++++ .../di/app/state/UpdatingSession.kt | 47 +++++ .../statemachine/di/app/ui/MainScreen.kt | 90 +++++++++ .../statemachine/di/app/ui/MainScreenView.kt | 93 +++++++++ .../drawable-v24/ic_launcher_foreground.xml | 43 ++++ .../res/drawable/ic_launcher_background.xml | 183 ++++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 18 ++ .../mipmap-anydpi-v26/ic_launcher_round.xml | 18 ++ .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../di/app/src/main/res/values/colors.xml | 23 +++ .../di/app/src/main/res/values/strings.xml | 20 ++ .../di/app/src/main/res/values/themes.xml | 20 ++ .../di/app/src/main/res/xml/backup_rules.xml | 26 +++ .../main/res/xml/data_extraction_rules.xml | 32 +++ .../com/motorro/statemachine/di/app/mock.kt | 21 ++ .../di/app/state/BaseStateTest.kt | 71 +++++++ .../statemachine/di/app/state/ContentTest.kt | 111 +++++++++++ examples/di/login/.gitignore | 1 + examples/di/login/build.gradle.kts | 87 +++++++++ examples/di/login/consumer-rules.pro | 0 examples/di/login/proguard-rules.pro | 21 ++ .../statemachine/di/login/LoginConstants.kt | 25 +++ .../statemachine/di/login/LoginDataApi.kt | 64 ++++++ .../di/login/data/LoginDataState.kt | 22 +++ .../di/login/data/LoginGesture.kt | 23 +++ .../di/login/data/LoginUiState.kt | 22 +++ .../di/login/di/LoginFlowModule.kt | 38 ++++ .../di/login/state/BaseLoginState.kt | 34 ++++ .../statemachine/di/login/state/Error.kt | 42 ++++ .../statemachine/di/login/state/FormState.kt | 60 ++++++ .../statemachine/di/login/state/LoggingIn.kt | 62 ++++++ .../di/login/state/LoginContext.kt | 24 +++ .../di/login/state/LoginFactory.kt | 76 ++++++++ .../statemachine/di/login/ui/LoginFormView.kt | 75 +++++++ .../statemachine/di/login/ui/LoginScreen.kt | 34 ++++ .../di/login/state/BaseStateTest.kt | 72 +++++++ .../di/login/state/FormStateTest.kt | 131 +++++++++++++ examples/di/social/.gitignore | 1 + examples/di/social/build.gradle.kts | 88 +++++++++ examples/di/social/consumer-rules.pro | 0 examples/di/social/proguard-rules.pro | 21 ++ .../statemachine/di/social/SocialConstants.kt | 22 +++ .../statemachine/di/social/SocialDataApi.kt | 63 ++++++ .../di/social/data/SocialGesture.kt | 21 ++ .../di/social/data/SocialUiState.kt | 21 ++ .../di/social/di/SocialFlowModule.kt | 38 ++++ .../di/social/state/BaseSocialState.kt | 34 ++++ .../statemachine/di/social/state/FormState.kt | 38 ++++ .../statemachine/di/social/state/LoggingIn.kt | 52 +++++ .../di/social/state/SocialContext.kt | 24 +++ .../di/social/state/SocialFactory.kt | 66 +++++++ .../di/social/ui/SocialFormView.kt | 69 +++++++ .../statemachine/di/social/ui/SocialScreen.kt | 28 +++ settings.gradle.kts | 6 +- 95 files changed, 3402 insertions(+), 3 deletions(-) create mode 100644 commonstatemachine/src/commonMain/kotlin/com/motorro/commonstatemachine/flow/CommonFlowApi.kt create mode 100644 commonstatemachine/src/commonMain/kotlin/com/motorro/commonstatemachine/flow/CommonFlowHost.kt create mode 100644 examples/androidcore/src/main/java/com/motorro/statemachine/androidcore/compose/Error.kt create mode 100644 examples/di/api/.gitignore create mode 100644 examples/di/api/build.gradle.kts create mode 100644 examples/di/api/consumer-rules.pro create mode 100644 examples/di/api/proguard-rules.pro create mode 100644 examples/di/api/src/main/kotlin/com/motorro/statemachine/di/api/AuthApi.kt create mode 100644 examples/di/api/src/main/kotlin/com/motorro/statemachine/di/api/AuthFlowHost.kt create mode 100644 examples/di/api/src/main/kotlin/com/motorro/statemachine/di/api/SessionManager.kt create mode 100644 examples/di/api/src/main/kotlin/com/motorro/statemachine/di/api/data/Session.kt create mode 100644 examples/di/app/.gitignore create mode 100644 examples/di/app/build.gradle.kts create mode 100644 examples/di/app/proguard-rules.pro create mode 100644 examples/di/app/src/main/AndroidManifest.xml create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/App.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/MainActivity.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/MainViewModel.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/data/MainGesture.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/data/MainUiState.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/di/ApplicationModule.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/di/MainModule.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/session/SessionManagerImpl.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/state/AuthProxy.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/state/BaseMainState.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/state/Content.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/state/MainContext.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/state/MainFactory.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/state/UpdatingSession.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/ui/MainScreen.kt create mode 100644 examples/di/app/src/main/kotlin/com/motorro/statemachine/di/app/ui/MainScreenView.kt create mode 100644 examples/di/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 examples/di/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 examples/di/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 examples/di/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 examples/di/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 examples/di/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 examples/di/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 examples/di/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 examples/di/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 examples/di/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 examples/di/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 examples/di/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 examples/di/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 examples/di/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 examples/di/app/src/main/res/values/colors.xml create mode 100644 examples/di/app/src/main/res/values/strings.xml create mode 100644 examples/di/app/src/main/res/values/themes.xml create mode 100644 examples/di/app/src/main/res/xml/backup_rules.xml create mode 100644 examples/di/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 examples/di/app/src/test/kotlin/com/motorro/statemachine/di/app/mock.kt create mode 100644 examples/di/app/src/test/kotlin/com/motorro/statemachine/di/app/state/BaseStateTest.kt create mode 100644 examples/di/app/src/test/kotlin/com/motorro/statemachine/di/app/state/ContentTest.kt create mode 100644 examples/di/login/.gitignore create mode 100644 examples/di/login/build.gradle.kts create mode 100644 examples/di/login/consumer-rules.pro create mode 100644 examples/di/login/proguard-rules.pro create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/LoginConstants.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/LoginDataApi.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/data/LoginDataState.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/data/LoginGesture.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/data/LoginUiState.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/di/LoginFlowModule.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/state/BaseLoginState.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/state/Error.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/state/FormState.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/state/LoggingIn.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/state/LoginContext.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/state/LoginFactory.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/ui/LoginFormView.kt create mode 100644 examples/di/login/src/main/kotlin/com/motorro/statemachine/di/login/ui/LoginScreen.kt create mode 100644 examples/di/login/src/test/kotlin/com/motorro/statemachine/di/login/state/BaseStateTest.kt create mode 100644 examples/di/login/src/test/kotlin/com/motorro/statemachine/di/login/state/FormStateTest.kt create mode 100644 examples/di/social/.gitignore create mode 100644 examples/di/social/build.gradle.kts create mode 100644 examples/di/social/consumer-rules.pro create mode 100644 examples/di/social/proguard-rules.pro create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/SocialConstants.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/SocialDataApi.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/data/SocialGesture.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/data/SocialUiState.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/di/SocialFlowModule.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/state/BaseSocialState.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/state/FormState.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/state/LoggingIn.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/state/SocialContext.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/state/SocialFactory.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/ui/SocialFormView.kt create mode 100644 examples/di/social/src/main/kotlin/main/kotlin/com/motorro/statemachine/di/social/ui/SocialScreen.kt diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index bf3356d..aad7e48 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -20,6 +20,9 @@ + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2b26efb..9d5b075 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -15,6 +15,11 @@