Skip to content

Commit 550830f

Browse files
committed
change input/output port name & remove viewmodel dependencies [FoKE-Developers#22]
- AppPreferencesRepository -> AppPreferenceInterface - AppPreferencesRepositoryImpl -> AppPreferencesRepository - GetSampleUiData -> GetSampleDataInterface * 변경 전 참조 구조 - ViewModel -> GetSampleData -> GetSampleUseCase -> AppPreferenceInterface -> AppPreferencesRepositoryImpl * 변경 후 참조 구조 - ViewModel -> GetSampleDataInterface -> GetSampleUseCase -> AppPreferenceInterface -> AppPreferencesRepository
1 parent 0d6c9f3 commit 550830f

File tree

8 files changed

+56
-17
lines changed

8 files changed

+56
-17
lines changed

data/src/main/java/com/foke/together/data/repository/AppPreferencesRepositoryImpl.kt data/src/main/java/com/foke/together/data/repository/AppPreferencesRepository.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ package com.foke.together.data.repository
22

33
import androidx.datastore.core.DataStore
44
import com.foke.together.AppPreferences
5-
import com.foke.together.domain.output.AppPreferenceRepository
5+
import com.foke.together.domain.output.AppPreferenceInterface
66
import com.foke.together.domain.output.SampleData
77
import kotlinx.coroutines.flow.Flow
88
import kotlinx.coroutines.flow.map
99
import javax.inject.Inject
1010

1111
// TODO: datasource -> local / remote 기준으로 module 구분하는게 어떨지?
12-
class AppPreferencesRepositoryImpl @Inject constructor(
12+
class AppPreferencesRepository @Inject constructor(
1313
private val appPreferences: DataStore<AppPreferences>
14-
): AppPreferenceRepository {
14+
): AppPreferenceInterface {
1515
private val appPreferencesFlow: Flow<AppPreferences> = appPreferences.data
1616

1717
override fun getSampleData(): Flow<SampleData> =
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.foke.together.data.repository.di
22

3-
import com.foke.together.data.repository.AppPreferencesRepositoryImpl
4-
import com.foke.together.domain.output.AppPreferenceRepository
3+
import com.foke.together.data.repository.AppPreferencesRepository
4+
import com.foke.together.domain.output.AppPreferenceInterface
55
import dagger.Binds
66
import dagger.Module
77
import dagger.hilt.InstallIn
@@ -11,5 +11,5 @@ import dagger.hilt.android.components.ViewModelComponent
1111
@InstallIn(ViewModelComponent::class)
1212
abstract class RepositoryModule {
1313
@Binds
14-
abstract fun bindAppPreferenceRepository(appPreferenceRepository: AppPreferencesRepositoryImpl): AppPreferenceRepository
14+
abstract fun bindAppPreferenceRepository(appPreferenceRepository: AppPreferencesRepository): AppPreferenceInterface
1515
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.foke.together.domain.input
2+
3+
import kotlinx.coroutines.flow.Flow
4+
5+
interface GetSampleDataInterface {
6+
operator fun invoke(): Flow<SampleUiData>
7+
}
8+
9+
data class SampleUiData(
10+
val sampleText: String
11+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.foke.together.domain.input.di
2+
3+
import com.foke.together.domain.input.GetSampleDataInterface
4+
import com.foke.together.domain.interactor.GetSampleDataUseCase
5+
import dagger.Binds
6+
import dagger.Module
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.android.components.ViewModelComponent
9+
10+
@Module
11+
@InstallIn(ViewModelComponent::class)
12+
abstract class UseCaseModule {
13+
@Binds
14+
abstract fun bindGetSampleDataUseCase(getSampleUiDataUseCase: GetSampleDataUseCase): GetSampleDataInterface
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.foke.together.domain.interactor
2+
3+
import com.foke.together.domain.input.GetSampleDataInterface
4+
import com.foke.together.domain.input.SampleUiData
5+
import com.foke.together.domain.output.AppPreferenceInterface
6+
import com.foke.together.util.AppLog
7+
import kotlinx.coroutines.flow.Flow
8+
import kotlinx.coroutines.flow.map
9+
import javax.inject.Inject
10+
11+
class GetSampleDataUseCase @Inject constructor(
12+
private val appPreference: AppPreferenceInterface
13+
): GetSampleDataInterface {
14+
override fun invoke(): Flow<SampleUiData> =
15+
appPreference.getSampleData().map {
16+
AppLog.i(TAG, "", "id: ${it.id}")
17+
SampleUiData("title: ${it.title} / description: ${it.description}")
18+
}
19+
20+
companion object {
21+
private val TAG = GetSampleDataUseCase::class.java.simpleName
22+
}
23+
}

domain/src/main/java/com/foke/together/domain/output/AppPreferenceRepository.kt domain/src/main/java/com/foke/together/domain/output/AppPreferenceInterface.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.foke.together.domain.output
22

33
import kotlinx.coroutines.flow.Flow
44

5-
interface AppPreferenceRepository {
5+
interface AppPreferenceInterface {
66
fun getSampleData(): Flow<SampleData>
77
suspend fun setSampleData(data: SampleData)
88
suspend fun clearAll()

gradle/libs.versions.toml

-7
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,6 @@ protobuf = "3.23.2"
5555
protobuf-plugin = "0.9.4"
5656
protoc = "com.google.protobuf:protoc:4.28.2"
5757

58-
# lifecycle-viewmodel-ktx
59-
lifecycle-viewmodel-ktx = "2.8.6"
60-
6158
# test -----------
6259
junit = "4.13.2"
6360
junitVersion = "1.2.1"
@@ -114,10 +111,6 @@ datastore_preferences = { group = "androidx.datastore", name = "datastore-prefer
114111
datastore_preferences_core = { group = "androidx.datastore", name = "datastore-preferences-core", version.ref = "datastore" }
115112
protobuf_javalite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "protobuf" }
116113

117-
# lifecycle viewmodel
118-
androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle-viewmodel-ktx" }
119-
120-
121114
# test -----------
122115
junit = { group = "junit", name = "junit", version.ref = "junit" }
123116
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }

presenter/build.gradle.kts

-3
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ dependencies {
3737
// navigation
3838
implementation(libs.androidx.hilt.navigation.compose)
3939
implementation(libs.androidx.navigation.compose)
40-
41-
// view model
42-
implementation(libs.androidx.lifecycle.viewmodel)
4340

4441
// test
4542
testImplementation(libs.junit)

0 commit comments

Comments
 (0)