From cff0a52359cfcbe8ea2a3341e8c9095ade09ff4d Mon Sep 17 00:00:00 2001 From: stslex Date: Tue, 23 Apr 2024 06:29:18 +0300 Subject: [PATCH 1/5] refactor feature builder --- .../core/ui/base/DaggerViewModel.kt | 20 +++++-- .../core/ui/di/MainUiProvider.kt | 5 -- .../core/ui/di/builder/Feature.kt | 4 ++ .../core/ui/di/builder/FeatureBuilder.kt | 54 +++++++++++++++---- .../core/ui/di/builder/FeatureCollector.kt | 16 ++++++ .../collection/di/SingleCollectionBuilder.kt | 4 +- .../favourite/di/FavouriteComponentBuilder.kt | 4 +- .../feature/home/di/HomeComponentBuilder.kt | 4 +- .../di/ImageDetailComponentBuilder.kt | 4 +- .../search/di/SearchPhotosComponentBuilder.kt | 4 +- .../feature/user/di/UserComponentBuilder.kt | 11 ++-- 11 files changed, 92 insertions(+), 38 deletions(-) create mode 100644 core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureCollector.kt diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt index fbb0df7e..718b854b 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt @@ -9,9 +9,9 @@ import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import st.slex.csplashscreen.core.navigation.AppDestination +import st.slex.csplashscreen.core.ui.di.MainUiProvider import st.slex.csplashscreen.core.ui.di.builder.Feature import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -import st.slex.csplashscreen.core.ui.di.mainUiApi @Composable inline fun daggerViewModel( @@ -24,14 +24,21 @@ inline fun daggerViewModel( ) @Composable -inline fun setupComponent( +inline fun setupComponent( builder: FeatureBuilder, key: String? = null, + featureKey: Any? = null ): VM { val context = LocalContext.current + val mainUiApi = checkNotNull(context as? MainUiProvider) { + "MainUiProvider is not implemented in $context" + }.api DisposableEffect(Unit) { - builder.create(context.mainUiApi) + builder.setup( + mainUiApi = mainUiApi, + key = featureKey + ) onDispose { builder.clear() } @@ -39,12 +46,15 @@ inline fun setupComponent( return daggerViewModel(key) { builder - .build(context.mainUiApi) + .build( + mainUiApi = mainUiApi, + key = featureKey + ) .viewModelFactory } } -inline fun NavGraphBuilder.createScreen( +inline fun NavGraphBuilder.createScreen( appDestination: AppDestination, featureBuilder: FeatureBuilder, crossinline content: @Composable (VM, List) -> Unit diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/MainUiProvider.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/MainUiProvider.kt index 58671743..9edb4aa8 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/MainUiProvider.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/MainUiProvider.kt @@ -1,11 +1,6 @@ package st.slex.csplashscreen.core.ui.di -import android.content.Context - interface MainUiProvider { val api: MainUiApi } - -val Context.mainUiApi: MainUiApi - get() = (this as MainUiProvider).api diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/Feature.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/Feature.kt index 1cd48a3d..81d05af0 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/Feature.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/Feature.kt @@ -4,5 +4,9 @@ import androidx.lifecycle.ViewModelProvider interface Feature { + /** + * This property is used to get the ViewModelFactory of the feature + * @return ViewModelProvider.Factory + * */ val viewModelFactory: ViewModelProvider.Factory } diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureBuilder.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureBuilder.kt index 487694fa..f72c1912 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureBuilder.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureBuilder.kt @@ -2,20 +2,54 @@ package st.slex.csplashscreen.core.ui.di.builder import st.slex.csplashscreen.core.ui.di.MainUiApi -interface FeatureBuilder { +abstract class FeatureBuilder { - var feature: F? + /** This property is used to get the key of the feature */ + abstract val key: Any - fun create(mainUiApi: MainUiApi): F + /** + * This method is used to create a new instance of the feature + * @param mainUiApi - the mainUiApi instance + */ + abstract fun create(mainUiApi: MainUiApi): F - fun build( - mainUiApi: MainUiApi - ): F = feature ?: create(mainUiApi) - .also { createdFeature -> - feature = createdFeature - } + /** + * This method is used to get the feature from the FeatureCollector + * or create a new instance of the feature and add it to the FeatureCollector + * @param key - the key of the feature + * @param mainUiApi - the mainUiApi instance + */ + inline fun build( + mainUiApi: MainUiApi, + key: Any? = null, + ): T = FeatureCollector.get(keyBuilder(key)) as? T + ?: setup(mainUiApi, key) as T + /** + * This method is used to create a new instance of the feature + * and add it to the FeatureCollector + * @param key - the key of the feature + * @param mainUiApi - the mainUiApi instance + */ + fun setup( + mainUiApi: MainUiApi, + key: Any? = null, + ): F = create(mainUiApi).also { createdFeature -> + FeatureCollector.add(keyBuilder(key), createdFeature) + } + + /** + * This method is used to remove the feature from the FeatureCollector + */ fun clear() { - feature = null + FeatureCollector.remove(key) } + + /** + * This method is used to get the key of the feature + * @param extraKey - the extra key of the feature + */ + fun keyBuilder( + extraKey: Any? + ): Any = extraKey?.let { "$key:$it" } ?: key } diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureCollector.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureCollector.kt new file mode 100644 index 00000000..3d92371b --- /dev/null +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/di/builder/FeatureCollector.kt @@ -0,0 +1,16 @@ +package st.slex.csplashscreen.core.ui.di.builder + +object FeatureCollector { + + private val features: MutableMap = mutableMapOf() + + fun get(key: Any): Feature? = features[key] + + internal fun add(key: Any, feature: Feature) { + features[key] = feature + } + + internal fun remove(key: Any) { + features.remove(key) + } +} \ No newline at end of file diff --git a/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/di/SingleCollectionBuilder.kt b/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/di/SingleCollectionBuilder.kt index 98749e53..5f33584f 100644 --- a/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/di/SingleCollectionBuilder.kt +++ b/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/di/SingleCollectionBuilder.kt @@ -4,9 +4,9 @@ import st.slex.csplashscreen.core.network.di.NetworkApiBuilder import st.slex.csplashscreen.core.ui.di.MainUiApi import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -object SingleCollectionBuilder : FeatureBuilder { +object SingleCollectionBuilder : FeatureBuilder() { - override var feature: SingleCollectionComponent? = null + override val key: Any = "single-collection-feature" override fun create( mainUiApi: MainUiApi diff --git a/feature/favourite/src/main/java/st/slex/csplashscreen/feature/favourite/di/FavouriteComponentBuilder.kt b/feature/favourite/src/main/java/st/slex/csplashscreen/feature/favourite/di/FavouriteComponentBuilder.kt index 8b58ebcc..b0940a44 100644 --- a/feature/favourite/src/main/java/st/slex/csplashscreen/feature/favourite/di/FavouriteComponentBuilder.kt +++ b/feature/favourite/src/main/java/st/slex/csplashscreen/feature/favourite/di/FavouriteComponentBuilder.kt @@ -4,9 +4,9 @@ import st.slex.csplashscreen.core.favourite.di.FavouriteApiBuilder import st.slex.csplashscreen.core.ui.di.MainUiApi import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -object FavouriteComponentBuilder : FeatureBuilder { +object FavouriteComponentBuilder : FeatureBuilder() { - override var feature: FavouriteComponent? = null + override val key: Any = "favorite-feature" override fun create( mainUiApi: MainUiApi diff --git a/feature/home/src/main/java/st/slex/csplashscreen/feature/home/di/HomeComponentBuilder.kt b/feature/home/src/main/java/st/slex/csplashscreen/feature/home/di/HomeComponentBuilder.kt index 8ddc29dd..de23d1c0 100644 --- a/feature/home/src/main/java/st/slex/csplashscreen/feature/home/di/HomeComponentBuilder.kt +++ b/feature/home/src/main/java/st/slex/csplashscreen/feature/home/di/HomeComponentBuilder.kt @@ -5,9 +5,9 @@ import st.slex.csplashscreen.core.photos.di.PhotosApiBuilder import st.slex.csplashscreen.core.ui.di.MainUiApi import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -object HomeComponentBuilder : FeatureBuilder { +object HomeComponentBuilder : FeatureBuilder() { - override var feature: HomeComponent? = null + override val key: Any = "home-feature" override fun create( mainUiApi: MainUiApi diff --git a/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/di/ImageDetailComponentBuilder.kt b/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/di/ImageDetailComponentBuilder.kt index 25a2a61d..8918f583 100644 --- a/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/di/ImageDetailComponentBuilder.kt +++ b/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/di/ImageDetailComponentBuilder.kt @@ -5,9 +5,9 @@ import st.slex.csplashscreen.core.photos.di.PhotosApiBuilder import st.slex.csplashscreen.core.ui.di.MainUiApi import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -object ImageDetailComponentBuilder : FeatureBuilder { +object ImageDetailComponentBuilder : FeatureBuilder() { - override var feature: ImageDetailComponent? = null + override val key: Any = "image-detail-feature" override fun create(mainUiApi: MainUiApi) = DaggerImageDetailComponent .factory() diff --git a/feature/search/src/main/java/st/slex/csplashscreen/feature/search/di/SearchPhotosComponentBuilder.kt b/feature/search/src/main/java/st/slex/csplashscreen/feature/search/di/SearchPhotosComponentBuilder.kt index 78f65a71..2d0e0f67 100644 --- a/feature/search/src/main/java/st/slex/csplashscreen/feature/search/di/SearchPhotosComponentBuilder.kt +++ b/feature/search/src/main/java/st/slex/csplashscreen/feature/search/di/SearchPhotosComponentBuilder.kt @@ -5,9 +5,9 @@ import st.slex.csplashscreen.core.network.di.NetworkApiBuilder import st.slex.csplashscreen.core.ui.di.MainUiApi import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -object SearchPhotosComponentBuilder : FeatureBuilder { +object SearchPhotosComponentBuilder : FeatureBuilder() { - override var feature: SearchPhotosComponent? = null + override val key: Any = "search-photos-feature" override fun create( mainUiApi: MainUiApi diff --git a/feature/user/src/main/java/st/slex/csplashscreen/feature/user/di/UserComponentBuilder.kt b/feature/user/src/main/java/st/slex/csplashscreen/feature/user/di/UserComponentBuilder.kt index 25c767da..f9c42cc6 100644 --- a/feature/user/src/main/java/st/slex/csplashscreen/feature/user/di/UserComponentBuilder.kt +++ b/feature/user/src/main/java/st/slex/csplashscreen/feature/user/di/UserComponentBuilder.kt @@ -6,13 +6,11 @@ import st.slex.csplashscreen.core.photos.di.PhotosApiBuilder import st.slex.csplashscreen.core.ui.di.MainUiApi import st.slex.csplashscreen.core.ui.di.builder.FeatureBuilder -object UserComponentBuilder : FeatureBuilder { +object UserComponentBuilder : FeatureBuilder() { - override var feature: UserComponent? = null + override val key: Any = "user-feature" - override fun create( - mainUiApi: MainUiApi - ) = feature ?: DaggerUserComponent + override fun create(mainUiApi: MainUiApi) = DaggerUserComponent .factory() .create( dependencies = DaggerUserComponent_UserDependenciesComponent @@ -24,7 +22,4 @@ object UserComponentBuilder : FeatureBuilder { collectionApi = CollectionApiBuilder.build(mainUiApi) ) ) - .also { component -> - feature = component - } } From 93b8e4b74e461d6bce82db843b3eeda8b3f14d65 Mon Sep 17 00:00:00 2001 From: stslex Date: Tue, 23 Apr 2024 07:16:41 +0300 Subject: [PATCH 2/5] update_version_test --- .github/scripts/update_versions.sh | 38 +++++++++++++++++++ .../AndroidApplicationConventionPlugin.kt | 11 ++++-- .../src/main/kotlin/AppVersions.kt | 24 ++++++++++++ .../st.slex.csplashscreen/ComposeAndroid.kt | 11 ++---- .../st.slex.csplashscreen/KotlinAndroid.kt | 12 +++--- gradle/libs.versions.toml | 6 +++ 6 files changed, 85 insertions(+), 17 deletions(-) create mode 100644 .github/scripts/update_versions.sh diff --git a/.github/scripts/update_versions.sh b/.github/scripts/update_versions.sh new file mode 100644 index 00000000..6ce05972 --- /dev/null +++ b/.github/scripts/update_versions.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Define the initial script directory +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +project_dir="$(dirname "$script_dir")" +project_dir="$(dirname "$project_dir")" +echo "Project script directory: $project_dir" + +# Define the path to the target file +version_file="$project_dir/gradle/libs.versions.toml" + +# Check if the target file exists +if [ -f "$version_file" ]; then + echo "Target file found: $version_file" +else + echo "Target file not found" + exit 1 # Exit the script if the target file is not found +fi + +# Read versionName and versionCode from the file +version_name=$(awk -F '"' '/versionName = "/{print $2}' "$version_file") +version_code=$(awk -F '"' '/versionCode = "/{print $2}' "$version_file") + +# Increment versionCode by 1 +((version_code++)) + +# Increment versionName by 0.01 +version_name=$(echo "$version_name + 0.01" | bc) + +# Update the file with the new version information +sed "s/versionName = \".*\"/versionName = \"$version_name\"/" "$version_file" > "$version_file.tmp" +mv "$version_file.tmp" "$version_file" + +sed "s/versionCode = \".*\"/versionCode = \"$version_code\"/" "$version_file" > "$version_file.tmp" +mv "$version_file.tmp" "$version_file" + +echo "Updated versionName to $version_name and versionCode to $version_code in $version_file" + diff --git a/build-logic/dependencies/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/dependencies/src/main/kotlin/AndroidApplicationConventionPlugin.kt index e79f55d9..af5a2ade 100644 --- a/build-logic/dependencies/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/dependencies/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -1,3 +1,6 @@ +import AppExt.currentLibs +import AppExt.findVersionInt +import AppExt.findVersionString import com.android.build.api.dsl.ApplicationExtension import org.gradle.api.Plugin import org.gradle.api.Project @@ -12,6 +15,7 @@ class AndroidApplicationConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { + val libs = currentLibs with(pluginManager) { apply("com.android.application") apply("org.jetbrains.kotlin.android") @@ -22,12 +26,11 @@ class AndroidApplicationConventionPlugin : Plugin { configureKotlinAndroid(this) namespace = "st.slex.csplashscreen" - defaultConfig.apply { applicationId = "st.slex.csplashscreen" - targetSdk = 34 - versionName = AppVersions.VERSION_NAME - versionCode = AppVersions.VERSION_CODE + targetSdk = libs.findVersionInt("targetSdk") + versionName = libs.findVersionString("versionName") + versionCode = libs.findVersionInt("versionCode") configureSigning(target) } diff --git a/build-logic/dependencies/src/main/kotlin/AppVersions.kt b/build-logic/dependencies/src/main/kotlin/AppVersions.kt index 554230c4..a9bb6065 100644 --- a/build-logic/dependencies/src/main/kotlin/AppVersions.kt +++ b/build-logic/dependencies/src/main/kotlin/AppVersions.kt @@ -1,4 +1,28 @@ +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType + object AppVersions { const val VERSION_NAME = "1.71" const val VERSION_CODE = 17 +} + +object AppExt { + + /** + * Get the version catalog for the project + * */ + val Project.currentLibs: VersionCatalog + get() = extensions.getByType().named("libs") + + /** + * Find the version of the library + */ + fun VersionCatalog.findVersionInt(name: String) = findVersionString(name).toInt() + + /** + * Find the version of the library + */ + fun VersionCatalog.findVersionString(name: String) = findVersion(name).get().toString() } \ No newline at end of file diff --git a/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/ComposeAndroid.kt b/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/ComposeAndroid.kt index 18437947..2718cf5e 100644 --- a/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/ComposeAndroid.kt +++ b/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/ComposeAndroid.kt @@ -1,10 +1,10 @@ package st.slex.csplashscreen +import AppExt.currentLibs +import AppExt.findVersionString import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -14,15 +14,12 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile internal fun Project.configureAndroidCompose( commonExtension: CommonExtension<*, *, *, *, *, *>, ) { - val libs = extensions.getByType().named("libs") + val libs = currentLibs commonExtension.apply { buildFeatures.compose = true - composeOptions.kotlinCompilerExtensionVersion = libs - .findVersion("composeCompiler") - .get() - .toString() + composeOptions.kotlinCompilerExtensionVersion = libs.findVersionString("composeCompiler") dependencies { val composeBom = libs.findLibrary("androidx-compose-bom").get() diff --git a/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/KotlinAndroid.kt b/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/KotlinAndroid.kt index 6e3f1281..fbd8812f 100644 --- a/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/KotlinAndroid.kt +++ b/build-logic/dependencies/src/main/kotlin/st.slex.csplashscreen/KotlinAndroid.kt @@ -1,14 +1,14 @@ package st.slex.csplashscreen +import AppExt.currentLibs +import AppExt.findVersionInt import com.android.build.api.dsl.CommonExtension import com.android.build.api.dsl.DefaultConfig import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties import org.gradle.api.JavaVersion import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.provideDelegate import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions @@ -21,12 +21,14 @@ import org.jetbrains.kotlin.konan.properties.Properties internal fun Project.configureKotlinAndroid( commonExtension: CommonExtension<*, *, *, *, *, *>, ) { + val libs = currentLibs + commonExtension.apply { - compileSdk = 34 + compileSdk = libs.findVersionInt("compileSdk") defaultConfig { - minSdk = 28 + minSdk = libs.findVersionInt("minSdk") buildFeatures.buildConfig = true gradleLocalProperties( @@ -48,8 +50,6 @@ internal fun Project.configureKotlinAndroid( configureKotlin() - val libs = extensions.getByType().named("libs") - dependencies { add("coreLibraryDesugaring", libs.findLibrary("android-desugarJdkLibs").get()) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ec3b4c81..81bed826 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,6 +3,12 @@ androidDesugarJdkLibs = "2.0.4" kotlin = "1.9.23" androidGradlePlugin = "8.3.1" +minSdk = "28" +targetSdk = "34" +compileSdk = "34" +versionName = "1.71" +versionCode = "17" + ktx = "1.12.0" material = "1.11.0" appcompat = "1.6.1" From 6bd9088907ddce6bf81961a4275d56e28a3cf24c Mon Sep 17 00:00:00 2001 From: stslex Date: Tue, 23 Apr 2024 08:01:17 +0300 Subject: [PATCH 3/5] ci update versions --- .github/workflows/android_build.yml | 2 +- .github/workflows/android_deploy_beta.yml | 21 +++++++++++++++++++-- .github/workflows/android_deploy_prod.yml | 21 +++++++++++++++++++-- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/.github/workflows/android_build.yml b/.github/workflows/android_build.yml index 39e3df59..64f85abd 100644 --- a/.github/workflows/android_build.yml +++ b/.github/workflows/android_build.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout branch - uses: actions/checkout@v2 + uses: actions/checkout@v4 - run: | echo "${{ secrets.KEYSTORE }}" > keystore.jks.asc gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch keystore.jks.asc > keystore.jks diff --git a/.github/workflows/android_deploy_beta.yml b/.github/workflows/android_deploy_beta.yml index 8aee1356..d838fa5f 100644 --- a/.github/workflows/android_deploy_beta.yml +++ b/.github/workflows/android_deploy_beta.yml @@ -1,6 +1,8 @@ name: Android Deploy Beta on: + push: + branches: [ dev ] workflow_dispatch: jobs: @@ -10,12 +12,15 @@ jobs: timeout-minutes: 60 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - run: | echo "${{ secrets.KEYSTORE }}" > keystore.jks.asc gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch keystore.jks.asc > keystore.jks + - name: Update Version + run: bash ./.github/scripts/update_versions.sh + - uses: ruby/setup-ruby@v1.152.0 with: ruby-version: '2.7.0' @@ -79,4 +84,16 @@ jobs: base64 -d -i play_config.json.b64 > play_config.json - name: Distribute app to Beta track 🚀 - run: bundle exec fastlane beta \ No newline at end of file + run: bundle exec fastlane beta + + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -a -m "update version" + + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.PUSH_TOKEN }} + branch: ${{ github.ref }} \ No newline at end of file diff --git a/.github/workflows/android_deploy_prod.yml b/.github/workflows/android_deploy_prod.yml index 31c1d8db..1a37847e 100644 --- a/.github/workflows/android_deploy_prod.yml +++ b/.github/workflows/android_deploy_prod.yml @@ -1,6 +1,8 @@ name: Android Deploy Prod on: + push: + branches: [ main ] workflow_dispatch: jobs: @@ -10,12 +12,15 @@ jobs: timeout-minutes: 60 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - run: | echo "${{ secrets.KEYSTORE }}" > keystore.jks.asc gpg -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch keystore.jks.asc > keystore.jks + - name: Update Version + run: bash ./.github/scripts/update_versions.sh + - uses: ruby/setup-ruby@v1.152.0 with: ruby-version: '2.7.0' @@ -79,4 +84,16 @@ jobs: base64 -d -i play_config.json.b64 > play_config.json - name: Distribute app to Beta track 🚀 - run: bundle exec fastlane deploy \ No newline at end of file + run: bundle exec fastlane deploy + + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git commit -a -m "update version" + + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.PUSH_TOKEN }} + branch: ${{ github.ref }} \ No newline at end of file From 674c95367191014a51956acde0dcc3c1ca804623 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 05:31:58 +0000 Subject: [PATCH 4/5] update version --- fastlane/report.xml | 8 +++----- gradle/libs.versions.toml | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/fastlane/report.xml b/fastlane/report.xml index a509e063..18414dbe 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -5,19 +5,17 @@ - + - + - - - + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 81bed826..7deac531 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,8 +6,8 @@ androidGradlePlugin = "8.3.1" minSdk = "28" targetSdk = "34" compileSdk = "34" -versionName = "1.71" -versionCode = "17" +versionName = "1.72" +versionCode = "18" ktx = "1.12.0" material = "1.11.0" From f32c1beaab4825ded425fc89aa6434a155e0cc9c Mon Sep 17 00:00:00 2001 From: stslex Date: Tue, 23 Apr 2024 08:47:44 +0300 Subject: [PATCH 5/5] update versions, disable auto publish --- .github/workflows/android_deploy_beta.yml | 2 +- .github/workflows/android_deploy_prod.yml | 2 -- gradle/libs.versions.toml | 17 +++++++++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/android_deploy_beta.yml b/.github/workflows/android_deploy_beta.yml index d838fa5f..bccec8ef 100644 --- a/.github/workflows/android_deploy_beta.yml +++ b/.github/workflows/android_deploy_beta.yml @@ -2,7 +2,7 @@ name: Android Deploy Beta on: push: - branches: [ dev ] + branches: [ main ] workflow_dispatch: jobs: diff --git a/.github/workflows/android_deploy_prod.yml b/.github/workflows/android_deploy_prod.yml index 1a37847e..4987469f 100644 --- a/.github/workflows/android_deploy_prod.yml +++ b/.github/workflows/android_deploy_prod.yml @@ -1,8 +1,6 @@ name: Android Deploy Prod on: - push: - branches: [ main ] workflow_dispatch: jobs: diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7deac531..950f0972 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] androidDesugarJdkLibs = "2.0.4" kotlin = "1.9.23" -androidGradlePlugin = "8.3.1" +androidGradlePlugin = "8.3.2" minSdk = "28" targetSdk = "34" @@ -9,18 +9,19 @@ compileSdk = "34" versionName = "1.72" versionCode = "18" -ktx = "1.12.0" +ktx = "1.13.0" material = "1.11.0" appcompat = "1.6.1" immutableCollection = "0.3.5" lifecycle = "2.7.0" coroutines = "1.7.3" - -composeCompiler = "1.5.11" -composeBom = "2024.03.00" -composeNavigation = "2.7.2" +#suppress UnusedProperty +composeCompiler = "1.5.12" +composeBom = "2024.04.01" +composeNavigation = "2.7.7" accompanist = "0.30.0" -coilCompose = "2.4.0" +coilCompose = "2.5.0" +composeActivity = "1.9.0" ktor = "2.3.6" ktorAndroid = "2.2.4" @@ -54,7 +55,7 @@ lifecycle-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel- coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } -androidx-compose-activity = "androidx.activity:activity-compose:1.8.2" +androidx-compose-activity = { group = "androidx.activity", name = "activity-compose", version.ref = "composeActivity" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" } androidx-compose-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }