Skip to content

Commit 1078044

Browse files
authored
Merge pull request #6 from victory316/develop
Develop
2 parents 7a73aad + 632b801 commit 1078044

File tree

51 files changed

+1298
-135
lines changed

Some content is hidden

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

51 files changed

+1298
-135
lines changed

.idea/deploymentTargetDropDown.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ android {
1414
applicationId = "com.choidev.latesteffort"
1515
minSdk = 28
1616
targetSdk = 33
17-
versionCode = 1
18-
versionName = "1.0"
17+
versionCode = 2
18+
versionName = "1.0.2"
1919

2020
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2121
}
@@ -59,19 +59,19 @@ dependencies {
5959
implementation(libs.lifecycleKtx)
6060
implementation(libs.androidx.junit.ktx)
6161
implementation(libs.rxAndroid)
62-
implementation(libs.rxJava)
63-
implementation(libs.hilt.android)
6462
implementation(platform(libs.androidx.compose.bom))
6563
implementation(libs.androidx.lifecycle.runtimeCompose)
6664
implementation(libs.androidx.compose.runtime.tracing)
6765
implementation(libs.androidx.compose.material3)
6866
implementation(libs.androidx.compose.material3.windowSizeClass)
6967
implementation(libs.androidx.activity.compose)
7068
implementation(libs.androidx.compose.ui.tooling.preview)
71-
implementation(libs.androidx.hilt.navigation.compose)
7269
implementation(libs.androidx.navigation.compose)
7370
implementation(libs.androidx.core.splashscreen)
7471
implementation(libs.ui.graphics)
72+
implementation(libs.rxJava)
73+
implementation(libs.androidx.hilt.navigation.compose)
74+
implementation(libs.hilt.android)
7575
kapt(libs.hilt.compiler)
7676

7777
testImplementation(libs.junit)
@@ -89,8 +89,11 @@ dependencies {
8989

9090
implementation(project(":core:design"))
9191
implementation(project(":core:testing"))
92+
implementation(project(":core:util"))
93+
implementation(project(":core:actions"))
9294
implementation(project(":domain"))
9395
implementation(project(":domain:catalog"))
9496
implementation(project(":data"))
9597
implementation(project(":feature:search-media"))
98+
implementation(project(":feature:vibration"))
9699
}

app/src/main/java/com/example/latesteffort/MainActivity.kt

Lines changed: 87 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,113 @@ package com.example.latesteffort
22

33
import LeTheme
44
import android.os.Bundle
5+
import android.widget.Toast
56
import androidx.activity.ComponentActivity
67
import androidx.activity.compose.setContent
7-
import com.example.latesteffort.action.Action
8-
import com.example.latesteffort.action.NavigateAction
9-
import com.example.latesteffort.action.NavigateAction.NavGraphDestination
10-
import com.example.latesteffort.action.NavigateAction.StartActivity
11-
import com.example.latesteffort.action.presenter.SimpleActionPresenter
8+
import androidx.navigation.NavHostController
9+
import androidx.navigation.compose.rememberNavController
10+
import com.choidev.core.actions.Action
11+
import com.choidev.core.actions.NavigateAction
12+
import com.choidev.core.actions.NavigateAction.NavGraphDestination
13+
import com.choidev.core.actions.NavigateAction.StartActivity
14+
import com.choidev.core.actions.SystemAction
15+
import com.choidev.core.actions.VibrationAction
16+
import com.choidev.core.actions.mapToId
17+
import com.choidev.core.actions.presenter.SimpleActionPresenter
18+
import com.choidev.latesteffort.core.util.vibration.VibrationManager
1219
import com.example.latesteffort.ext.startNewActivity
13-
import com.example.latesteffort.ui.CatalogScreen
20+
import com.example.latesteffort.navigation.LeNavHost
1421
import dagger.hilt.android.AndroidEntryPoint
22+
import javax.inject.Inject
1523

1624
@AndroidEntryPoint
1725
class MainActivity : ComponentActivity() {
1826

27+
@Inject
28+
lateinit var vibrationManager: VibrationManager
29+
1930
override fun onCreate(savedInstanceState: Bundle?) {
2031
super.onCreate(savedInstanceState)
2132

2233
setupUi()
2334
}
2435

2536
private fun setupUi() {
26-
val presenter = object : SimpleActionPresenter() {
27-
override fun onClick(action: Action) {
28-
when (action) {
29-
is NavigateAction -> {
30-
when (action) {
31-
is NavGraphDestination -> {
32-
// TODO nav graph move action
33-
}
34-
35-
is StartActivity -> {
36-
startNewActivity(action.screenClass)
37-
}
38-
}
37+
setContent {
38+
val navController = rememberNavController()
39+
40+
val presenter = object : SimpleActionPresenter() {
41+
override fun onClick(action: Action) {
42+
when (action) {
43+
is NavigateAction -> handleNavigateAction(
44+
navController = navController,
45+
action = action
46+
)
47+
48+
is VibrationAction -> handleVibrationAction(action)
49+
50+
is SystemAction -> handleSystemAction(action)
3951
}
4052
}
4153
}
42-
}
4354

44-
setContent {
4555
LeTheme {
46-
CatalogScreen(presenter)
56+
LeNavHost(
57+
navController = navController,
58+
presenter = presenter
59+
)
60+
}
61+
}
62+
}
63+
64+
private fun handleNavigateAction(
65+
navController: NavHostController,
66+
action: NavigateAction
67+
) {
68+
when (action) {
69+
is NavGraphDestination -> {
70+
navController.navigate(action.destination)
71+
}
72+
73+
is StartActivity -> {
74+
startNewActivity(action.screenClass)
75+
}
76+
}
77+
}
78+
79+
private fun handleSystemAction(action: SystemAction) {
80+
when (action) {
81+
is SystemAction.ShowToast -> {
82+
Toast.makeText(this, action.message, Toast.LENGTH_SHORT).show()
83+
}
84+
}
85+
}
86+
87+
private fun handleVibrationAction(action: VibrationAction) {
88+
when (action) {
89+
is VibrationAction.Vibrate -> {
90+
if (action.activate) {
91+
vibrationManager.vibrate(
92+
duration = action.duration,
93+
amplitude = action.amplitude
94+
)
95+
}
96+
}
97+
98+
is VibrationAction.VibrateEffect -> {
99+
vibrationManager.vibrateEffect(action.effect.mapToId())
100+
}
101+
102+
is VibrationAction.VibratePattern -> {
103+
vibrationManager.vibrateWithPattern(
104+
timing = action.patterns.map { it.first.toLong() }.toLongArray(),
105+
amplitudes = action.patterns.map { it.second }.toIntArray(),
106+
repeat = if (action.repeat) 0 else -1
107+
)
108+
}
109+
110+
VibrationAction.StopVibration -> {
111+
vibrationManager.stopVibration()
47112
}
48113
}
49114
}

app/src/main/java/com/example/latesteffort/action/Action.kt

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/src/main/java/com/example/latesteffort/action/presenter/SimpleActionPresenter.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.example.latesteffort.di
2+
3+
import android.content.Context
4+
import android.os.VibratorManager
5+
import com.choidev.latesteffort.core.util.vibration.VibrationManager
6+
import dagger.Module
7+
import dagger.Provides
8+
import dagger.hilt.InstallIn
9+
import dagger.hilt.android.qualifiers.ApplicationContext
10+
import dagger.hilt.components.SingletonComponent
11+
12+
@Module
13+
@InstallIn(SingletonComponent::class)
14+
object UtilModule {
15+
16+
@Provides
17+
fun provideVibrationManager(
18+
@ApplicationContext context: Context
19+
): VibrationManager {
20+
return VibrationManager(context)
21+
}
22+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.example.latesteffort.model
22

33
import androidx.compose.material.icons.Icons
4-
import com.example.latesteffort.action.NavigateAction
4+
import com.choidev.core.actions.NavigateAction
55

66
data class CatalogMenu(
77
val menuTitle: String,
88
val menuIcon: Icons,
9-
val navAction: NavigateAction,
9+
val navAction: com.choidev.core.actions.NavigateAction,
1010
)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.example.latesteffort.navigation
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.ui.Modifier
5+
import androidx.navigation.NavHostController
6+
import androidx.navigation.compose.NavHost
7+
import com.choidev.core.actions.presenter.ActionPresenter
8+
import com.choidev.vibration.navigation.vibrationScreen
9+
10+
@Composable
11+
fun LeNavHost(
12+
navController: NavHostController,
13+
presenter: ActionPresenter,
14+
modifier: Modifier = Modifier
15+
) {
16+
NavHost(
17+
navController = navController,
18+
startDestination = catalogRoute,
19+
modifier = modifier
20+
) {
21+
catalogScreen(presenter)
22+
vibrationScreen(presenter)
23+
}
24+
}

0 commit comments

Comments
 (0)