Skip to content

Commit 6eeba80

Browse files
authored
Merge pull request #296 from Kaaveh/refactor-dependencies
Refactor dependencies
2 parents 492b354 + 59b4f25 commit 6eeba80

File tree

54 files changed

+1283
-878
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1283
-878
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@ jobs:
2323
- name: Setup
2424
uses: ./.github/actions/workflow_setup
2525

26-
- name: Check build-logic
27-
run: ./gradlew check -p build-logic
28-
29-
- name: Check build-logic
30-
run: ./gradlew check -p build-logic
31-
3226
- run: echo "Run unit tests"
3327
- name: Test
3428
run: ./gradlew test

app-watch/app/build.gradle.kts

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,33 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
13
plugins {
2-
alias(libs.plugins.composenews.android.application)
3-
alias(libs.plugins.composenews.android.application.compose)
4-
alias(libs.plugins.composenews.android.hilt)
4+
alias(libs.plugins.android.application)
5+
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.compose)
7+
alias(libs.plugins.hilt.android)
8+
alias(libs.plugins.ksp)
9+
alias(libs.plugins.detekt)
10+
alias(libs.plugins.kotliner)
511
}
612

713
android {
14+
namespace = libs.versions.projectApplicationId.get()
15+
compileSdk = libs.versions.projectCompileSdkVersion.get().toInt()
16+
17+
defaultConfig {
18+
applicationId = libs.versions.projectApplicationId.get()
19+
minSdk = libs.versions.projectMinSdkVersionWear.get().toInt()
20+
targetSdk = libs.versions.projectTargetSdkVersion.get().toInt()
21+
versionCode = libs.versions.projectVersionCode.get().toInt()
22+
versionName = libs.versions.projectVersionName.get()
23+
24+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
25+
26+
vectorDrawables {
27+
useSupportLibrary = true
28+
}
29+
}
30+
831
buildTypes {
932
getByName("debug") {
1033
isMinifyEnabled = false
@@ -21,9 +44,57 @@ android {
2144
)
2245
}
2346
}
47+
48+
compileOptions {
49+
sourceCompatibility = JavaVersion.VERSION_17
50+
targetCompatibility = JavaVersion.VERSION_17
51+
}
52+
53+
buildFeatures {
54+
compose = true
55+
}
56+
57+
testOptions {
58+
unitTests {
59+
isIncludeAndroidResources = true
60+
isReturnDefaultValues = true
61+
}
62+
unitTests.all {
63+
it.useJUnitPlatform()
64+
}
65+
}
66+
67+
packaging {
68+
resources {
69+
excludes += "META-INF/*"
70+
merges += "META-INF/*.version"
71+
pickFirsts += "win32-x86-64/attach_hotspot_windows.dll"
72+
pickFirsts += "win32-x86/attach_hotspot_windows.dll"
73+
excludes += "META-INF/licenses/ASM"
74+
}
75+
}
76+
}
77+
78+
kotlin {
79+
compilerOptions {
80+
jvmTarget = JvmTarget.JVM_17
81+
freeCompilerArgs.add("-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi")
82+
}
2483
}
2584

2685
dependencies {
86+
// Hilt
87+
implementation(libs.hilt.android)
88+
ksp(libs.hilt.compiler)
89+
90+
// Compose BOM
91+
implementation(platform(libs.compose.bom))
92+
androidTestImplementation(platform(libs.compose.bom))
93+
94+
// Test
95+
androidTestImplementation(kotlin("test"))
96+
testImplementation(kotlin("test"))
97+
2798
projects.apply {
2899
implementation(appWatch.navigation)
29100
implementation(library.designsystem)

app-watch/app/src/androidTest/java/ir/composenews/ui/MainActivityTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@ import org.junit.Rule
1010
import org.junit.Test
1111

1212
class MainActivityTest {
13-
1413
@get:Rule
1514
val composeTestRule = createAndroidComposeRule<MainActivity>()
1615

1716
@Test
1817
fun marketListScreen_DisplayedCorrectly() {
19-
2018
composeTestRule.waitUntil(timeoutMillis = 5_000) {
2119
composeTestRule.onAllNodesWithText("BNB").fetchSemanticsNodes().isNotEmpty() ||
22-
composeTestRule.onAllNodesWithText("BTC").fetchSemanticsNodes().isNotEmpty()
20+
composeTestRule.onAllNodesWithText("BTC").fetchSemanticsNodes().isNotEmpty()
2321
}
2422

2523
composeTestRule.onNodeWithText("BNB").assertExists()
26-
composeTestRule.onNodeWithText("Bitcoin").assertExists().onParent().performClick()
24+
composeTestRule
25+
.onNodeWithText("Bitcoin")
26+
.assertExists()
27+
.onParent()
28+
.performClick()
2729
composeTestRule.onNodeWithContentDescription("Loading. PLease wait").assertExists()
28-
29-
3030
}
3131
}

app-watch/app/src/main/java/ir/composenews/MainViewModel.kt

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,28 @@ import kotlinx.coroutines.launch
1313
import javax.inject.Inject
1414

1515
@HiltViewModel
16-
class MainViewModel @Inject constructor(
17-
dispatcherProvider: DispatcherProvider,
18-
) : BaseViewModel(dispatcherProvider), MainContract {
16+
class MainViewModel
17+
@Inject
18+
constructor(
19+
dispatcherProvider: DispatcherProvider,
20+
) : BaseViewModel(dispatcherProvider),
21+
MainContract {
22+
private val mutableState = MutableStateFlow(MainContract.State())
1923

20-
private val mutableState = MutableStateFlow(MainContract.State())
21-
override val state: StateFlow<MainContract.State> = mutableState.asStateFlow()
22-
override fun event(event: MainContract.Event) {
23-
when (event) {
24-
is MainContract.Event.SetMarket -> setMarket(event.market)
24+
override val state: StateFlow<MainContract.State> = mutableState.asStateFlow()
25+
26+
override fun event(event: MainContract.Event) {
27+
when (event) {
28+
is MainContract.Event.SetMarket -> setMarket(event.market)
29+
}
2530
}
26-
}
2731

28-
private fun setMarket(market: MarketModel?) = viewModelScope.launch {
29-
mutableState.emit(
30-
mutableState.value.copy(
31-
market
32-
)
33-
)
32+
private fun setMarket(market: MarketModel?) =
33+
viewModelScope.launch {
34+
mutableState.emit(
35+
mutableState.value.copy(
36+
market,
37+
),
38+
)
39+
}
3440
}
35-
}

app-watch/app/src/main/java/ir/composenews/navigation/ComposeNewsWearNavHost.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import ir.composenews.appwatch.navigation.graph.wearMarketList
1111
import ir.composenews.uimarket.model.MarketModel
1212

1313
@Composable
14+
@Suppress("ktlint:standard:function-naming")
1415
fun ComposeNewsWearNavHost(
1516
navController: NavHostController,
1617
modifier: Modifier,
1718
onMarketSelected: ((MarketModel) -> Unit)? = null,
18-
uiState: MainContract.State
19+
uiState: MainContract.State,
1920
) {
2021
SwipeDismissableNavHost(
2122
navController = navController,

app-watch/app/src/main/java/ir/composenews/ui/MainActivity.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ import com.google.android.horologist.compose.layout.AppScaffold
1515
import com.google.android.horologist.compose.layout.ScreenScaffold
1616
import dagger.hilt.android.AndroidEntryPoint
1717
import ir.composenews.MainViewModel
18-
import ir.composenews.appwatch.navigation.graph.Destinations
1918
import ir.composenews.appwatch.navigation.MainContract
19+
import ir.composenews.appwatch.navigation.graph.Destinations
2020
import ir.composenews.designsystem.theme.ComposeNewsTheme
2121
import ir.composenews.navigation.ComposeNewsWearNavHost
2222

2323
@AndroidEntryPoint
2424
class MainActivity : ComponentActivity() {
25-
2625
private val mainViewModel: MainViewModel by viewModels()
2726

2827
override fun onCreate(savedInstanceState: Bundle?) {
@@ -33,6 +32,7 @@ class MainActivity : ComponentActivity() {
3332
}
3433

3534
@Composable
35+
@Suppress("ktlint:standard:function-naming")
3636
fun WearApp() {
3737
val navController = rememberSwipeDismissableNavController()
3838
val state = mainViewModel.state.collectAsStateWithLifecycle()
@@ -46,7 +46,7 @@ class MainActivity : ComponentActivity() {
4646
navController.navigate(Destinations.MarketDetailScreen().route)
4747
},
4848
uiState = state.value,
49-
modifier = Modifier
49+
modifier = Modifier,
5050
)
5151
}
5252
}
@@ -55,6 +55,7 @@ class MainActivity : ComponentActivity() {
5555

5656
@Preview(device = WearDevices.LARGE_ROUND, showSystemUi = true)
5757
@Composable
58+
@Suppress("ktlint:standard:function-naming")
5859
fun DefaultPreview() {
5960
WearApp()
6061
}

app-watch/navigation/build.gradle.kts

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,67 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
13
plugins {
2-
alias(libs.plugins.composenews.android.library)
3-
alias(libs.plugins.composenews.android.library.compose)
4+
alias(libs.plugins.android.library)
5+
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.compose)
7+
alias(libs.plugins.detekt)
8+
alias(libs.plugins.kotliner)
49
}
510

611
android {
712
namespace = "ir.composenews.app_watch.navigation"
13+
compileSdk = libs.versions.projectCompileSdkVersion.get().toInt()
14+
15+
defaultConfig {
16+
minSdk = libs.versions.projectMinSdkVersion.get().toInt()
17+
}
18+
19+
compileOptions {
20+
sourceCompatibility = JavaVersion.VERSION_17
21+
targetCompatibility = JavaVersion.VERSION_17
22+
}
23+
24+
buildFeatures {
25+
compose = true
26+
}
27+
28+
testOptions {
29+
unitTests {
30+
isIncludeAndroidResources = true
31+
isReturnDefaultValues = true
32+
}
33+
unitTests.all {
34+
it.useJUnitPlatform()
35+
}
36+
}
37+
38+
packaging {
39+
resources {
40+
excludes += "META-INF/*"
41+
merges += "META-INF/*.version"
42+
pickFirsts += "win32-x86-64/attach_hotspot_windows.dll"
43+
pickFirsts += "win32-x86/attach_hotspot_windows.dll"
44+
excludes += "META-INF/licenses/ASM"
45+
}
46+
}
47+
}
48+
49+
kotlin {
50+
compilerOptions {
51+
jvmTarget = JvmTarget.JVM_17
52+
freeCompilerArgs.add("-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi")
53+
}
854
}
955

1056
dependencies {
57+
// Compose BOM
58+
implementation(platform(libs.compose.bom))
59+
androidTestImplementation(platform(libs.compose.bom))
60+
61+
// Test
62+
androidTestImplementation(kotlin("test"))
63+
testImplementation(kotlin("test"))
64+
1165
projects.apply {
1266
implementation(appWatch.ui)
1367
implementation(core.uimarket)

app-watch/navigation/src/main/java/ir/composenews/appwatch/navigation/graph/MarketDetail.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
@file:Suppress(
22
"ktlint:standard:function-expression-body",
33
"ktlint:standard:multiline-expression-wrapping",
4-
"ktlint:standard:trailing-comma-on-call-site"
4+
"ktlint:standard:trailing-comma-on-call-site",
5+
"DEPRECATION",
56
)
67

78
package ir.composenews.appwatch.navigation.graph
@@ -32,10 +33,6 @@ private fun <T> NavBackStackEntry.parcelableData(key: String): T? {
3233

3334
private inline fun <reified T : Parcelable> Bundle.parcelable(key: String): T? =
3435
when {
35-
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU ->
36-
getParcelable(key, T::class.java)
37-
38-
else ->
39-
@Suppress("DEPRECATION")
40-
getParcelable(key) as? T
36+
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getParcelable(key, T::class.java)
37+
else -> getParcelable(key) as? T
4138
}

0 commit comments

Comments
 (0)