From 479263135aaaf6c673eca79ee93e65c7948de7fe Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:00:28 +0900 Subject: [PATCH 1/7] chore: Slight changes on dependencies - Upgraded AGP - Adopted new Material 3 Expressive UIs - Added Slack linting library --- app/build.gradle.kts | 1 + gradle/libs.versions.toml | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 32e694a..cc8948c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -83,4 +83,5 @@ dependencies { implementation(libs.squareup.retrofit2) implementation(libs.squareup.retrofit2.converter.gson) implementation(libs.google.gson) + lintChecks(libs.slack.lint) } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2f3f2cd..1f60695 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] # Default -agp = "8.11.1" +agp = "8.12.0" kotlin = "2.2.0" coreKtx = "1.16.0" junit = "4.13.2" @@ -9,6 +9,7 @@ espressoCore = "3.7.0" lifecycleRuntimeKtx = "2.9.2" activityCompose = "1.10.1" composeBom = "2025.07.00" +material = "1.5.0-alpha01" # New icon = "1.7.8" ksp = "2.2.0-2.0.2" @@ -17,6 +18,7 @@ hilt = "2.57" androidxHilt = "1.2.0" retrofit2 = "3.0.0" gson = "2.13.1" +lint = "1.4.2" [libraries] # Default @@ -33,7 +35,7 @@ androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } -androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material" } # New androidx-material3-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended", version.ref = "icon" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigation" } @@ -43,6 +45,7 @@ dagger-hilt-android-compiler = { group = "com.google.dagger", name = "hilt-andro squareup-retrofit2 = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit2" } squareup-retrofit2-converter-gson = { group = "com.squareup.retrofit2", name = "converter-gson", version.ref = "retrofit2" } google-gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } +slack-lint = { group = "com.slack.lint.compose", name = "compose-lint-checks", version.ref = "lint" } [plugins] # Default From 988bdf6ff31f211d09e2c3a61473fab76fc7ab8c Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:04:17 +0900 Subject: [PATCH 2/7] feat: set up base navigation structures --- .../debatetimer/app/navigation/MainNavHost.kt | 16 ++++++++++++++++ .../com/debatetimer/app/navigation/NavItem.kt | 8 ++++++++ 2 files changed, 24 insertions(+) create mode 100644 app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt create mode 100644 app/src/main/java/com/debatetimer/app/navigation/NavItem.kt diff --git a/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt b/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt new file mode 100644 index 0000000..e6df828 --- /dev/null +++ b/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt @@ -0,0 +1,16 @@ +package com.debatetimer.app.navigation + +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import com.debatetimer.app.ui.login.LoginPage + +@Composable +fun MainNavHost(navController: NavHostController) { + NavHost( + navController = navController, + startDestination = NavItem.Login.route + ) { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/debatetimer/app/navigation/NavItem.kt b/app/src/main/java/com/debatetimer/app/navigation/NavItem.kt new file mode 100644 index 0000000..32e5253 --- /dev/null +++ b/app/src/main/java/com/debatetimer/app/navigation/NavItem.kt @@ -0,0 +1,8 @@ +package com.debatetimer.app.navigation + +sealed class NavItem( + val route: String, +) { + object Home : NavItem("home") + object Login : NavItem("login") +} \ No newline at end of file From d39c424ec06b5eda2faeb28eac89ea770201e291 Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:09:27 +0900 Subject: [PATCH 3/7] feat: set MainNavHost to the app entry point --- .../java/com/debatetimer/app/MainActivity.kt | 34 +++---------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/debatetimer/app/MainActivity.kt b/app/src/main/java/com/debatetimer/app/MainActivity.kt index 9969ac7..67e833e 100644 --- a/app/src/main/java/com/debatetimer/app/MainActivity.kt +++ b/app/src/main/java/com/debatetimer/app/MainActivity.kt @@ -5,13 +5,8 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.compose.rememberNavController +import com.debatetimer.app.navigation.MainNavHost import com.debatetimer.app.ui.theme.DebateTimerTheme import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.HiltAndroidApp @@ -25,30 +20,11 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { + val navController = rememberNavController() + DebateTimerTheme { - Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Greeting( - name = "Android", - modifier = Modifier.padding(innerPadding) - ) - } + MainNavHost(navController = navController) } } } -} - -@Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) -} - -@Preview(showBackground = true) -@Composable -fun GreetingPreview() { - DebateTimerTheme { - Greeting("Android") - } } \ No newline at end of file From 410b46a56be7d2e233c50ebd2d4d426e99f5052c Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:17:31 +0900 Subject: [PATCH 4/7] fix: fix import error --- app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt b/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt index e6df828..089f3f1 100644 --- a/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt +++ b/app/src/main/java/com/debatetimer/app/navigation/MainNavHost.kt @@ -4,7 +4,6 @@ import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable -import com.debatetimer.app.ui.login.LoginPage @Composable fun MainNavHost(navController: NavHostController) { From 6a5901c1e9c33984c0fc108a02fe462568d9a56c Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:17:59 +0900 Subject: [PATCH 5/7] chore: update CI script to cover lint and build --- .github/workflows/CI.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3ed5523..fa98352 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,3 +29,16 @@ jobs: - name: Run Unit Tests run: ./gradlew test + + - name: Run lint checks + run: ./gradlew lintDebug + + - name: Upload Lint Report Artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: lint-report + path: app/build/reports/lint-results-debug.xml + + - name: Build the project + run: ./gradlew assembleDebug From 59b6e262ac05842db860930288db3f446976bf0d Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:24:06 +0900 Subject: [PATCH 6/7] chore: change report type from xml to html --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index fa98352..23423ff 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -38,7 +38,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: lint-report - path: app/build/reports/lint-results-debug.xml + path: app/build/reports/lint-results-debug.html - name: Build the project run: ./gradlew assembleDebug From 96adc5d11f4ab0422d6c2025fa2023c5dfff21cf Mon Sep 17 00:00:00 2001 From: Shawn Kang Date: Sat, 2 Aug 2025 16:35:37 +0900 Subject: [PATCH 7/7] chore: group 3 CI tasks into 1 task --- .github/workflows/CI.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 23423ff..8252371 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -27,18 +27,12 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - - name: Run Unit Tests - run: ./gradlew test - - - name: Run lint checks - run: ./gradlew lintDebug + - name: Run unit test, lint check and build + run: ./gradlew test lintDebug assembleDebug - name: Upload Lint Report Artifact if: always() uses: actions/upload-artifact@v4 with: name: lint-report - path: app/build/reports/lint-results-debug.html - - - name: Build the project - run: ./gradlew assembleDebug + path: app/build/reports/lint-results-debug.html \ No newline at end of file