From 6d683b881c307c48e79e4f1462015e0d1efe8909 Mon Sep 17 00:00:00 2001 From: ryan-conway Date: Mon, 1 Apr 2024 03:25:51 +0000 Subject: [PATCH 1/8] [Chore] Bump version to 3.29.0 --- sample-compose/buildSrc/src/main/java/Versions.kt | 2 +- version.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-compose/buildSrc/src/main/java/Versions.kt b/sample-compose/buildSrc/src/main/java/Versions.kt index cf87e968..5ee485de 100644 --- a/sample-compose/buildSrc/src/main/java/Versions.kt +++ b/sample-compose/buildSrc/src/main/java/Versions.kt @@ -6,7 +6,7 @@ object Versions { const val ANDROID_TARGET_SDK_VERSION = 33 const val ANDROID_VERSION_CODE = 1 - const val ANDROID_VERSION_NAME = "3.27.0" + const val ANDROID_VERSION_NAME = "3.29.0" // Dependencies (Alphabet sorted) const val ACCOMPANIST_PERMISSIONS_VERSION = "0.30.1" diff --git a/version.properties b/version.properties index 01c96840..59413f15 100644 --- a/version.properties +++ b/version.properties @@ -1,3 +1,3 @@ kotlinVersion=1.6.21 kscriptVersion=4.0.3 -templateScriptVersion=3.27.0 +templateScriptVersion=3.29.0 From 0cfe4275a05976a5b144dc8e8a1fcb6f19353398 Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Thu, 4 Apr 2024 10:20:53 +0700 Subject: [PATCH 2/8] [Chore] Update codeowners --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 393c6dcb..5ebe1710 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,6 @@ # Team # @ryan-conway is the Team Lead and the others are team members -* @AVI5HEK @chornerman @doannimble @hoangnguyen92dn @kaungkhantsoe @luongvo @lydiasama @manh-t @minhnimble @ryan-conway @sleepylee @thiennguyen0196 @toby-thanathip @Wadeewee +* @AVI5HEK @chornerman @doannimble @hoangnguyen92dn @Johnsonmaung @kaungkhantsoe @luongvo @manh-t @minhnimble @ryan-conway @sleepylee @thiennguyen0196 @toby-thanathip # Engineering Leads CODEOWNERS @nimblehq/engineering-leads From f5a71bd6df5adc90977b9d88bc0db77eac5df066 Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Mon, 6 Nov 2023 10:44:32 +0700 Subject: [PATCH 3/8] [#525] Define create_release_pr workflow to automate Release PR creating --- .../workflows/config/changelog-release.json | 35 ++++++++++ .github/workflows/create_release_pr.yml | 66 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 .github/workflows/config/changelog-release.json create mode 100644 .github/workflows/create_release_pr.yml diff --git a/.github/workflows/config/changelog-release.json b/.github/workflows/config/changelog-release.json new file mode 100644 index 00000000..34c62941 --- /dev/null +++ b/.github/workflows/config/changelog-release.json @@ -0,0 +1,35 @@ +{ + "categories": [ + { + "title": "## โœจ Features", + "labels": [ + "type : feature" + ], + "empty_content": "N/A" + }, + { + "title": "## ๐Ÿ› Bug fixes", + "labels": [ + "type : bug" + ], + "empty_content": "N/A" + }, + { + "title": "## ๐Ÿงน Chores", + "labels": [ + "type : chore" + ], + "empty_content": "N/A" + }, + { + "title": "## Others", + "exclude_labels": [ + "type : feature", + "type : bug", + "type : chore", + "type : release" + ] + } + ], + "max_pull_requests": 200 +} diff --git a/.github/workflows/create_release_pr.yml b/.github/workflows/create_release_pr.yml new file mode 100644 index 00000000..3e53718d --- /dev/null +++ b/.github/workflows/create_release_pr.yml @@ -0,0 +1,66 @@ +name: Create the Release pull request + +on: + workflow_dispatch: + +jobs: + create_release_pr: + name: Create the Release pull request + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout the latest code + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Read the current version + id: version + uses: christian-draeger/read-properties@1.1.1 + with: + path: "version.properties" + properties: "templateScriptVersion" + + - name: Find HEAD commit + id: head + run: echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + + - name: Build changelog + id: changelog + uses: mikepenz/release-changelog-builder-action@v4 + with: + configuration: ".github/workflows/config/changelog-release.json" + # Listing PRs from the last tag to the HEAD commit + toTag: ${{ steps.head.outputs.sha }} + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Create the Release pull request + env: + GH_TOKEN: ${{ github.token }} + run: | + VERSION=${{ steps.version.outputs.templateScriptVersion }} + BASE_BRANCH=main + HEAD_BRANCH=release/$VERSION + + # Fetch milestone info + gh extension install valeriobelli/gh-milestone + MILESTONE=$VERSION + MILESTONE_URL=$(gh milestone list --query $MILESTONE --json url --jq ".[0].url") + + # Create the release branch + git checkout -b $HEAD_BRANCH + git push origin $HEAD_BRANCH + + # Create the pull request + gh pr create \ + --base $BASE_BRANCH \ + --head $HEAD_BRANCH \ + --assignee "bot-nimble" \ + --title "Release - $VERSION" \ + --label 'type : release' \ + --milestone $MILESTONE \ + --body "$MILESTONE_URL + + ${{ steps.changelog.outputs.changelog }}" \ From 85921150cd18b6544c7423bfd953490aa2603347 Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Fri, 24 Nov 2023 11:26:07 +0700 Subject: [PATCH 4/8] [#525] Reuse the "Create the Release PR" composite workflow --- .github/workflows/create_release_pr.yml | 46 +++---------------------- 1 file changed, 4 insertions(+), 42 deletions(-) diff --git a/.github/workflows/create_release_pr.yml b/.github/workflows/create_release_pr.yml index 3e53718d..cc1e4d0c 100644 --- a/.github/workflows/create_release_pr.yml +++ b/.github/workflows/create_release_pr.yml @@ -13,8 +13,6 @@ jobs: steps: - name: Checkout the latest code uses: actions/checkout@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - name: Read the current version id: version @@ -23,44 +21,8 @@ jobs: path: "version.properties" properties: "templateScriptVersion" - - name: Find HEAD commit - id: head - run: echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - - - name: Build changelog - id: changelog - uses: mikepenz/release-changelog-builder-action@v4 + - uses: nimblehq/github-actions-workflows/create_release_pr@0.1.10 with: - configuration: ".github/workflows/config/changelog-release.json" - # Listing PRs from the last tag to the HEAD commit - toTag: ${{ steps.head.outputs.sha }} - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Create the Release pull request - env: - GH_TOKEN: ${{ github.token }} - run: | - VERSION=${{ steps.version.outputs.templateScriptVersion }} - BASE_BRANCH=main - HEAD_BRANCH=release/$VERSION - - # Fetch milestone info - gh extension install valeriobelli/gh-milestone - MILESTONE=$VERSION - MILESTONE_URL=$(gh milestone list --query $MILESTONE --json url --jq ".[0].url") - - # Create the release branch - git checkout -b $HEAD_BRANCH - git push origin $HEAD_BRANCH - - # Create the pull request - gh pr create \ - --base $BASE_BRANCH \ - --head $HEAD_BRANCH \ - --assignee "bot-nimble" \ - --title "Release - $VERSION" \ - --label 'type : release' \ - --milestone $MILESTONE \ - --body "$MILESTONE_URL - - ${{ steps.changelog.outputs.changelog }}" \ + version: ${{ steps.version.outputs.templateScriptVersion }} + changelogConfiguration: ".github/workflows/config/changelog-release.json" + assignee: bot-nimble From 57b20c3434edc5e8a3a6c54cb459a7b8f044ff66 Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Fri, 24 Nov 2023 11:51:02 +0700 Subject: [PATCH 5/8] [#525] Add create_release_pr workflow to .cicdtemplate folder for the new project --- .../workflows/config/changelog-release.json | 35 +++++++++++++++++++ .../.github/workflows/create_release_pr.yml | 25 +++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 .cicdtemplate/.github/workflows/config/changelog-release.json create mode 100644 .cicdtemplate/.github/workflows/create_release_pr.yml diff --git a/.cicdtemplate/.github/workflows/config/changelog-release.json b/.cicdtemplate/.github/workflows/config/changelog-release.json new file mode 100644 index 00000000..34c62941 --- /dev/null +++ b/.cicdtemplate/.github/workflows/config/changelog-release.json @@ -0,0 +1,35 @@ +{ + "categories": [ + { + "title": "## โœจ Features", + "labels": [ + "type : feature" + ], + "empty_content": "N/A" + }, + { + "title": "## ๐Ÿ› Bug fixes", + "labels": [ + "type : bug" + ], + "empty_content": "N/A" + }, + { + "title": "## ๐Ÿงน Chores", + "labels": [ + "type : chore" + ], + "empty_content": "N/A" + }, + { + "title": "## Others", + "exclude_labels": [ + "type : feature", + "type : bug", + "type : chore", + "type : release" + ] + } + ], + "max_pull_requests": 200 +} diff --git a/.cicdtemplate/.github/workflows/create_release_pr.yml b/.cicdtemplate/.github/workflows/create_release_pr.yml new file mode 100644 index 00000000..85c41038 --- /dev/null +++ b/.cicdtemplate/.github/workflows/create_release_pr.yml @@ -0,0 +1,25 @@ +name: Create the Release pull request + +on: + workflow_dispatch: + +jobs: + create_release_pr: + name: Create the Release pull request + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout the latest code + uses: actions/checkout@v3 + + - name: Read the current version + id: version + run: echo "version=$(perl -nle 'print $1 if /ANDROID_VERSION_NAME = \"(.*)\"$/' buildSrc/src/main/java/Versions.kt)" >> $GITHUB_OUTPUT + + - uses: nimblehq/github-actions-workflows/create_release_pr@0.1.10 + with: + version: ${{ steps.version.outputs.version }} + changelogConfiguration: ".github/workflows/config/changelog-release.json" + assignee: bot-nimble From a8639abbb04d48b3bba059627f15d3598467a504 Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Tue, 28 May 2024 00:39:09 +0700 Subject: [PATCH 6/8] [#525] Update to the latest action version --- ...elease_pr.yml => create_release_pull_request.yml} | 12 ++++++------ ...elease_pr.yml => create_release_pull_request.yml} | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) rename .cicdtemplate/.github/workflows/{create_release_pr.yml => create_release_pull_request.yml} (66%) rename .github/workflows/{create_release_pr.yml => create_release_pull_request.yml} (65%) diff --git a/.cicdtemplate/.github/workflows/create_release_pr.yml b/.cicdtemplate/.github/workflows/create_release_pull_request.yml similarity index 66% rename from .cicdtemplate/.github/workflows/create_release_pr.yml rename to .cicdtemplate/.github/workflows/create_release_pull_request.yml index 85c41038..91ea40fa 100644 --- a/.cicdtemplate/.github/workflows/create_release_pr.yml +++ b/.cicdtemplate/.github/workflows/create_release_pull_request.yml @@ -4,22 +4,22 @@ on: workflow_dispatch: jobs: - create_release_pr: + create_release_pull_request: name: Create the Release pull request runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - - name: Checkout the latest code - uses: actions/checkout@v3 + - name: Check out the latest code + uses: actions/checkout@v4 - name: Read the current version id: version run: echo "version=$(perl -nle 'print $1 if /ANDROID_VERSION_NAME = \"(.*)\"$/' buildSrc/src/main/java/Versions.kt)" >> $GITHUB_OUTPUT - - uses: nimblehq/github-actions-workflows/create_release_pr@0.1.10 + - uses: nimblehq/github-actions-workflows/create_release_pull_request@0.1.10 with: - version: ${{ steps.version.outputs.version }} - changelogConfiguration: ".github/workflows/config/changelog-release.json" + release_version: ${{ steps.version.outputs.version }} + changelog_configuration: ".github/workflows/config/changelog-release.json" assignee: bot-nimble diff --git a/.github/workflows/create_release_pr.yml b/.github/workflows/create_release_pull_request.yml similarity index 65% rename from .github/workflows/create_release_pr.yml rename to .github/workflows/create_release_pull_request.yml index cc1e4d0c..3c3a3132 100644 --- a/.github/workflows/create_release_pr.yml +++ b/.github/workflows/create_release_pull_request.yml @@ -4,15 +4,15 @@ on: workflow_dispatch: jobs: - create_release_pr: + create_release_pull_request: name: Create the Release pull request runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - - name: Checkout the latest code - uses: actions/checkout@v3 + - name: Check out the latest code + uses: actions/checkout@v4 - name: Read the current version id: version @@ -21,8 +21,8 @@ jobs: path: "version.properties" properties: "templateScriptVersion" - - uses: nimblehq/github-actions-workflows/create_release_pr@0.1.10 + - uses: nimblehq/github-actions-workflows/create_release_pull_request@0.1.10 with: - version: ${{ steps.version.outputs.templateScriptVersion }} - changelogConfiguration: ".github/workflows/config/changelog-release.json" + release_version: ${{ steps.version.outputs.templateScriptVersion }} + changelog_configuration: ".github/workflows/config/changelog-release.json" assignee: bot-nimble From ae5b31d338cf7b3b7a34d7699242b9e0efe14d1d Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Fri, 6 Oct 2023 11:05:26 +0700 Subject: [PATCH 7/8] [#553] Define a "BaseScreen" component to switch status bar color in sample-compose --- sample-compose/app/build.gradle.kts | 3 ++- .../sample/compose/ui/base/BaseScreen.kt | 21 ++++++++++++++++++ .../ui/screens/main/home/HomeScreen.kt | 3 +++ .../ui/screens/main/second/SecondScreen.kt | 3 +++ .../ui/screens/main/third/ThirdScreen.kt | 3 +++ .../sample/compose/util/ComposableUtil.kt | 22 +++++++++++++++++++ .../app/src/main/res/values/colors.xml | 2 +- .../app/src/main/res/values/styles.xml | 2 +- .../buildSrc/src/main/java/Versions.kt | 2 +- 9 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/base/BaseScreen.kt create mode 100644 sample-compose/app/src/main/java/co/nimblehq/sample/compose/util/ComposableUtil.kt diff --git a/sample-compose/app/build.gradle.kts b/sample-compose/app/build.gradle.kts index 1ddb5fd9..38739b5d 100644 --- a/sample-compose/app/build.gradle.kts +++ b/sample-compose/app/build.gradle.kts @@ -132,7 +132,8 @@ dependencies { implementation("androidx.compose.material:material") implementation("androidx.navigation:navigation-compose:${Versions.COMPOSE_NAVIGATION_VERSION}") - implementation("com.google.accompanist:accompanist-permissions:${Versions.ACCOMPANIST_PERMISSIONS_VERSION}") + implementation("com.google.accompanist:accompanist-permissions:${Versions.ACCOMPANIST_VERSION}") + implementation("com.google.accompanist:accompanist-systemuicontroller:${Versions.ACCOMPANIST_VERSION}") implementation("androidx.datastore:datastore-preferences:${Versions.ANDROIDX_DATASTORE_PREFERENCES_VERSION}") diff --git a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/base/BaseScreen.kt b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/base/BaseScreen.kt new file mode 100644 index 00000000..e2255c0e --- /dev/null +++ b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/base/BaseScreen.kt @@ -0,0 +1,21 @@ +package co.nimblehq.sample.compose.ui.base + +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.colorResource +import co.nimblehq.sample.compose.R +import co.nimblehq.sample.compose.util.setStatusBarColor + +@Composable +fun BaseScreen( + isDarkStatusBarIcons: Boolean? = null, + content: @Composable () -> Unit, +) { + if (isDarkStatusBarIcons != null) { + setStatusBarColor( + color = colorResource(id = R.color.statusBarColor), + darkIcons = isDarkStatusBarIcons, + ) + } + + content() +} diff --git a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/home/HomeScreen.kt b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/home/HomeScreen.kt index b63436bc..6f5689d7 100644 --- a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/home/HomeScreen.kt +++ b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/home/HomeScreen.kt @@ -16,6 +16,7 @@ import co.nimblehq.sample.compose.extensions.collectAsEffect import co.nimblehq.sample.compose.extensions.showToast import co.nimblehq.sample.compose.lib.IsLoading import co.nimblehq.sample.compose.ui.base.BaseDestination +import co.nimblehq.sample.compose.ui.base.BaseScreen import co.nimblehq.sample.compose.ui.common.AppBar import co.nimblehq.sample.compose.ui.models.UiModel import co.nimblehq.sample.compose.ui.showToast @@ -28,6 +29,8 @@ fun HomeScreen( viewModel: HomeViewModel = hiltViewModel(), navigator: (destination: BaseDestination) -> Unit, isResultOk: Boolean = false, +) = BaseScreen( + isDarkStatusBarIcons = true, ) { val context = LocalContext.current viewModel.error.collectAsEffect { e -> e.showToast(context) } diff --git a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/second/SecondScreen.kt b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/second/SecondScreen.kt index 605d093d..5fc0172d 100644 --- a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/second/SecondScreen.kt +++ b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/second/SecondScreen.kt @@ -15,6 +15,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel import co.nimblehq.sample.compose.R import co.nimblehq.sample.compose.ui.base.BaseDestination +import co.nimblehq.sample.compose.ui.base.BaseScreen import co.nimblehq.sample.compose.ui.base.KeyResultOk import co.nimblehq.sample.compose.ui.common.AppBar import co.nimblehq.sample.compose.ui.theme.AppTheme.dimensions @@ -25,6 +26,8 @@ fun SecondScreen( viewModel: SecondViewModel = hiltViewModel(), navigator: (destination: BaseDestination) -> Unit, id: String, +) = BaseScreen( + isDarkStatusBarIcons = false, ) { SecondScreenContent( id = id, diff --git a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/third/ThirdScreen.kt b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/third/ThirdScreen.kt index 05d20cfa..6e47f520 100644 --- a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/third/ThirdScreen.kt +++ b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/screens/main/third/ThirdScreen.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel import co.nimblehq.sample.compose.R import co.nimblehq.sample.compose.ui.base.BaseDestination +import co.nimblehq.sample.compose.ui.base.BaseScreen import co.nimblehq.sample.compose.ui.common.AppBar import co.nimblehq.sample.compose.ui.models.UiModel import co.nimblehq.sample.compose.ui.theme.ComposeTheme @@ -23,6 +24,8 @@ fun ThirdScreen( viewModel: ThirdViewModel = hiltViewModel(), navigator: (destination: BaseDestination) -> Unit, model: UiModel?, +) = BaseScreen( + isDarkStatusBarIcons = true, ) { ThirdScreenContent(data = model) } diff --git a/sample-compose/app/src/main/java/co/nimblehq/sample/compose/util/ComposableUtil.kt b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/util/ComposableUtil.kt new file mode 100644 index 00000000..f4830423 --- /dev/null +++ b/sample-compose/app/src/main/java/co/nimblehq/sample/compose/util/ComposableUtil.kt @@ -0,0 +1,22 @@ +package co.nimblehq.sample.compose.util + +import android.annotation.SuppressLint +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.graphics.Color +import com.google.accompanist.systemuicontroller.rememberSystemUiController + +@SuppressLint("ComposableNaming") +@Composable +fun setStatusBarColor( + color: Color, + darkIcons: Boolean, +) { + val systemUiController = rememberSystemUiController() + LaunchedEffect(key1 = darkIcons) { + systemUiController.setStatusBarColor( + color = color, + darkIcons = darkIcons, + ) + } +} diff --git a/sample-compose/app/src/main/res/values/colors.xml b/sample-compose/app/src/main/res/values/colors.xml index 764d6f58..cd0fde27 100644 --- a/sample-compose/app/src/main/res/values/colors.xml +++ b/sample-compose/app/src/main/res/values/colors.xml @@ -1,4 +1,4 @@ - #FF669900 + #FF669900 diff --git a/sample-compose/app/src/main/res/values/styles.xml b/sample-compose/app/src/main/res/values/styles.xml index c82a3c11..380abe9e 100644 --- a/sample-compose/app/src/main/res/values/styles.xml +++ b/sample-compose/app/src/main/res/values/styles.xml @@ -1,6 +1,6 @@ diff --git a/sample-compose/buildSrc/src/main/java/Versions.kt b/sample-compose/buildSrc/src/main/java/Versions.kt index 5ee485de..b3ac0e98 100644 --- a/sample-compose/buildSrc/src/main/java/Versions.kt +++ b/sample-compose/buildSrc/src/main/java/Versions.kt @@ -9,7 +9,7 @@ object Versions { const val ANDROID_VERSION_NAME = "3.29.0" // Dependencies (Alphabet sorted) - const val ACCOMPANIST_PERMISSIONS_VERSION = "0.30.1" + const val ACCOMPANIST_VERSION = "0.30.1" const val ANDROID_COMMON_KTX_VERSION = "0.1.1" const val ANDROID_CRYPTO_VERSION = "1.0.0" const val ANDROIDX_CORE_KTX_VERSION = "1.10.1" From a43d6c0d7457027c20f8a89d4e8bea20d1335853 Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Fri, 6 Oct 2023 11:07:56 +0700 Subject: [PATCH 8/8] [#553] Define an initial "BaseScreen" component in compose-template --- .../nimblehq/template/compose/ui/base/BaseScreen.kt | 13 +++++++++++++ .../compose/ui/screens/main/home/HomeScreen.kt | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 template-compose/app/src/main/java/co/nimblehq/template/compose/ui/base/BaseScreen.kt diff --git a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/base/BaseScreen.kt b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/base/BaseScreen.kt new file mode 100644 index 00000000..713fab89 --- /dev/null +++ b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/base/BaseScreen.kt @@ -0,0 +1,13 @@ +package co.nimblehq.template.compose.ui.base + +import androidx.compose.runtime.Composable + +@Composable +fun BaseScreen( + // TODO Base parameters to request on all screens here + content: @Composable () -> Unit, +) { + // TODO Base logic for all screens here + + content() +} diff --git a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt index dda7bd4d..c45fe8e2 100644 --- a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt +++ b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt @@ -18,6 +18,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import co.nimblehq.template.compose.R import co.nimblehq.template.compose.extensions.collectAsEffect import co.nimblehq.template.compose.ui.base.BaseDestination +import co.nimblehq.template.compose.ui.base.BaseScreen import co.nimblehq.template.compose.ui.models.UiModel import co.nimblehq.template.compose.ui.showToast import co.nimblehq.template.compose.ui.theme.AppTheme.dimensions @@ -28,7 +29,7 @@ import timber.log.Timber fun HomeScreen( viewModel: HomeViewModel = hiltViewModel(), navigator: (destination: BaseDestination) -> Unit, -) { +) = BaseScreen { val context = LocalContext.current viewModel.error.collectAsEffect { e -> e.showToast(context) } viewModel.navigator.collectAsEffect { destination -> navigator(destination) }