From abf40f9c65573f927ff16c35f35e66ded0e2b66b Mon Sep 17 00:00:00 2001 From: murjune Date: Fri, 12 Aug 2022 02:00:26 +0900 Subject: [PATCH 01/11] =?UTF-8?q?#178=20[feat]=20ApiModule=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hous/hous_aos/di/ApiModule.kt | 32 +++++++++++++++++++ .../com/hous/hous_aos/di/NetworkModule.kt | 24 ++------------ .../java/com/hous/domain/model/Category.kt | 9 ------ .../java/com/hous/domain/model/DayData.kt | 6 ---- .../main/java/com/hous/domain/model/Homie.kt | 15 --------- 5 files changed, 34 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/com/hous/hous_aos/di/ApiModule.kt delete mode 100644 domain/src/main/java/com/hous/domain/model/Category.kt delete mode 100644 domain/src/main/java/com/hous/domain/model/DayData.kt delete mode 100644 domain/src/main/java/com/hous/domain/model/Homie.kt diff --git a/app/src/main/java/com/hous/hous_aos/di/ApiModule.kt b/app/src/main/java/com/hous/hous_aos/di/ApiModule.kt new file mode 100644 index 00000000..35bdb865 --- /dev/null +++ b/app/src/main/java/com/hous/hous_aos/di/ApiModule.kt @@ -0,0 +1,32 @@ +package com.hous.hous_aos.di + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import retrofit2.Retrofit +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object ApiModule { + @Provides + @Singleton + fun provideHomeService(retrofit: Retrofit): com.hous.data.api.HomeApi = + retrofit.create(com.hous.data.api.HomeApi::class.java) + + @Provides + @Singleton + fun provideRulesService(retrofit: Retrofit): com.hous.data.api.RulesApi = + retrofit.create(com.hous.data.api.RulesApi::class.java) + + @Provides + @Singleton + fun provideProfileService(retrofit: Retrofit): com.hous.data.api.ProfileApi = + retrofit.create(com.hous.data.api.ProfileApi::class.java) + + @Provides + @Singleton + fun provideNewRulesApi(retrofit: Retrofit): com.hous.data.api.NewRulesApi = + retrofit.create(com.hous.data.api.NewRulesApi::class.java) +} diff --git a/app/src/main/java/com/hous/hous_aos/di/NetworkModule.kt b/app/src/main/java/com/hous/hous_aos/di/NetworkModule.kt index fb9565af..09765b66 100644 --- a/app/src/main/java/com/hous/hous_aos/di/NetworkModule.kt +++ b/app/src/main/java/com/hous/hous_aos/di/NetworkModule.kt @@ -7,13 +7,13 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import java.util.concurrent.TimeUnit -import javax.inject.Singleton import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory +import java.util.concurrent.TimeUnit +import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) @@ -71,24 +71,4 @@ object NetworkModule { ) ) .build() - - @Provides - @Singleton - fun provideHomeService(retrofit: Retrofit): com.hous.data.api.HomeApi = - retrofit.create(com.hous.data.api.HomeApi::class.java) - - @Provides - @Singleton - fun provideRulesService(retrofit: Retrofit): com.hous.data.api.RulesApi = - retrofit.create(com.hous.data.api.RulesApi::class.java) - - @Provides - @Singleton - fun provideProfileService(retrofit: Retrofit): com.hous.data.api.ProfileApi = - retrofit.create(com.hous.data.api.ProfileApi::class.java) - - @Provides - @Singleton - fun provideNewRulesApi(retrofit: Retrofit): com.hous.data.api.NewRulesApi = - retrofit.create(com.hous.data.api.NewRulesApi::class.java) } diff --git a/domain/src/main/java/com/hous/domain/model/Category.kt b/domain/src/main/java/com/hous/domain/model/Category.kt deleted file mode 100644 index f50a1bbe..00000000 --- a/domain/src/main/java/com/hous/domain/model/Category.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.hous.domain.model - -data class Category( - val id: String = "", - val categoryName: String = "", - val categoryIcon: String = "", - val ruleName: String = "", - var isChecked: Boolean = false -) diff --git a/domain/src/main/java/com/hous/domain/model/DayData.kt b/domain/src/main/java/com/hous/domain/model/DayData.kt deleted file mode 100644 index b1a6f9c8..00000000 --- a/domain/src/main/java/com/hous/domain/model/DayData.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.hous.domain.model - -data class DayData( - val day: String, - val dayState: State -) diff --git a/domain/src/main/java/com/hous/domain/model/Homie.kt b/domain/src/main/java/com/hous/domain/model/Homie.kt deleted file mode 100644 index 073804d5..00000000 --- a/domain/src/main/java/com/hous/domain/model/Homie.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.hous.domain.model - -data class Homie( - val id: String? = null, - val userName: String = "", - val typeName: String = "", - val typeId: String = "", - val typeColor: String = "", - val job: String = "", - val introduction: String = "", - val hashTag: List = emptyList(), - val typeScore: List = emptyList(), - var isChecked: Boolean = false, - val notificationState: Boolean = false -) From c6a74090814c6ee8dd4d2f6464d211150b162e5a Mon Sep 17 00:00:00 2001 From: murjune Date: Fri, 12 Aug 2022 03:07:42 +0900 Subject: [PATCH 02/11] =?UTF-8?q?#178=20[feat]=20App=20->=20HousApp=20?= =?UTF-8?q?=EB=84=A4=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20?= =?UTF-8?q?Timber=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/java/com/hous/hous_aos/App.kt | 7 ------- app/src/main/java/com/hous/hous_aos/HousApp.kt | 14 ++++++++++++++ .../java/com/hous/hous_aos/util/TimberDebugTree.kt | 12 ++++++++++++ data/build.gradle.kts | 1 + 5 files changed, 28 insertions(+), 8 deletions(-) delete mode 100644 app/src/main/java/com/hous/hous_aos/App.kt create mode 100644 app/src/main/java/com/hous/hous_aos/HousApp.kt create mode 100644 app/src/main/java/com/hous/hous_aos/util/TimberDebugTree.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f0ed0539..328609f0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ Date: Fri, 12 Aug 2022 05:48:46 +0900 Subject: [PATCH 03/11] =?UTF-8?q?#178=20[refact]=20domain=EC=97=90=20model?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hous_aos/ui/newrules/NewRulesScreen.kt | 6 +- .../hous_aos/ui/newrules/NewRulesViewModel.kt | 132 +++++++++--------- .../ui/newrules/component/CategoryDropDown.kt | 10 +- .../ui/newrules/component/CategoryItem.kt | 4 +- .../hous_aos/ui/newrules/component/Day.kt | 6 +- .../hous_aos/ui/newrules/component/DayList.kt | 4 +- .../ui/newrules/component/ManagerAddButton.kt | 4 +- .../ui/newrules/component/ManagerBox.kt | 6 +- .../ui/newrules/component/ManagerDropDown.kt | 18 +-- .../ui/newrules/component/ManagerItem.kt | 10 +- .../TempManagerRequest.kt | 0 .../com/hous/domain/model/CategoryInfo.kt | 9 ++ .../java/com/hous/domain/model/DayDataInfo.kt | 6 + .../java/com/hous/domain/model/HomieInfo.kt | 15 ++ .../java/com/hous/domain/model/Manager.kt | 18 +-- .../java/com/hous/domain/model/NewRuleInfo.kt | 4 +- .../java/com/hous/domain/model/RuleInfo.kt | 13 ++ .../com/hous/domain/model/TempManagerInfo.kt | 6 + .../hous/domain/model/rules/RulesTableInfo.kt | 8 ++ .../hous/domain/model/rules/RulesTodayInfo.kt | 9 ++ 20 files changed, 177 insertions(+), 111 deletions(-) rename data/src/main/java/com/hous/data/model/{response => request}/TempManagerRequest.kt (100%) create mode 100644 domain/src/main/java/com/hous/domain/model/CategoryInfo.kt create mode 100644 domain/src/main/java/com/hous/domain/model/DayDataInfo.kt create mode 100644 domain/src/main/java/com/hous/domain/model/HomieInfo.kt create mode 100644 domain/src/main/java/com/hous/domain/model/RuleInfo.kt create mode 100644 domain/src/main/java/com/hous/domain/model/TempManagerInfo.kt create mode 100644 domain/src/main/java/com/hous/domain/model/rules/RulesTableInfo.kt create mode 100644 domain/src/main/java/com/hous/domain/model/rules/RulesTodayInfo.kt diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesScreen.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesScreen.kt index 00f962fb..035ca47c 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesScreen.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesScreen.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.hous.domain.model.Homie +import com.hous.domain.model.HomieInfo import com.hous.hous_aos.R import com.hous.hous_aos.ui.newrules.component.CategoryItem import com.hous.hous_aos.ui.newrules.component.ManagerItem @@ -143,7 +143,7 @@ fun NewRulesScreen( Spacer(modifier = Modifier.size(12.dp)) } - itemsIndexed(uiState.ManagerList) { index, value -> + itemsIndexed(uiState.managerList) { index, value -> ManagerItem( manager = value, currentIndex = index, @@ -177,7 +177,7 @@ fun NewRulesScreen( } fun isAddDay( - homies: List, + homies: List, homieState: HashMap ): Boolean { var temp = false diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt index e0acbe07..7f9b6dc7 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt @@ -3,9 +3,9 @@ package com.hous.hous_aos.ui.newrules import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.hous.domain.model.Category -import com.hous.domain.model.DayData -import com.hous.domain.model.Homie +import com.hous.domain.model.CategoryInfo +import com.hous.domain.model.DayDataInfo +import com.hous.domain.model.HomieInfo import com.hous.domain.model.Manager import com.hous.domain.model.State import com.hous.domain.usecase.AddNewRuleUseCase @@ -29,8 +29,8 @@ class NewRulesViewModel @Inject constructor( val uiState = _uiState.asStateFlow() val buttonState: StateFlow = uiState.map { it.ruleName.isNotEmpty() && - it.categoryName.isNotEmpty() && - (uiState.value.checkBoxState == State.SELECT || isDayCheck()) + it.categoryName.isNotEmpty() && + (uiState.value.checkBoxState == State.SELECT || isDayCheck()) } .stateIn(viewModelScope, SharingStarted.WhileSubscribed(3000L), false) @@ -52,7 +52,7 @@ class NewRulesViewModel @Inject constructor( private fun isDayCheck(): Boolean { var isDay = true - for (manager in uiState.value.ManagerList) { + for (manager in uiState.value.managerList) { var temp = false for (dayList in manager.dayDataList) { if (dayList.dayState == State.SELECT) { @@ -105,89 +105,89 @@ class NewRulesViewModel @Inject constructor( if (isChange) { val tempManager = listOf( Manager( - uiState.value.ManagerList[0].managerHomie, + uiState.value.managerList[0].managerHomie, dayDataList = listOf( - DayData("월", State.UNSELECT), - DayData("화", State.UNSELECT), - DayData("수", State.UNSELECT), - DayData("목", State.UNSELECT), - DayData("금", State.UNSELECT), - DayData("토", State.UNSELECT), - DayData("일", State.UNSELECT) + DayDataInfo("월", State.UNSELECT), + DayDataInfo("화", State.UNSELECT), + DayDataInfo("수", State.UNSELECT), + DayDataInfo("목", State.UNSELECT), + DayDataInfo("금", State.UNSELECT), + DayDataInfo("토", State.UNSELECT), + DayDataInfo("일", State.UNSELECT) ) ) ) - _uiState.value = _uiState.value.copy(ManagerList = tempManager) + _uiState.value = _uiState.value.copy(managerList = tempManager) } else { val tempManager = listOf( Manager( - uiState.value.ManagerList[0].managerHomie, + uiState.value.managerList[0].managerHomie, dayDataList = listOf( - DayData("월", State.BLOCK), - DayData("화", State.BLOCK), - DayData("수", State.BLOCK), - DayData("목", State.BLOCK), - DayData("금", State.BLOCK), - DayData("토", State.BLOCK), - DayData("일", State.BLOCK) + DayDataInfo("월", State.BLOCK), + DayDataInfo("화", State.BLOCK), + DayDataInfo("수", State.BLOCK), + DayDataInfo("목", State.BLOCK), + DayDataInfo("금", State.BLOCK), + DayDataInfo("토", State.BLOCK), + DayDataInfo("일", State.BLOCK) ) ) ) - _uiState.value = _uiState.value.copy(ManagerList = tempManager) + _uiState.value = _uiState.value.copy(managerList = tempManager) } } fun deleteManager(index: Int) { - uiState.value.homieState[uiState.value.ManagerList[index].managerHomie.userName] = true - if (uiState.value.ManagerList.size > 1) { + uiState.value.homieState[uiState.value.managerList[index].managerHomie.userName] = true + if (uiState.value.managerList.size > 1) { val tempManager = mutableListOf() - _uiState.value.ManagerList.forEach { manager -> tempManager.add(manager) } + _uiState.value.managerList.forEach { manager -> tempManager.add(manager) } tempManager.removeAt(index) - _uiState.value = _uiState.value.copy(ManagerList = tempManager) + _uiState.value = _uiState.value.copy(managerList = tempManager) } else { - _uiState.value = _uiState.value.copy(ManagerList = listOf(Manager())) + _uiState.value = _uiState.value.copy(managerList = listOf(Manager())) setCheckBoxState("deleteManager", State.UNSELECT) } } - fun choiceManager(managerIndex: Int, homie: Homie) { - if (uiState.value.ManagerList[managerIndex].managerHomie.userName != "담당자 없음") { - _uiState.value.homieState[uiState.value.ManagerList[managerIndex].managerHomie.userName] = + fun choiceManager(managerIndex: Int, homie: HomieInfo) { + if (uiState.value.managerList[managerIndex].managerHomie.userName != "담당자 없음") { + _uiState.value.homieState[uiState.value.managerList[managerIndex].managerHomie.userName] = true } val tempManager = Manager( managerHomie = homie, - dayDataList = uiState.value.ManagerList[managerIndex].dayDataList + dayDataList = uiState.value.managerList[managerIndex].dayDataList ) val tempManagerList = mutableListOf() - _uiState.value.ManagerList.forEach { manager -> tempManagerList.add(manager) } + _uiState.value.managerList.forEach { manager -> tempManagerList.add(manager) } tempManagerList[managerIndex] = tempManager _uiState.value.homieState[homie.userName] = false - _uiState.value = _uiState.value.copy(ManagerList = tempManagerList) + _uiState.value = _uiState.value.copy(managerList = tempManagerList) } - fun selectDay(managerIndex: Int, dayData: DayData) { + fun selectDay(managerIndex: Int, dayData: DayDataInfo) { if (dayData.dayState != State.BLOCK) { val tempManager = Manager( - managerHomie = _uiState.value.ManagerList[managerIndex].managerHomie, + managerHomie = _uiState.value.managerList[managerIndex].managerHomie, dayDataList = changeDayState(dayData, managerIndex) ) val tempManagerList = mutableListOf() - uiState.value.ManagerList.forEach { manager -> tempManagerList.add(manager) } + uiState.value.managerList.forEach { manager -> tempManagerList.add(manager) } tempManagerList[managerIndex] = tempManager - _uiState.value = _uiState.value.copy(ManagerList = tempManagerList) + _uiState.value = _uiState.value.copy(managerList = tempManagerList) } } fun isShowAddButton(): Boolean = - uiState.value.ManagerList[uiState.value.ManagerList.size - 1].managerHomie.userName != "담당자 없음" + uiState.value.managerList[uiState.value.managerList.size - 1].managerHomie.userName != "담당자 없음" fun addManager() { val tempManagerList = mutableListOf() val nextManager = Manager(managerHomie = nextManager()) - uiState.value.ManagerList.forEach { manager -> tempManagerList.add(manager) } + uiState.value.managerList.forEach { manager -> tempManagerList.add(manager) } tempManagerList.add(nextManager) - _uiState.value = _uiState.value.copy(ManagerList = tempManagerList) + _uiState.value = _uiState.value.copy(managerList = tempManagerList) } fun addNewRule() { @@ -197,16 +197,16 @@ class NewRulesViewModel @Inject constructor( categoryId = uiState.value.categoryId, notificationState = uiState.value.notificationState, checkBoxState = uiState.value.checkBoxState, - managerList = uiState.value.ManagerList + managerList = uiState.value.managerList ) } } - private fun nextManager(): Homie { - var tempHomie = Homie("", "담당자 없음", typeColor = "NULL") + private fun nextManager(): HomieInfo { + var tempHomie = HomieInfo("", "담당자 없음", typeColor = "NULL") for (i in uiState.value.homies) { if (uiState.value.homieState[i.userName]!!) { - tempHomie = Homie( + tempHomie = HomieInfo( id = i.id, userName = i.userName, typeColor = i.typeColor @@ -218,23 +218,23 @@ class NewRulesViewModel @Inject constructor( return tempHomie } - private fun changeDayState(dayData: DayData, managerIndex: Int): List { - val tempDay = mutableListOf() - uiState.value.ManagerList[managerIndex].dayDataList.forEach { d -> + private fun changeDayState(dayData: DayDataInfo, managerIndex: Int): List { + val tempDay = mutableListOf() + uiState.value.managerList[managerIndex].dayDataList.forEach { d -> if (d.day == dayData.day) { when (dayData.dayState) { State.UNSELECT -> { - tempDay.add(DayData(d.day, State.SELECT)) + tempDay.add(DayDataInfo(d.day, State.SELECT)) setCheckBoxState("changeDayState Unselect", State.BLOCK) } State.SELECT -> { - tempDay.add(DayData(d.day, State.UNSELECT)) - if (uiState.value.ManagerList.size == 1) { + tempDay.add(DayDataInfo(d.day, State.UNSELECT)) + if (uiState.value.managerList.size == 1) { var isCheck = true - uiState.value.ManagerList[0].dayDataList.forEach { dayData -> + uiState.value.managerList[0].dayDataList.forEach { dayData -> if (dayData.dayState == State.SELECT) isCheck = false } - if (isCheck && uiState.value.ManagerList[0].managerHomie.userName == "담당자 없음") { + if (isCheck && uiState.value.managerList[0].managerHomie.userName == "담당자 없음") { setCheckBoxState("changeDayState select", State.UNSELECT) } } @@ -252,20 +252,20 @@ data class NewRulesUiState( val categoryId: String = "", val notificationState: Boolean = false, val checkBoxState: State = State.UNSELECT, - val ruleCategory: List = + val ruleCategory: List = listOf( - Category("1", "청소기"), - Category("2", "분리수거"), - Category("3", "세탁기"), - Category("4", "물 주기") + CategoryInfo("1", "청소기"), + CategoryInfo("2", "분리수거"), + CategoryInfo("3", "세탁기"), + CategoryInfo("4", "물 주기") ), - val homies: List = + val homies: List = listOf( - Homie("1", "강원용", typeColor = "RED"), - Homie("2", "이영주", typeColor = "BLUE"), - Homie("3", "이준원", typeColor = "YELLOW"), - Homie("4", "최인영", typeColor = "GREEN"), - Homie("5", "최소현", typeColor = "PURPLE") + HomieInfo("1", "강원용", typeColor = "RED"), + HomieInfo("2", "이영주", typeColor = "BLUE"), + HomieInfo("3", "이준원", typeColor = "YELLOW"), + HomieInfo("4", "최인영", typeColor = "GREEN"), + HomieInfo("5", "최소현", typeColor = "PURPLE") ), val homieState: HashMap = hashMapOf( "강원용" to true, @@ -274,5 +274,5 @@ data class NewRulesUiState( "최인영" to true, "최소현" to true ), - val ManagerList: List = listOf(Manager()) + val managerList: List = listOf(Manager()) ) diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryDropDown.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryDropDown.kt index b3c9ab53..5434575a 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryDropDown.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryDropDown.kt @@ -16,12 +16,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource +import com.hous.domain.model.CategoryInfo import com.hous.hous_aos.R -import com.hous.domain.model.Category @Composable fun CategoryDropDownMenu( - ruleCategoryList: List, + ruleCategoryList: List, setCategory: (String, String) -> Unit ) { var isExpanded by remember { mutableStateOf(false) } @@ -40,14 +40,14 @@ fun CategoryDropDownMenu( expanded = isExpanded, onDismissRequest = { isExpanded = false } ) { - ruleCategoryList.forEach { category -> + ruleCategoryList.forEach { categoryInfo -> DropdownMenuItem( onClick = { - setCategory(category.id, category.categoryName) + setCategory(categoryInfo.id, categoryInfo.categoryName) isExpanded = false } ) { - Text(category.categoryName) + Text(categoryInfo.categoryName) } } } diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryItem.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryItem.kt index 8d945f6b..b382f934 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryItem.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/CategoryItem.kt @@ -18,14 +18,14 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import com.hous.domain.model.CategoryInfo import com.hous.hous_aos.R -import com.hous.domain.model.Category @Composable fun CategoryItem( radius: Dp, categoryName: String, - ruleCategoryList: List, + ruleCategoryList: List, setCategory: (String, String) -> Unit ) { Box( diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/Day.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/Day.kt index dd9e653e..88b784ed 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/Day.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/Day.kt @@ -17,15 +17,15 @@ import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp -import com.hous.domain.model.DayData +import com.hous.domain.model.DayDataInfo import com.hous.domain.model.State import com.hous.hous_aos.R @Composable fun NewRulesDay( - dayData: DayData, + dayData: DayDataInfo, currentIndex: Int, - selectDay: (Int, DayData) -> Unit + selectDay: (Int, DayDataInfo) -> Unit ) { val color = when (dayData.dayState) { State.UNSELECT -> colorResource(id = R.color.white) diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/DayList.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/DayList.kt index f0c02486..278eb58a 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/DayList.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/DayList.kt @@ -5,14 +5,14 @@ import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.runtime.Composable import androidx.compose.ui.unit.dp -import com.hous.domain.model.DayData +import com.hous.domain.model.DayDataInfo import com.hous.domain.model.Manager @Composable fun NewRulesDayList( manager: Manager, currentIndex: Int, - selectDay: (Int, DayData) -> Unit + selectDay: (Int, DayDataInfo) -> Unit ) { LazyRow(horizontalArrangement = Arrangement.spacedBy(6.dp)) { itemsIndexed(manager.dayDataList) { _, value -> diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerAddButton.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerAddButton.kt index 922e59b6..3e36808f 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerAddButton.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerAddButton.kt @@ -16,13 +16,13 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import com.hous.domain.model.Homie +import com.hous.domain.model.HomieInfo import com.hous.hous_aos.R import com.hous.hous_aos.ui.newrules.isAddDay @Composable fun NewRulesAddMangerButton( - homies: List, + homies: List, homieState: HashMap, isShowAddButton: () -> Boolean, addManager: () -> Unit diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerBox.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerBox.kt index 53ac621d..ef01111e 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerBox.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerBox.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.hous.domain.model.Homie +import com.hous.domain.model.HomieInfo import com.hous.domain.model.Manager import com.hous.domain.model.State import com.hous.hous_aos.R @@ -30,10 +30,10 @@ fun ManagerBox( radius: Dp, managerIndex: Int, manager: Manager, - homies: List, + homies: List, homieState: HashMap, checkBoxState: State, - choiceManager: (Int, Homie) -> Unit + choiceManager: (Int, HomieInfo) -> Unit ) { Box( modifier = Modifier diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerDropDown.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerDropDown.kt index ab54ecad..ca9d45c8 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerDropDown.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerDropDown.kt @@ -29,18 +29,18 @@ import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp -import com.hous.hous_aos.R -import com.hous.domain.model.Homie +import com.hous.domain.model.HomieInfo import com.hous.domain.model.State +import com.hous.hous_aos.R import com.hous.hous_aos.ui.newrules.isAddDay @Composable fun ManagerDropDownMenu( managerIndex: Int, - homies: List, + homies: List, homieState: HashMap, checkBoxState: State, - choiceManager: (Int, Homie) -> Unit + choiceManager: (Int, HomieInfo) -> Unit ) { if (checkBoxState != State.SELECT && isAddDay(homies, homieState)) { var isExpanded by remember { mutableStateOf(false) } @@ -61,15 +61,15 @@ fun ManagerDropDownMenu( expanded = isExpanded, onDismissRequest = { isExpanded = false } ) { - homies.forEach { homie -> - if (homieState[homie.userName]!!) { + homies.forEach { homieInfo -> + if (homieState[homieInfo.userName]!!) { DropdownMenuItem( onClick = { - choiceManager(managerIndex, homie) + choiceManager(managerIndex, homieInfo) isExpanded = false } ) { - val color = when (homie.typeColor) { + val color = when (homieInfo.typeColor) { "RED" -> colorResource(id = R.color.hous_red) "BLUE" -> colorResource(id = R.color.hous_blue) "YELLOW" -> colorResource(id = R.color.hous_yellow) @@ -89,7 +89,7 @@ fun ManagerDropDownMenu( ) Spacer(modifier = Modifier.size(6.dp)) Text( - text = homie.userName, + text = homieInfo.userName, fontFamily = FontFamily( Font( resId = R.font.spoqa_han_sans_neo_medium, diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerItem.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerItem.kt index f2db6187..c0de3841 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerItem.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/component/ManagerItem.kt @@ -8,8 +8,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.hous.domain.model.DayData -import com.hous.domain.model.Homie +import com.hous.domain.model.DayDataInfo +import com.hous.domain.model.HomieInfo import com.hous.domain.model.Manager import com.hous.domain.model.State @@ -18,12 +18,12 @@ fun ManagerItem( manager: Manager, currentIndex: Int, checkBoxState: State, - homies: List, + homies: List, homieState: HashMap, setCheckBoxState: (String, State) -> Unit, deleteManager: (Int) -> Unit, - choiceManager: (Int, Homie) -> Unit, - selectDay: (Int, DayData) -> Unit + choiceManager: (Int, HomieInfo) -> Unit, + selectDay: (Int, DayDataInfo) -> Unit ) { Column { Row(verticalAlignment = Alignment.CenterVertically) { diff --git a/data/src/main/java/com/hous/data/model/response/TempManagerRequest.kt b/data/src/main/java/com/hous/data/model/request/TempManagerRequest.kt similarity index 100% rename from data/src/main/java/com/hous/data/model/response/TempManagerRequest.kt rename to data/src/main/java/com/hous/data/model/request/TempManagerRequest.kt diff --git a/domain/src/main/java/com/hous/domain/model/CategoryInfo.kt b/domain/src/main/java/com/hous/domain/model/CategoryInfo.kt new file mode 100644 index 00000000..a314c757 --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/CategoryInfo.kt @@ -0,0 +1,9 @@ +package com.hous.domain.model + +data class CategoryInfo( + val id: String = "", + val categoryName: String = "", + val categoryIcon: String = "", + val ruleName: String = "", + var isChecked: Boolean = false +) diff --git a/domain/src/main/java/com/hous/domain/model/DayDataInfo.kt b/domain/src/main/java/com/hous/domain/model/DayDataInfo.kt new file mode 100644 index 00000000..75e796bb --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/DayDataInfo.kt @@ -0,0 +1,6 @@ +package com.hous.domain.model + +data class DayDataInfo( + val day: String, + val dayState: State +) diff --git a/domain/src/main/java/com/hous/domain/model/HomieInfo.kt b/domain/src/main/java/com/hous/domain/model/HomieInfo.kt new file mode 100644 index 00000000..b6025642 --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/HomieInfo.kt @@ -0,0 +1,15 @@ +package com.hous.domain.model + +data class HomieInfo( + val id: String? = null, + val userName: String = "", + val typeName: String = "", + val typeId: String = "", + val typeColor: String = "", + val job: String = "", + val introduction: String = "", + val hashTag: List = emptyList(), + val typeScore: List = emptyList(), + var isChecked: Boolean = false, + val notificationState: Boolean = false +) diff --git a/domain/src/main/java/com/hous/domain/model/Manager.kt b/domain/src/main/java/com/hous/domain/model/Manager.kt index d4d30ba8..8cab792f 100644 --- a/domain/src/main/java/com/hous/domain/model/Manager.kt +++ b/domain/src/main/java/com/hous/domain/model/Manager.kt @@ -1,17 +1,17 @@ package com.hous.domain.model data class Manager( - val managerHomie: Homie = Homie( + val managerHomie: HomieInfo = HomieInfo( userName = "담당자 없음", typeColor = "NULL" ), - val dayDataList: List = listOf( - DayData("월", State.UNSELECT), - DayData("화", State.UNSELECT), - DayData("수", State.UNSELECT), - DayData("목", State.UNSELECT), - DayData("금", State.UNSELECT), - DayData("토", State.UNSELECT), - DayData("일", State.UNSELECT) + val dayDataList: List = listOf( + DayDataInfo("월", State.UNSELECT), + DayDataInfo("화", State.UNSELECT), + DayDataInfo("수", State.UNSELECT), + DayDataInfo("목", State.UNSELECT), + DayDataInfo("금ø", State.UNSELECT), + DayDataInfo("토", State.UNSELECT), + DayDataInfo("일", State.UNSELECT) ) ) diff --git a/domain/src/main/java/com/hous/domain/model/NewRuleInfo.kt b/domain/src/main/java/com/hous/domain/model/NewRuleInfo.kt index 7d05ae08..e18a7798 100644 --- a/domain/src/main/java/com/hous/domain/model/NewRuleInfo.kt +++ b/domain/src/main/java/com/hous/domain/model/NewRuleInfo.kt @@ -1,6 +1,6 @@ package com.hous.domain.model data class NewRuleInfo( - val ruleCategories: List = emptyList(), - val homies: List = emptyList() + val ruleCategories: List = emptyList(), + val homies: List = emptyList() ) diff --git a/domain/src/main/java/com/hous/domain/model/RuleInfo.kt b/domain/src/main/java/com/hous/domain/model/RuleInfo.kt new file mode 100644 index 00000000..ed40ee83 --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/RuleInfo.kt @@ -0,0 +1,13 @@ +package com.hous.domain.model + +data class RuleInfo( + val id: String = "", + var isChecked: Boolean = false, + val ruleName: String = "", + val todayMembersWithTypeColor: List = emptyList(), + val isTmpMember: Boolean = false, + val isAllChecked: Boolean = false, + val membersCnt: Int = 0, + val typeColors: List = emptyList(), + val categoryIcon: String = "" +) diff --git a/domain/src/main/java/com/hous/domain/model/TempManagerInfo.kt b/domain/src/main/java/com/hous/domain/model/TempManagerInfo.kt new file mode 100644 index 00000000..a23a2d9b --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/TempManagerInfo.kt @@ -0,0 +1,6 @@ +package com.hous.domain.model + +data class TempManagerInfo( + val id: String = "", + val homies: List = emptyList() +) diff --git a/domain/src/main/java/com/hous/domain/model/rules/RulesTableInfo.kt b/domain/src/main/java/com/hous/domain/model/rules/RulesTableInfo.kt new file mode 100644 index 00000000..5e73cc02 --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/rules/RulesTableInfo.kt @@ -0,0 +1,8 @@ +package com.hous.domain.model.rules + +import com.hous.domain.model.RuleInfo + +data class RulesTableInfo( + val keyRules: List, + val rules: List +) diff --git a/domain/src/main/java/com/hous/domain/model/rules/RulesTodayInfo.kt b/domain/src/main/java/com/hous/domain/model/rules/RulesTodayInfo.kt new file mode 100644 index 00000000..c2adf22e --- /dev/null +++ b/domain/src/main/java/com/hous/domain/model/rules/RulesTodayInfo.kt @@ -0,0 +1,9 @@ +package com.hous.domain.model.rules + +import com.hous.domain.model.CategoryInfo +import com.hous.domain.model.RuleInfo + +data class RulesTodayInfo( + val homeRuleCategories: List = emptyList(), + val todayTodoRules: List = emptyList() +) From a8e0578b6d42bdd2f060a77b9cb4e4819eb8e432 Mon Sep 17 00:00:00 2001 From: murjune Date: Fri, 12 Aug 2022 05:50:04 +0900 Subject: [PATCH 04/11] =?UTF-8?q?#178=20[refactor]=20domain=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EB=A1=9C=20repository=20=EC=9D=B4=EB=8F=99=20?= =?UTF-8?q?=EB=B0=8F=20domain=20model=EB=A1=9C=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/repository/RulesTodayRepository.kt | 37 ------------------- .../domain/repository/RulesTodayRepository.kt | 34 +++++++++++++++++ 2 files changed, 34 insertions(+), 37 deletions(-) delete mode 100644 data/src/main/java/com/hous/data/repository/RulesTodayRepository.kt create mode 100644 domain/src/main/java/com/hous/domain/repository/RulesTodayRepository.kt diff --git a/data/src/main/java/com/hous/data/repository/RulesTodayRepository.kt b/data/src/main/java/com/hous/data/repository/RulesTodayRepository.kt deleted file mode 100644 index 8b9654fc..00000000 --- a/data/src/main/java/com/hous/data/repository/RulesTodayRepository.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.hous.data.repository - -import com.hous.data.entity.Rule -import com.hous.data.model.WrapperClass -import com.hous.data.model.request.MyToDoCheckRequest -import com.hous.data.model.response.RulesTableResponse -import com.hous.data.model.response.RulesTodayInfoListResponse -import com.hous.data.model.response.TempManagerRequest -import com.hous.data.model.response.TempManagerResponse - -interface RulesTodayRepository { - suspend fun getTodayTodayInfoList(roomId: String): Result> - - suspend fun getTempManagerInfoList( - roomId: String, - rulesId: String - ): Result> - - suspend fun putTempManagerInfoList( - roomId: String, - ruleId: String, - tmpRuleMembers: TempManagerRequest - ): Result> - - suspend fun getMyTodoInfoList(roomId: String): Result>> - - suspend fun putMyToDoCheckLust( - roomId: String, - ruleId: String, - isCheck: MyToDoCheckRequest - ): Result> - - suspend fun getRuleTableInfoList( - roomId: String, - categoryId: String - ): Result> -} diff --git a/domain/src/main/java/com/hous/domain/repository/RulesTodayRepository.kt b/domain/src/main/java/com/hous/domain/repository/RulesTodayRepository.kt new file mode 100644 index 00000000..58abfcd2 --- /dev/null +++ b/domain/src/main/java/com/hous/domain/repository/RulesTodayRepository.kt @@ -0,0 +1,34 @@ +package com.hous.data.repository + +import com.hous.domain.model.RuleInfo +import com.hous.domain.model.TempManagerInfo +import com.hous.domain.model.rules.RulesTableInfo +import com.hous.domain.model.rules.RulesTodayInfo + +interface RulesTodayRepository { + suspend fun getTodayTodayInfoList(roomId: String): RulesTodayInfo? + + suspend fun getTempManagerInfoList( + roomId: String, + rulesId: String + ): TempManagerInfo? + + suspend fun putTempManagerInfoList( + roomId: String, + ruleId: String, + tmpRuleMembers: List + ): Any? + + suspend fun getMyTodoInfoList(roomId: String): List? + + suspend fun putMyToDoCheckLust( + roomId: String, + ruleId: String, + isCheck: Boolean + ) + + suspend fun getRuleTableInfoList( + roomId: String, + categoryId: String + ): RulesTableInfo? +} From eebc8a91eb251d9055edc3e75f36089dd2783955 Mon Sep 17 00:00:00 2001 From: murjune Date: Fri, 12 Aug 2022 05:51:22 +0900 Subject: [PATCH 05/11] =?UTF-8?q?#178=20[refact]=20data=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EB=82=B4=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/hous/data/api/HomeApi.kt | 26 +++-- .../main/java/com/hous/data/api/RulesApi.kt | 20 ++-- .../java/com/hous/data/entity/Category.kt | 4 +- .../main/java/com/hous/data/entity/Homie.kt | 4 +- .../main/java/com/hous/data/entity/Rule.kt | 17 +++- .../data/model/request/TempManagerRequest.kt | 2 +- .../model/response/TempManagerResponse.kt | 2 +- .../data/repository/NewRulesRepositoryImpl.kt | 8 +- .../repository/RulesTodayRepositoryImpl.kt | 55 +++++------ .../remote/RemoteRulesTodayDataSource.kt | 20 ++-- .../remote/RemoteRulesTodayDataSourceImpl.kt | 97 +++++++++++++++---- 11 files changed, 164 insertions(+), 91 deletions(-) diff --git a/data/src/main/java/com/hous/data/api/HomeApi.kt b/data/src/main/java/com/hous/data/api/HomeApi.kt index 7850477b..4657e482 100644 --- a/data/src/main/java/com/hous/data/api/HomeApi.kt +++ b/data/src/main/java/com/hous/data/api/HomeApi.kt @@ -6,46 +6,52 @@ import com.hous.data.entity.ResultData import com.hous.data.model.WrapperClass import com.hous.data.model.request.EventListRequest import com.hous.data.model.response.HomeResponse -import retrofit2.http.* +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.PUT +import retrofit2.http.Path + interface HomeApi { @GET("room/{roomId}/home") suspend fun getHomeList( @Path("roomId") roomId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass @DELETE("room/{roomId}/event/{eventId}") suspend fun deleteEvent( @Path("roomId") roomId: String, @Path("eventId") eventId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass @GET("room/{roomId}/event/{eventId}") suspend fun getEventList( @Path("roomId") roomId: String, @Path("eventId") eventId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass @PUT("room/{roomId}/event/{eventId}") suspend fun putEventList( @Path("roomId") roomId: String, @Path("eventId") eventId: String, - @Body body: com.hous.data.model.request.EventListRequest - ): com.hous.data.model.WrapperClass + @Body body: EventListRequest + ): WrapperClass @POST("room/{roomId}/event") suspend fun addEvent( @Path("roomId") roomId: String, - @Body body: com.hous.data.model.request.EventListRequest - ): com.hous.data.model.WrapperClass + @Body body: EventListRequest + ): WrapperClass @GET("user/{homieId}") suspend fun getHomieList( @Path("homieId") homieId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass @GET("user/{userId}/type") suspend fun getHomieResult( @Path("userId") userId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass } diff --git a/data/src/main/java/com/hous/data/api/RulesApi.kt b/data/src/main/java/com/hous/data/api/RulesApi.kt index ae041bd4..96d4e907 100644 --- a/data/src/main/java/com/hous/data/api/RulesApi.kt +++ b/data/src/main/java/com/hous/data/api/RulesApi.kt @@ -1,5 +1,11 @@ package com.hous.data.api +import com.hous.data.entity.Rule +import com.hous.data.model.WrapperClass +import com.hous.data.model.request.MyToDoCheckRequest +import com.hous.data.model.request.TempManagerRequest +import com.hous.data.model.response.RulesTodayInfoListResponse +import com.hous.data.model.response.TempManagerResponse import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.PUT @@ -9,32 +15,32 @@ interface RulesApi { @GET("room/{roomId}/rules") suspend fun getTodayTodayInfoList( @Path("roomId") roomId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass @GET("/room/{roomId}/rule/{ruleId}/today") suspend fun getTempManagerInfoList( @Path("roomId") roomId: String, @Path("ruleId") ruleId: String - ): com.hous.data.model.WrapperClass + ): WrapperClass @PUT("/room/{roomId}/rule/{ruleId}/today") suspend fun putTempManagerInfoList( @Path("roomId") roomId: String, @Path("ruleId") ruleId: String, - @Body tmpRuleMembers: com.hous.data.model.response.TempManagerRequest - ): com.hous.data.model.WrapperClass + @Body tmpRuleMembers: TempManagerRequest + ): Any? @GET("/room/{roomId}/rules/me") suspend fun getMyTodoInfoList( @Path("roomId") roomId: String - ): com.hous.data.model.WrapperClass> + ): WrapperClass> @PUT("room/{roomId}/rule/{ruleId}/check") suspend fun putMyToDoCheckList( @Path("roomId") roomId: String, @Path("ruleId") ruleId: String, - @Body isCheck: com.hous.data.model.request.MyToDoCheckRequest - ): com.hous.data.model.WrapperClass + @Body isCheck: MyToDoCheckRequest + ): WrapperClass @GET("/room/{roomId}/category/{categoryId}/rule") suspend fun getRuleTableInfoList( diff --git a/data/src/main/java/com/hous/data/entity/Category.kt b/data/src/main/java/com/hous/data/entity/Category.kt index 44e2b084..0b671f8d 100644 --- a/data/src/main/java/com/hous/data/entity/Category.kt +++ b/data/src/main/java/com/hous/data/entity/Category.kt @@ -1,7 +1,7 @@ package com.hous.data.entity import com.google.gson.annotations.SerializedName -import com.hous.domain.model.Category +import com.hous.domain.model.CategoryInfo data class Category( @SerializedName("_id") val id: String = "", @@ -10,5 +10,5 @@ data class Category( val ruleName: String = "", var isChecked: Boolean = false ) { - fun toCategory() = Category(id, categoryName, categoryIcon, ruleName, isChecked) + fun toCategoryInfo() = CategoryInfo(id, categoryName, categoryIcon, ruleName, isChecked) } diff --git a/data/src/main/java/com/hous/data/entity/Homie.kt b/data/src/main/java/com/hous/data/entity/Homie.kt index c64987ef..709d1ebb 100644 --- a/data/src/main/java/com/hous/data/entity/Homie.kt +++ b/data/src/main/java/com/hous/data/entity/Homie.kt @@ -1,7 +1,7 @@ package com.hous.data.entity import com.google.gson.annotations.SerializedName -import com.hous.domain.model.Homie +import com.hous.domain.model.HomieInfo data class Homie( @SerializedName("_id") val id: String? = null, @@ -16,7 +16,7 @@ data class Homie( var isChecked: Boolean = false, val notificationState: Boolean = false ) { - fun toHomie(): Homie = Homie( + fun toHomieInfo(): HomieInfo = HomieInfo( id, userName, typeName, diff --git a/data/src/main/java/com/hous/data/entity/Rule.kt b/data/src/main/java/com/hous/data/entity/Rule.kt index 431e58b4..366e1157 100644 --- a/data/src/main/java/com/hous/data/entity/Rule.kt +++ b/data/src/main/java/com/hous/data/entity/Rule.kt @@ -1,6 +1,7 @@ package com.hous.data.entity import com.google.gson.annotations.SerializedName +import com.hous.domain.model.RuleInfo data class Rule( @SerializedName("_id") val id: String = "", @@ -11,5 +12,17 @@ data class Rule( val isAllChecked: Boolean = false, val membersCnt: Int = 0, val typeColors: List = emptyList(), - val categoryIcon: String = "", -) + val categoryIcon: String = "" +) { + fun toRuleInfo() = RuleInfo( + id, + isChecked, + ruleName, + todayMembersWithTypeColor.map { it.toHomieInfo() }, + isTmpMember, + isAllChecked, + membersCnt, + typeColors, + categoryIcon + ) +} diff --git a/data/src/main/java/com/hous/data/model/request/TempManagerRequest.kt b/data/src/main/java/com/hous/data/model/request/TempManagerRequest.kt index d88975bd..a0b7b1c6 100644 --- a/data/src/main/java/com/hous/data/model/request/TempManagerRequest.kt +++ b/data/src/main/java/com/hous/data/model/request/TempManagerRequest.kt @@ -1,4 +1,4 @@ -package com.hous.data.model.response +package com.hous.data.model.request data class TempManagerRequest( val tmpRuleMembers: List = emptyList() diff --git a/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt b/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt index 9b51706e..50d0e053 100644 --- a/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt +++ b/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt @@ -7,4 +7,4 @@ data class TempManagerResponse( @SerializedName("_id") val id: String = "", val homies: List = emptyList() -) +) \ No newline at end of file diff --git a/data/src/main/java/com/hous/data/repository/NewRulesRepositoryImpl.kt b/data/src/main/java/com/hous/data/repository/NewRulesRepositoryImpl.kt index 33a8f07b..4dee5dc1 100644 --- a/data/src/main/java/com/hous/data/repository/NewRulesRepositoryImpl.kt +++ b/data/src/main/java/com/hous/data/repository/NewRulesRepositoryImpl.kt @@ -4,7 +4,7 @@ import android.util.Log import com.hous.data.model.request.Member import com.hous.data.model.request.NewRulesRequest import com.hous.data.source.remote.RemoteNewRulesDataSource -import com.hous.domain.model.DayData +import com.hous.domain.model.DayDataInfo import com.hous.domain.model.Manager import com.hous.domain.model.NewRuleInfo import com.hous.domain.model.State @@ -43,12 +43,12 @@ class NewRulesRepositoryImpl @Inject constructor( runCatching { val response = remoteNewRulesDataSource.getNewRuleList(roomId) NewRuleInfo( - response.data!!.ruleCategories.map { it.toCategory() }, - response.data.homies.map { it.toHomie() } + response.data!!.ruleCategories.map { it.toCategoryInfo() }, + response.data.homies.map { it.toHomieInfo() } ) } - private fun dayToInt(dayDataList: List): List { + private fun dayToInt(dayDataList: List): List { val tempList = mutableListOf() for (index in 0 until 7) { if (dayDataList[index].dayState == State.SELECT) tempList.add(index) diff --git a/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt b/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt index bbf4f730..21a92d32 100644 --- a/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt +++ b/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt @@ -3,63 +3,54 @@ package com.hous.data.repository import com.hous.data.entity.Rule import com.hous.data.model.WrapperClass import com.hous.data.model.request.MyToDoCheckRequest +import com.hous.data.model.request.TempManagerRequest import com.hous.data.model.response.RulesTableResponse -import com.hous.data.model.response.RulesTodayInfoListResponse -import com.hous.data.model.response.TempManagerRequest -import com.hous.data.model.response.TempManagerResponse import com.hous.data.source.remote.RemoteRulesTodayDataSource +import com.hous.domain.model.RuleInfo +import com.hous.domain.model.TempManagerInfo +import com.hous.domain.model.rules.RulesTableInfo +import com.hous.domain.model.rules.RulesTodayInfo import javax.inject.Inject class RulesTodayRepositoryImpl @Inject constructor( private val remoteRulesTodayDataSource: RemoteRulesTodayDataSource ) : RulesTodayRepository { - override suspend fun getTodayTodayInfoList(roomId: String): Result> { - return runCatching { remoteRulesTodayDataSource.getTodayTodayInfoList(roomId) } - } + override suspend fun getTodayTodayInfoList(roomId: String): RulesTodayInfo? = + remoteRulesTodayDataSource.getTodayTodayInfoList(roomId) override suspend fun getTempManagerInfoList( roomId: String, rulesId: String - ): Result> { - return runCatching { remoteRulesTodayDataSource.getTempManagerInfoList(roomId, rulesId) } - } + ): TempManagerInfo? = remoteRulesTodayDataSource.getTempManagerInfoList(roomId, rulesId) override suspend fun putTempManagerInfoList( roomId: String, ruleId: String, - tmpRuleMembers: TempManagerRequest - ): Result> { - return runCatching { - remoteRulesTodayDataSource.putTempManagerInfoList( - roomId, - ruleId, - tmpRuleMembers - ) - } + tmpRuleMembers: List + ): Any? { + return remoteRulesTodayDataSource.putTempManagerInfoList( + roomId, + ruleId, + TempManagerRequest(tmpRuleMembers) + ) } - override suspend fun getMyTodoInfoList(roomId: String): Result>> { - return runCatching { - remoteRulesTodayDataSource.getMyToDoInfoList(roomId) - } + override suspend fun getMyTodoInfoList(roomId: String): List? { + return remoteRulesTodayDataSource.getMyToDoInfoList(roomId) + } override suspend fun putMyToDoCheckLust( roomId: String, ruleId: String, - isCheck: MyToDoCheckRequest - ): Result> { - return runCatching { - remoteRulesTodayDataSource.putMyToDoCheckLust(roomId, ruleId, isCheck) - } + isCheck: Boolean + ) { + remoteRulesTodayDataSource.putMyToDoCheckLust(roomId, ruleId, MyToDoCheckRequest(isCheck)) } override suspend fun getRuleTableInfoList( roomId: String, categoryId: String - ): Result> { - return runCatching { - remoteRulesTodayDataSource.getRuleTableInfoList(roomId, categoryId) - } - } + ): RulesTableInfo? = + remoteRulesTodayDataSource.getRuleTableInfoList(roomId, categoryId) } diff --git a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt index c2e95549..d531937f 100644 --- a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt +++ b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt @@ -4,34 +4,36 @@ import com.hous.data.entity.Rule import com.hous.data.model.WrapperClass import com.hous.data.model.request.MyToDoCheckRequest import com.hous.data.model.response.RulesTableResponse -import com.hous.data.model.response.RulesTodayInfoListResponse -import com.hous.data.model.response.TempManagerRequest -import com.hous.data.model.response.TempManagerResponse +import com.hous.data.model.request.TempManagerRequest +import com.hous.domain.model.RuleInfo +import com.hous.domain.model.rules.RulesTodayInfo +import com.hous.domain.model.TempManagerInfo +import com.hous.domain.model.rules.RulesTableInfo interface RemoteRulesTodayDataSource { - suspend fun getTodayTodayInfoList(roomId: String): WrapperClass + suspend fun getTodayTodayInfoList(roomId: String): RulesTodayInfo? suspend fun getTempManagerInfoList( roomId: String, ruleId: String - ): WrapperClass + ): TempManagerInfo? suspend fun putTempManagerInfoList( roomId: String, ruleId: String, tmpRuleMembers: TempManagerRequest - ): WrapperClass + ): Any? - suspend fun getMyToDoInfoList(roomId: String): WrapperClass> + suspend fun getMyToDoInfoList(roomId: String): List? suspend fun putMyToDoCheckLust( roomId: String, ruleId: String, isCheck: MyToDoCheckRequest - ): WrapperClass + ) suspend fun getRuleTableInfoList( roomId: String, categoryId: String - ): WrapperClass + ): RulesTableInfo? } diff --git a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt index 64db47b4..c883c87c 100644 --- a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt +++ b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt @@ -2,13 +2,13 @@ package com.hous.data.source.remote import com.hous.data.BuildConfig import com.hous.data.api.RulesApi -import com.hous.data.entity.Rule -import com.hous.data.model.WrapperClass import com.hous.data.model.request.MyToDoCheckRequest -import com.hous.data.model.response.RulesTableResponse -import com.hous.data.model.response.RulesTodayInfoListResponse -import com.hous.data.model.response.TempManagerRequest -import com.hous.data.model.response.TempManagerResponse +import com.hous.data.model.request.TempManagerRequest +import com.hous.domain.model.RuleInfo +import com.hous.domain.model.TempManagerInfo +import com.hous.domain.model.rules.RulesTableInfo +import com.hous.domain.model.rules.RulesTodayInfo +import timber.log.Timber import javax.inject.Inject class RemoteRulesTodayDataSourceImpl @Inject constructor( @@ -17,41 +17,96 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( RemoteRulesTodayDataSource { private val ROOM_ID = BuildConfig.ROOM_ID - override suspend fun getTodayTodayInfoList(roomId: String): WrapperClass { - return rulesApi.getTodayTodayInfoList(ROOM_ID) - } + override suspend fun getTodayTodayInfoList(roomId: String): RulesTodayInfo? = + runCatching { + rulesApi.getTodayTodayInfoList(ROOM_ID) + }.fold( + { response -> + return RulesTodayInfo( + response.data?.homeRuleCategories!!.map { it.toCategoryInfo() }, + response.data.todayTodoRules.map { it.toRuleInfo() }) + }, + { + Timber.e(it.message) + return null + } + ) override suspend fun getTempManagerInfoList( roomId: String, ruleId: String - ): WrapperClass { - return rulesApi.getTempManagerInfoList(ROOM_ID, ruleId) - } + ): TempManagerInfo? = + runCatching { + rulesApi.getTempManagerInfoList(ROOM_ID, ruleId) + }.fold( + { response -> + return TempManagerInfo( + response.data!!.id, + response.data.homies.map { it.toHomieInfo() } + ) + }, + { + Timber.e(it.message) + return null + } + ) + override suspend fun putTempManagerInfoList( roomId: String, ruleId: String, tmpRuleMembers: TempManagerRequest - ): WrapperClass { - return rulesApi.putTempManagerInfoList(ROOM_ID, ruleId, tmpRuleMembers) + ): Any? { + return runCatching { + rulesApi.putTempManagerInfoList( + ROOM_ID, + ruleId, + tmpRuleMembers + ) + }.fold( + {}, { + Timber.e(it.message) + null + } + ) } - override suspend fun getMyToDoInfoList(roomId: String): WrapperClass> { - return rulesApi.getMyTodoInfoList(ROOM_ID) + override suspend fun getMyToDoInfoList(roomId: String): List? { + return runCatching { rulesApi.getMyTodoInfoList(ROOM_ID) }.fold( + { response -> + response.data?.map { it.toRuleInfo() } + }, + { + Timber.e(it.message) + null + } + ) } override suspend fun putMyToDoCheckLust( roomId: String, ruleId: String, isCheck: MyToDoCheckRequest - ): WrapperClass { - return rulesApi.putMyToDoCheckList(ROOM_ID, ruleId, isCheck) + ) { + runCatching { rulesApi.putMyToDoCheckList(ROOM_ID, ruleId, isCheck) }.onFailure { + Timber.e(it.message) + } } override suspend fun getRuleTableInfoList( roomId: String, categoryId: String - ): WrapperClass { - return rulesApi.getRuleTableInfoList(ROOM_ID, categoryId) - } + ): RulesTableInfo? = + runCatching { rulesApi.getRuleTableInfoList(ROOM_ID, categoryId) }.fold( + { response -> + return RulesTableInfo( + response.data?.keyRules!!.map { it.toRuleInfo() }, + response.data.rules.map { it.toRuleInfo() } + ) + }, + { + Timber.e(it.message) + null + } + ) } From 6402b5bfb61648dcca77ef143a760ecc7d0f7f06 Mon Sep 17 00:00:00 2001 From: murjune Date: Fri, 12 Aug 2022 05:52:19 +0900 Subject: [PATCH 06/11] =?UTF-8?q?#178=20[refact]=20presentation=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EB=82=B4=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/rules/HomeRulesCategoryAdapter.kt | 18 +- .../hous/hous_aos/ui/rules/RulesFragment.kt | 2 +- .../hous/hous_aos/ui/rules/RulesViewModel.kt | 173 ++++++------------ .../ui/rules/my_to_do/MyToDoAdapter.kt | 16 +- .../rules/rules_table/GeneralRulesAdapter.kt | 25 ++- .../ui/rules/rules_table/KeyRulesAdapter.kt | 12 +- .../rules/rules_table/RulesTableFragment.kt | 3 +- .../ui/rules/today_to_do/TodayToDoFragment.kt | 1 - .../ui/rules/today_to_do/TodayTodoAdapter.kt | 39 ++-- .../tem_dialog/TempMangerAdapter.kt | 16 +- .../main/res/layout/fragment_rules_table.xml | 1 + .../main/res/layout/item_rules_my_to_do.xml | 2 +- app/src/main/res/layout/item_rules_rule.xml | 2 +- .../res/layout/item_rules_table_general.xml | 2 +- .../main/res/layout/item_rules_table_keys.xml | 2 +- .../res/layout/item_rules_tmp_managers.xml | 2 +- .../item_rules_today_to_do_item_multi.xml | 2 +- .../item_rules_today_to_do_item_none.xml | 6 +- .../item_rules_today_to_do_item_one.xml | 2 +- 19 files changed, 128 insertions(+), 198 deletions(-) diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/HomeRulesCategoryAdapter.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/HomeRulesCategoryAdapter.kt index 0d40198e..bbd5d91b 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/HomeRulesCategoryAdapter.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/HomeRulesCategoryAdapter.kt @@ -6,7 +6,7 @@ import androidx.annotation.DrawableRes import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.hous.data.entity.Category +import com.hous.domain.model.CategoryInfo import com.hous.hous_aos.R import com.hous.hous_aos.databinding.ItemRulesRuleBinding @@ -16,7 +16,7 @@ class HomeRulesCategoryAdapter( private val onPlusClick: () -> Unit, private val onChangeIsSelected: (Int) -> Unit ) : - ListAdapter( + ListAdapter( CategoryOfRuleDiffUtilCallback ) { private val iconTypeHashMap: HashMap = hashMapOf( @@ -79,7 +79,7 @@ class HomeRulesCategoryAdapter( private val binding: ItemRulesRuleBinding ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: com.hous.data.entity.Category) { + fun onBind(data: CategoryInfo) { binding.data = data binding.iconType = iconTypeHashMap[data.categoryIcon] /** 앱잼 내에서는 비활성화*/ @@ -100,7 +100,7 @@ class HomeRulesCategoryAdapter( private val binding: ItemRulesRuleBinding ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: com.hous.data.entity.Category) { + fun onBind(data: CategoryInfo) { binding.data = data binding.iconType = CategoryIconType.NONE /** 앱잼 내에서는 비활성화*/ @@ -112,17 +112,17 @@ class HomeRulesCategoryAdapter( companion object { private val CategoryOfRuleDiffUtilCallback = - object : DiffUtil.ItemCallback() { + object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: com.hous.data.entity.Category, - newItem: com.hous.data.entity.Category + oldItem: CategoryInfo, + newItem: CategoryInfo ): Boolean { return oldItem.id == newItem.id } override fun areContentsTheSame( - oldItem: com.hous.data.entity.Category, - newItem: com.hous.data.entity.Category + oldItem: CategoryInfo, + newItem: CategoryInfo ): Boolean { return oldItem == newItem } diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt index 6d489934..60ca43df 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.fragment.app.commit import androidx.fragment.app.replace +import com.hous.hous_aos.BuildConfig import com.hous.hous_aos.R import com.hous.hous_aos.databinding.FragmentRulesBinding import com.hous.hous_aos.ui.rules.my_to_do.MyToDoFragment @@ -37,7 +38,6 @@ class RulesFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - initTransaction() initAdapter() observeCategory() diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt index a81fedd2..0f716d4d 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt @@ -1,18 +1,19 @@ package com.hous.hous_aos.ui.rules -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.hous.data.entity.Category -import com.hous.data.entity.Homie -import com.hous.data.entity.Rule -import com.hous.data.model.response.TempManagerRequest import com.hous.data.repository.RulesTodayRepository +import com.hous.domain.model.CategoryInfo +import com.hous.domain.model.HomieInfo +import com.hous.domain.model.RuleInfo +import com.hous.domain.model.TempManagerInfo +import com.hous.domain.model.rules.RulesTodayInfo import dagger.hilt.android.lifecycle.HiltViewModel -import javax.inject.Inject import kotlinx.coroutines.launch +import timber.log.Timber +import javax.inject.Inject @HiltViewModel class RulesViewModel @Inject constructor( @@ -25,26 +26,26 @@ class RulesViewModel @Inject constructor( val isSelectedCategorySmile: LiveData get() = _isSelectedCategorySmile private var _categoryOfRuleList = - MutableLiveData>() + MutableLiveData>() val categoryOfRuleList get() = _categoryOfRuleList private var _todayTodoList = - MutableLiveData>() + MutableLiveData>() val todayTodoList get() = _todayTodoList private var _myTodoList = - MutableLiveData>() + MutableLiveData>() val myTodoList get() = _myTodoList private var _keyRulesTableList = - MutableLiveData>() + MutableLiveData>() val keyRulesTableList get() = _keyRulesTableList private var _generalRulesTableList = - MutableLiveData>() + MutableLiveData>() val generalRulesTableList get() = _generalRulesTableList - private var _tmpManagerList = MutableLiveData>() + private var _tmpManagerList = MutableLiveData>() val tmpManagerList get() = _tmpManagerList private var _tmpTodayToDoPosition = MutableLiveData(0) @@ -61,25 +62,18 @@ class RulesViewModel @Inject constructor( init { viewModelScope.launch { - rulesTodayRepository.getTodayTodayInfoList("") - .onSuccess { - _todayTodoList.value = it.data!!.todayTodoRules - _categoryOfRuleList.value = it.data!!.homeRuleCategories - _categoryOfRuleList.value = (_categoryOfRuleList.value!!).plus( - Category( - id = "62d6b94e0e9be86f165d48db", - categoryName = "없음", - categoryIcon = "CLEAN" - ) + val rulesTodayInfo: RulesTodayInfo? = rulesTodayRepository.getTodayTodayInfoList("") + rulesTodayInfo?.let { + Timber.d("RulesViewModel init") + _todayTodoList.value = it.todayTodoRules + _categoryOfRuleList.value = it.homeRuleCategories.plus( + CategoryInfo( + id = "62d6b94e0e9be86f165d48db", + categoryName = "없음", + categoryIcon = "CLEAN" ) - Log.d( - TAG, - "통신 시작 -- ${_todayTodoList?.value}" - ) - } - .onFailure { - Log.d(TAG, "RulesViewModel - init - getRulesTodayList fail : ${it.message}") - } + ) + } } } @@ -92,24 +86,13 @@ class RulesViewModel @Inject constructor( _tmpManagerList.value?.forEach { if (it.isChecked) clickedTmpManagerList.add(it.id!!) } - val tmp = TempManagerRequest(clickedTmpManagerList) - Log.d( - TAG, - "Put -- tmp.tmpRuleMembers: ${tmp.tmpRuleMembers} tmp.size : ${tmp.tmpRuleMembers.size}" - ) + viewModelScope.launch { rulesTodayRepository.putTempManagerInfoList( "", _todayTodoList.value!![tmpTodayToDoPosition.value!!].id, - tmp - ) - .onSuccess { - fetchToTodayToDoList() - } - .onFailure { - Log.d(TAG, " result fail : $tmp") - Log.d(TAG, " result fail : ${it.message}") - } + clickedTmpManagerList + )?.let { fetchToTodayToDoList() } } } @@ -124,54 +107,32 @@ class RulesViewModel @Inject constructor( /** get * 임시 담당자 다이얼로그 조회 */ fun fetchToTmpManagerList(position: Int) { - Log.d( - TAG, - "RulesViewModel - fetchToTmpManagerList() _todayTodoList.value!![position].id: ${_todayTodoList.value!![position].id}" - ) viewModelScope.launch { - rulesTodayRepository.getTempManagerInfoList("", _todayTodoList.value!![position].id) - .onSuccess { - _tmpManagerList.value = it.data!!.homies - _tmpTodayToDoPosition.postValue(position) - } - .onFailure { - Log.d(TAG, "RulesViewModel - fetchToTmpManagerList() - ${it.message}") - } + val tempManagerInfo: TempManagerInfo? = + rulesTodayRepository.getTempManagerInfoList("", _todayTodoList.value!![position].id) + tempManagerInfo?.let { + _tmpManagerList.value = it.homies + _tmpTodayToDoPosition.value = position + } + } } - fun fetchToTodayToDoList() { + fun fetchToTodayToDoList() = viewModelScope.launch { - rulesTodayRepository.getTodayTodayInfoList("") - .onSuccess { - _todayTodoList.value = it.data!!.todayTodoRules -// Log.d( -// TAG, -// "다시서버통신 -- Size: ${_todayTodoList?.value!![0].todayMembersWithTypeColor.size}" -// ) - } - .onFailure { - Log.d( - TAG, - "RulesViewModel - init - getRulesTodayList fail : ${it.message}" - ) - } + rulesTodayRepository.getTodayTodayInfoList("")?.let { + _todayTodoList.value = it.todayTodoRules + } } - } + /** get * My -To - DO 서버통신*/ fun fetchToMyTodayToDoList() { viewModelScope.launch { - rulesTodayRepository.getMyTodoInfoList("") - .onSuccess { - _myTodoList.value = it.data!! - Log.d(TAG, "RulesViewModel - fetchToMyTodayToDoList() called") - Log.d("MYTODO", "Success ") - } - .onFailure { - Log.d(TAG, "fail : ${it.message}") - } + rulesTodayRepository.getMyTodoInfoList("")?.let { + _myTodoList.value = it + } } } @@ -187,17 +148,8 @@ class RulesViewModel @Inject constructor( rulesTodayRepository.putMyToDoCheckLust( "", id, - com.hous.data.model.request.MyToDoCheckRequest(checked) + checked ) - .onSuccess { - Log.d(TAG, "Success - id: $id, checked: $checked ") - } - .onFailure { - Log.d( - TAG, - "fail - $id, checked: $checked - :${it.message}" - ) - } } } @@ -208,33 +160,17 @@ class RulesViewModel @Inject constructor( val categoryId = categoryOfRuleList.value!![position].id _categoryName.value = categoryOfRuleList.value!![position].categoryName _categoryId.value = categoryOfRuleList.value!![position].id - Log.d("RulesViewModel", "categoryId: $categoryId") viewModelScope.launch { - rulesTodayRepository.getRuleTableInfoList("", categoryId) - .onSuccess { - Log.d("RulesViewModel", "Success - RulesTableList() ${it.message}") - val data = it.data - Log.d("RulesViewModel", "Success- data: $data") - val tmpGeneralRulesTableList = data!!.rules - val tmpKeyRulesTableList = data.keyRules - val totalRulesDataSize = - tmpGeneralRulesTableList.size + tmpKeyRulesTableList.size - - _ruleTableSize.value = totalRulesDataSize - _generalRulesTableList.value = tmpGeneralRulesTableList - _keyRulesTableList.value = tmpKeyRulesTableList - Log.d( - "RulesViewModel", - "Success -keyRulesTableList: ${generalRulesTableList.value}" - ) - Log.d( - "RulesViewModel", - "Success -tmpGeneralRulesTableList: ${keyRulesTableList.value}" - ) - } - .onFailure { - Log.d("RulesViewModel", "Fail - RulesTableList() ${it.message}") - } + rulesTodayRepository.getRuleTableInfoList("", categoryId)?.let { + val tmpGeneralRulesTableList = it.rules + val tmpKeyRulesTableList = it.keyRules + val totalRulesDataSize = + tmpGeneralRulesTableList.size + tmpKeyRulesTableList.size + + _ruleTableSize.value = totalRulesDataSize + _generalRulesTableList.value = tmpGeneralRulesTableList + _keyRulesTableList.value = tmpKeyRulesTableList + } } } @@ -269,7 +205,4 @@ class RulesViewModel @Inject constructor( _categoryOfRuleList.value = tmpCategoryOfRuleList.toList() } - companion object { - private const val TAG = "RulesViewModel" - } } diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/my_to_do/MyToDoAdapter.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/my_to_do/MyToDoAdapter.kt index 4b0ad9be..17e7c127 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/my_to_do/MyToDoAdapter.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/my_to_do/MyToDoAdapter.kt @@ -5,11 +5,11 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.hous.data.entity.Rule +import com.hous.domain.model.RuleInfo import com.hous.hous_aos.databinding.ItemRulesMyToDoBinding class MyToDoAdapter(private val onClickIcon: (Int) -> Unit) : - ListAdapter( + ListAdapter( MyTodoDiffUtilCallback ) { private val iconTypeHashMap: HashMap = hashMapOf( @@ -28,7 +28,7 @@ class MyToDoAdapter(private val onClickIcon: (Int) -> Unit) : private val iconTypeHashMap: HashMap, private val onClickIcon: (Int) -> Unit ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: Rule) { + fun onBind(data: RuleInfo) { binding.data = data binding.iconType = iconTypeHashMap[data.categoryIcon] binding.clMyToDo.setOnClickListener { @@ -55,18 +55,18 @@ class MyToDoAdapter(private val onClickIcon: (Int) -> Unit) : companion object { private val MyTodoDiffUtilCallback = - object : DiffUtil.ItemCallback() { + object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: Rule, - newItem: Rule + oldItem: RuleInfo, + newItem: RuleInfo ): Boolean { return oldItem.id == newItem.id } override fun areContentsTheSame( - oldItem: Rule, - newItem: Rule + oldItem: RuleInfo, + newItem: RuleInfo ): Boolean { return oldItem == newItem } diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/GeneralRulesAdapter.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/GeneralRulesAdapter.kt index 74714ca9..8bdfbbb7 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/GeneralRulesAdapter.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/GeneralRulesAdapter.kt @@ -1,17 +1,17 @@ package com.hous.hous_aos.ui.rules.rules_table -import android.util.Log import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.hous.data.entity.Rule +import com.hous.domain.model.RuleInfo import com.hous.hous_aos.databinding.ItemRulesTableGeneralBinding import com.hous.hous_aos.ui.rules.IconColor +import timber.log.Timber class GeneralRulesAdapter : - ListAdapter(generalRulesDiffUtil) { + ListAdapter(generalRulesDiffUtil) { private val iconColorHashMap: HashMap = hashMapOf( "RED" to IconColor.RED, @@ -30,8 +30,8 @@ class GeneralRulesAdapter : override fun onBindViewHolder(holder: GeneralRulesViewHolder, position: Int) { val currentItem = currentList[position] - Log.d("크기", "$currentList") - Log.d("크기", "${currentList.size}") + Timber.d("크기", "$currentList") + Timber.d("크기", "${currentList.size}") holder.onBind(currentItem) } @@ -40,11 +40,10 @@ class GeneralRulesAdapter : private val iconColorHashMap: HashMap ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: Rule) { + fun onBind(data: RuleInfo) { binding.data = data val memberCnt = if (data.membersCnt >= 4) 3 else data.membersCnt - Log.d( - "GeneralAdapter", + Timber.d( "memberCnt:$memberCnt , data.iconList.size 값 : ${data.typeColors.size} ,data.iconList: ${data.typeColors} 이 들어왔습니다." ) when (memberCnt) { @@ -73,17 +72,17 @@ class GeneralRulesAdapter : } companion object { - private val generalRulesDiffUtil = object : DiffUtil.ItemCallback() { + private val generalRulesDiffUtil = object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: Rule, - newItem: Rule + oldItem: RuleInfo, + newItem: RuleInfo ): Boolean { return oldItem.id == newItem.id } override fun areContentsTheSame( - oldItem: Rule, - newItem: Rule + oldItem: RuleInfo, + newItem: RuleInfo ): Boolean { return oldItem == newItem } diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/KeyRulesAdapter.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/KeyRulesAdapter.kt index a8a80a6b..5a0b3954 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/KeyRulesAdapter.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/KeyRulesAdapter.kt @@ -5,11 +5,11 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.hous.data.entity.Rule +import com.hous.domain.model.RuleInfo import com.hous.hous_aos.databinding.ItemRulesTableKeysBinding class KeyRulesAdapter : - ListAdapter(rulesTableDiffUtil) { + ListAdapter(rulesTableDiffUtil) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KeyRulesViewHolder { val binding = @@ -24,18 +24,18 @@ class KeyRulesAdapter : class KeyRulesViewHolder(private val binding: ItemRulesTableKeysBinding) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: Rule) { + fun onBind(data: RuleInfo) { binding.data = data } } companion object { - private val rulesTableDiffUtil = object : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: Rule, newItem: Rule): Boolean { + private val rulesTableDiffUtil = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: RuleInfo, newItem: RuleInfo): Boolean { return oldItem.id == newItem.id } - override fun areContentsTheSame(oldItem: Rule, newItem: Rule): Boolean { + override fun areContentsTheSame(oldItem: RuleInfo, newItem: RuleInfo): Boolean { return oldItem == newItem } } diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/RulesTableFragment.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/RulesTableFragment.kt index 11fff3b6..d129a49d 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/RulesTableFragment.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/rules_table/RulesTableFragment.kt @@ -5,7 +5,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.compose.runtime.snapshots.Snapshot.Companion.observe import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels @@ -27,7 +26,7 @@ class RulesTableFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { _binding = DataBindingUtil.inflate(inflater, R.layout.fragment_rules_table, container, false) binding.viewModel = viewModel diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayToDoFragment.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayToDoFragment.kt index 18385389..1bc6cfa9 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayToDoFragment.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayToDoFragment.kt @@ -13,7 +13,6 @@ import com.hous.hous_aos.R import com.hous.hous_aos.databinding.FragmentTodayToDoBinding import com.hous.hous_aos.ui.rules.RulesViewModel import com.hous.hous_aos.ui.rules.ToDoViewType -import com.hous.hous_aos.ui.rules.adapter.TodayTodoAdapter import com.hous.hous_aos.ui.rules.my_to_do.MyToDoFragment import com.hous.hous_aos.ui.rules.today_to_do.tem_dialog.TempManagerDialogFragment import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayTodoAdapter.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayTodoAdapter.kt index e3d46fd6..45813100 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayTodoAdapter.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/TodayTodoAdapter.kt @@ -1,23 +1,23 @@ -package com.hous.hous_aos.ui.rules.adapter +package com.hous.hous_aos.ui.rules.today_to_do -import android.util.Log import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.hous.data.entity.Rule +import com.hous.domain.model.HomieInfo +import com.hous.domain.model.RuleInfo import com.hous.hous_aos.databinding.ItemRulesTodayToDoItemMultiBinding import com.hous.hous_aos.databinding.ItemRulesTodayToDoItemNoneBinding import com.hous.hous_aos.databinding.ItemRulesTodayToDoItemOneBinding import com.hous.hous_aos.ui.rules.IconColor -import com.hous.hous_aos.ui.rules.today_to_do.ItemToDoViewType +import timber.log.Timber class TodayTodoAdapter( private val onClickIcon: () -> Unit, private val fetchToTmpManagerList: (Int) -> Unit ) : - ListAdapter( + ListAdapter( TodayTodoDiffUtilCallback ) { @@ -81,8 +81,8 @@ class TodayTodoAdapter( private val onClickIcon: () -> Unit, private val binding: ItemRulesTodayToDoItemNoneBinding ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: com.hous.data.entity.Rule) { - Log.d(TAG, "NONE : , data: $data") + fun onBind(data: RuleInfo) { + Timber.d("NONE : , data: $data") binding.data = data binding.ivManagerEmpty.setOnClickListener { fetchToTmpManagerList(absoluteAdapterPosition) @@ -96,8 +96,8 @@ class TodayTodoAdapter( private val onClickIcon: () -> Unit, private val binding: ItemRulesTodayToDoItemOneBinding ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: com.hous.data.entity.Rule) { - Log.d(TAG, "One : , data: $data") + fun onBind(data: RuleInfo) { + Timber.d("One : , data: $data") binding.data = data binding.tvManager.text = changeListToString(requireNotNull(data.todayMembersWithTypeColor)) @@ -109,7 +109,7 @@ class TodayTodoAdapter( } } - private fun changeListToString(managerDataList: List): String { + private fun changeListToString(managerDataList: List): String { val textList = managerDataList.map { it.userName } return textList[0] } @@ -132,8 +132,8 @@ class TodayTodoAdapter( private val onClickIcon: () -> Unit, private val binding: ItemRulesTodayToDoItemMultiBinding ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: com.hous.data.entity.Rule) { - Log.d(TAG, "MULTI : , data: $data") + fun onBind(data: RuleInfo) { + Timber.d("MULTI : , data: $data") binding.data = data binding.tvManager.text = changeListToString(requireNotNull(data.todayMembersWithTypeColor)) @@ -167,7 +167,7 @@ class TodayTodoAdapter( } } - private fun changeListToString(managerDataList: List): String { + private fun changeListToString(managerDataList: List): String { val textList = managerDataList.map { it.userName } val sizeOfTextList = textList.size return if (sizeOfTextList in 2..3) { @@ -202,24 +202,23 @@ class TodayTodoAdapter( companion object { private val TodayTodoDiffUtilCallback = - object : DiffUtil.ItemCallback() { + object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: Rule, - newItem: Rule + oldItem: RuleInfo, + newItem: RuleInfo ): Boolean { return oldItem.id == newItem.id } override fun areContentsTheSame( - oldItem: Rule, - newItem: Rule + oldItem: RuleInfo, + newItem: RuleInfo ): Boolean { return oldItem == newItem } } - const val TAG = "로그" - private const val MANAGER_NUMBER_ZERO = 0 + private const val MANAGER_NUMBER_ONE = 1 private const val MANAGER_NUMBER_TWO = 2 private const val BLUE = "BLUE" diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempMangerAdapter.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempMangerAdapter.kt index 32afb355..7aa8ce45 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempMangerAdapter.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempMangerAdapter.kt @@ -5,12 +5,12 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.hous.data.entity.Homie +import com.hous.domain.model.HomieInfo import com.hous.hous_aos.databinding.ItemRulesTmpManagersBinding import com.hous.hous_aos.ui.rules.HomieIconType class TempMangerAdapter(private val setSelectedTmpManager: (Int) -> Unit) : - ListAdapter(tempManagerDiffUtil) { + ListAdapter(tempManagerDiffUtil) { private val homieIconHashMap: HashMap = hashMapOf( "RED" to HomieIconType.RED, "BLUE" to HomieIconType.BLUE, @@ -37,7 +37,7 @@ class TempMangerAdapter(private val setSelectedTmpManager: (Int) -> Unit) : private val setSelectedTmpManager: (Int) -> Unit ) : RecyclerView.ViewHolder(binding.root) { - fun onBind(data: Homie) { + fun onBind(data: HomieInfo) { binding.data = data binding.homieIconType = homieIconHashMap[data.typeColor] binding.ivManagerIcon.setOnClickListener { @@ -48,17 +48,17 @@ class TempMangerAdapter(private val setSelectedTmpManager: (Int) -> Unit) : } companion object { - private val tempManagerDiffUtil = object : DiffUtil.ItemCallback() { + private val tempManagerDiffUtil = object : DiffUtil.ItemCallback() { override fun areItemsTheSame( - oldItem: Homie, - newItem: Homie + oldItem: HomieInfo, + newItem: HomieInfo ): Boolean { return oldItem.id == newItem.id } override fun areContentsTheSame( - oldItem: Homie, - newItem: Homie + oldItem: HomieInfo, + newItem: HomieInfo ): Boolean { return oldItem == newItem } diff --git a/app/src/main/res/layout/fragment_rules_table.xml b/app/src/main/res/layout/fragment_rules_table.xml index 70e4b7a9..7c023bd7 100644 --- a/app/src/main/res/layout/fragment_rules_table.xml +++ b/app/src/main/res/layout/fragment_rules_table.xml @@ -37,6 +37,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:itemCount="3" + android:clipToPadding="true" tools:listitem="@layout/item_rules_table_general" /> + type="com.hous.domain.model.RuleInfo" /> + type="com.hous.domain.model.CategoryInfo" /> + type="com.hous.domain.model.RuleInfo" /> + type="com.hous.domain.model.RuleInfo" /> + type="com.hous.domain.model.HomieInfo" /> + type="com.hous.domain.model.RuleInfo" /> + type="com.hous.domain.model.RuleInfo" /> + type="com.hous.domain.model.RuleInfo" /> Date: Fri, 12 Aug 2022 06:38:52 +0900 Subject: [PATCH 07/11] =?UTF-8?q?#178=20[chore]=20klint=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt | 4 ++-- .../java/com/hous/hous_aos/ui/rules/RulesFragment.kt | 1 - .../java/com/hous/hous_aos/ui/rules/RulesViewModel.kt | 3 --- .../java/com/hous/hous_aos/util/TimberDebugTree.kt | 2 +- data/src/main/java/com/hous/data/api/HomeApi.kt | 1 - .../hous/data/model/response/TempManagerResponse.kt | 2 +- .../hous/data/repository/RulesTodayRepositoryImpl.kt | 4 ---- .../data/source/remote/RemoteRulesTodayDataSource.kt | 5 +---- .../source/remote/RemoteRulesTodayDataSourceImpl.kt | 10 +++++----- 9 files changed, 10 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt b/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt index 7f9b6dc7..1189293a 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/newrules/NewRulesViewModel.kt @@ -29,8 +29,8 @@ class NewRulesViewModel @Inject constructor( val uiState = _uiState.asStateFlow() val buttonState: StateFlow = uiState.map { it.ruleName.isNotEmpty() && - it.categoryName.isNotEmpty() && - (uiState.value.checkBoxState == State.SELECT || isDayCheck()) + it.categoryName.isNotEmpty() && + (uiState.value.checkBoxState == State.SELECT || isDayCheck()) } .stateIn(viewModelScope, SharingStarted.WhileSubscribed(3000L), false) diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt index 60ca43df..7c8ac6c8 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesFragment.kt @@ -10,7 +10,6 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.fragment.app.commit import androidx.fragment.app.replace -import com.hous.hous_aos.BuildConfig import com.hous.hous_aos.R import com.hous.hous_aos.databinding.FragmentRulesBinding import com.hous.hous_aos.ui.rules.my_to_do.MyToDoFragment diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt index 0f716d4d..6fc3dc2f 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt @@ -114,7 +114,6 @@ class RulesViewModel @Inject constructor( _tmpManagerList.value = it.homies _tmpTodayToDoPosition.value = position } - } } @@ -125,7 +124,6 @@ class RulesViewModel @Inject constructor( } } - /** get * My -To - DO 서버통신*/ fun fetchToMyTodayToDoList() { @@ -204,5 +202,4 @@ class RulesViewModel @Inject constructor( tmpCategoryOfRuleList[position].isChecked = true _categoryOfRuleList.value = tmpCategoryOfRuleList.toList() } - } diff --git a/app/src/main/java/com/hous/hous_aos/util/TimberDebugTree.kt b/app/src/main/java/com/hous/hous_aos/util/TimberDebugTree.kt index ad528d34..b675bdc4 100644 --- a/app/src/main/java/com/hous/hous_aos/util/TimberDebugTree.kt +++ b/app/src/main/java/com/hous/hous_aos/util/TimberDebugTree.kt @@ -9,4 +9,4 @@ class TimberDebugTree : Timber.DebugTree() { override fun createStackElementTag(element: StackTraceElement): String? { return "${element.fileName} : ${element.lineNumber} - ${element.methodName}" } -} \ No newline at end of file +} diff --git a/data/src/main/java/com/hous/data/api/HomeApi.kt b/data/src/main/java/com/hous/data/api/HomeApi.kt index 4657e482..38a1cc7b 100644 --- a/data/src/main/java/com/hous/data/api/HomeApi.kt +++ b/data/src/main/java/com/hous/data/api/HomeApi.kt @@ -13,7 +13,6 @@ import retrofit2.http.POST import retrofit2.http.PUT import retrofit2.http.Path - interface HomeApi { @GET("room/{roomId}/home") suspend fun getHomeList( diff --git a/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt b/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt index 50d0e053..9b51706e 100644 --- a/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt +++ b/data/src/main/java/com/hous/data/model/response/TempManagerResponse.kt @@ -7,4 +7,4 @@ data class TempManagerResponse( @SerializedName("_id") val id: String = "", val homies: List = emptyList() -) \ No newline at end of file +) diff --git a/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt b/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt index 21a92d32..111c1b7a 100644 --- a/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt +++ b/data/src/main/java/com/hous/data/repository/RulesTodayRepositoryImpl.kt @@ -1,10 +1,7 @@ package com.hous.data.repository -import com.hous.data.entity.Rule -import com.hous.data.model.WrapperClass import com.hous.data.model.request.MyToDoCheckRequest import com.hous.data.model.request.TempManagerRequest -import com.hous.data.model.response.RulesTableResponse import com.hous.data.source.remote.RemoteRulesTodayDataSource import com.hous.domain.model.RuleInfo import com.hous.domain.model.TempManagerInfo @@ -37,7 +34,6 @@ class RulesTodayRepositoryImpl @Inject constructor( override suspend fun getMyTodoInfoList(roomId: String): List? { return remoteRulesTodayDataSource.getMyToDoInfoList(roomId) - } override suspend fun putMyToDoCheckLust( diff --git a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt index d531937f..1f2565a2 100644 --- a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt +++ b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSource.kt @@ -1,14 +1,11 @@ package com.hous.data.source.remote -import com.hous.data.entity.Rule -import com.hous.data.model.WrapperClass import com.hous.data.model.request.MyToDoCheckRequest -import com.hous.data.model.response.RulesTableResponse import com.hous.data.model.request.TempManagerRequest import com.hous.domain.model.RuleInfo -import com.hous.domain.model.rules.RulesTodayInfo import com.hous.domain.model.TempManagerInfo import com.hous.domain.model.rules.RulesTableInfo +import com.hous.domain.model.rules.RulesTodayInfo interface RemoteRulesTodayDataSource { suspend fun getTodayTodayInfoList(roomId: String): RulesTodayInfo? diff --git a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt index c883c87c..8ddba144 100644 --- a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt +++ b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt @@ -24,7 +24,8 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( { response -> return RulesTodayInfo( response.data?.homeRuleCategories!!.map { it.toCategoryInfo() }, - response.data.todayTodoRules.map { it.toRuleInfo() }) + response.data.todayTodoRules.map { it.toRuleInfo() } + ) }, { Timber.e(it.message) @@ -51,7 +52,6 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( } ) - override suspend fun putTempManagerInfoList( roomId: String, ruleId: String, @@ -65,9 +65,9 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( ) }.fold( {}, { - Timber.e(it.message) - null - } + Timber.e(it.message) + null + } ) } From 0884bf62a6b27d1a68355d5cc433e7cd790e3374 Mon Sep 17 00:00:00 2001 From: murjune Date: Wed, 17 Aug 2022 04:52:20 +0900 Subject: [PATCH 08/11] =?UTF-8?q?#178=20[fix]=20requireActivty()=20?= =?UTF-8?q?=E2=86=92=20viewLifecycleOwner=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/hous/hous_aos/ui/home/EventDialogFragment.kt | 2 +- .../rules/today_to_do/tem_dialog/TempManagerDialogFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/hous/hous_aos/ui/home/EventDialogFragment.kt b/app/src/main/java/com/hous/hous_aos/ui/home/EventDialogFragment.kt index 9b03d52a..b3ba32d0 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/home/EventDialogFragment.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/home/EventDialogFragment.kt @@ -30,7 +30,7 @@ class EventDialogFragment : DialogFragment() { _binding = DataBindingUtil.inflate(inflater, R.layout.fragment_event_dialog, container, false) binding.viewModel = viewModel - binding.lifecycleOwner = this@EventDialogFragment + binding.lifecycleOwner = viewLifecycleOwner return binding.root } diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempManagerDialogFragment.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempManagerDialogFragment.kt index eda09214..2ce8bd57 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempManagerDialogFragment.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/today_to_do/tem_dialog/TempManagerDialogFragment.kt @@ -25,7 +25,7 @@ class TempManagerDialogFragment : DialogFragment() { _binding = DataBindingUtil.inflate(inflater, R.layout.fragment_temp_manager, container, false) binding.viewModel = viewModel - binding.lifecycleOwner = requireActivity() + binding.lifecycleOwner = viewLifecycleOwner return binding.root } From e0d59a0c5249b8b35f04c0bc98ffed99d5e91890 Mon Sep 17 00:00:00 2001 From: murjune Date: Wed, 17 Aug 2022 04:54:33 +0900 Subject: [PATCH 09/11] =?UTF-8?q?#178=20[fix]=20it=20->=20=EB=AA=85?= =?UTF-8?q?=EC=8B=9C=EC=A0=81=EC=9D=B8=20=EB=B3=80=EC=88=98=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/RemoteRulesTodayDataSourceImpl.kt | 24 ++++++++++++++----- .../java/com/hous/domain/model/Manager.kt | 2 +- gradlew | 0 3 files changed, 19 insertions(+), 7 deletions(-) mode change 100644 => 100755 gradlew diff --git a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt index 8ddba144..fcd7570f 100644 --- a/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt +++ b/data/src/main/java/com/hous/data/source/remote/RemoteRulesTodayDataSourceImpl.kt @@ -23,8 +23,12 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( }.fold( { response -> return RulesTodayInfo( - response.data?.homeRuleCategories!!.map { it.toCategoryInfo() }, - response.data.todayTodoRules.map { it.toRuleInfo() } + response.data?.homeRuleCategories!!.map { categoryData -> + categoryData.toCategoryInfo() + }, + response.data.todayTodoRules.map { ruleData -> + ruleData.toRuleInfo() + } ) }, { @@ -43,7 +47,9 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( { response -> return TempManagerInfo( response.data!!.id, - response.data.homies.map { it.toHomieInfo() } + response.data.homies.map { homieData -> + homieData.toHomieInfo() + } ) }, { @@ -74,7 +80,9 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( override suspend fun getMyToDoInfoList(roomId: String): List? { return runCatching { rulesApi.getMyTodoInfoList(ROOM_ID) }.fold( { response -> - response.data?.map { it.toRuleInfo() } + response.data?.map { ruleData -> + ruleData.toRuleInfo() + } }, { Timber.e(it.message) @@ -100,8 +108,12 @@ class RemoteRulesTodayDataSourceImpl @Inject constructor( runCatching { rulesApi.getRuleTableInfoList(ROOM_ID, categoryId) }.fold( { response -> return RulesTableInfo( - response.data?.keyRules!!.map { it.toRuleInfo() }, - response.data.rules.map { it.toRuleInfo() } + response.data?.keyRules!!.map { ruleData -> + ruleData.toRuleInfo() + }, + response.data.rules.map { ruleData -> + ruleData.toRuleInfo() + } ) }, { diff --git a/domain/src/main/java/com/hous/domain/model/Manager.kt b/domain/src/main/java/com/hous/domain/model/Manager.kt index 8cab792f..fd30fe62 100644 --- a/domain/src/main/java/com/hous/domain/model/Manager.kt +++ b/domain/src/main/java/com/hous/domain/model/Manager.kt @@ -10,7 +10,7 @@ data class Manager( DayDataInfo("화", State.UNSELECT), DayDataInfo("수", State.UNSELECT), DayDataInfo("목", State.UNSELECT), - DayDataInfo("금ø", State.UNSELECT), + DayDataInfo("금", State.UNSELECT), DayDataInfo("토", State.UNSELECT), DayDataInfo("일", State.UNSELECT) ) diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From 8ee66237b445e81c9c1bae0876c1cb83ea996485 Mon Sep 17 00:00:00 2001 From: murjune Date: Wed, 17 Aug 2022 04:55:37 +0900 Subject: [PATCH 10/11] =?UTF-8?q?#178=20[feat]=20safeLet=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/hous/hous_aos/util/SafeLet.kt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 app/src/main/java/com/hous/hous_aos/util/SafeLet.kt diff --git a/app/src/main/java/com/hous/hous_aos/util/SafeLet.kt b/app/src/main/java/com/hous/hous_aos/util/SafeLet.kt new file mode 100644 index 00000000..35569106 --- /dev/null +++ b/app/src/main/java/com/hous/hous_aos/util/SafeLet.kt @@ -0,0 +1,7 @@ +package com.hous.hous_aos.util + +/** + * 변수 2가지 이상 null 체크할 때 사용 */ +inline fun safeLet(p1: T1?, p2: T2?, block: (T1, T2) -> R?): R? { + return if (p1 != null && p2 != null) block(p1, p2) else null +} From 9cbab11794f86f7ccb5cd1b65764e401fe9decdd Mon Sep 17 00:00:00 2001 From: murjune Date: Wed, 17 Aug 2022 04:56:01 +0900 Subject: [PATCH 11/11] =?UTF-8?q?#178=20[feat]=20null=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hous/hous_aos/ui/rules/RulesViewModel.kt | 100 +++++++++++------- 1 file changed, 60 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt index 6fc3dc2f..6a79a2c4 100644 --- a/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt +++ b/app/src/main/java/com/hous/hous_aos/ui/rules/RulesViewModel.kt @@ -10,6 +10,7 @@ import com.hous.domain.model.HomieInfo import com.hous.domain.model.RuleInfo import com.hous.domain.model.TempManagerInfo import com.hous.domain.model.rules.RulesTodayInfo +import com.hous.hous_aos.util.safeLet import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import timber.log.Timber @@ -63,16 +64,20 @@ class RulesViewModel @Inject constructor( init { viewModelScope.launch { val rulesTodayInfo: RulesTodayInfo? = rulesTodayRepository.getTodayTodayInfoList("") - rulesTodayInfo?.let { - Timber.d("RulesViewModel init") - _todayTodoList.value = it.todayTodoRules - _categoryOfRuleList.value = it.homeRuleCategories.plus( - CategoryInfo( - id = "62d6b94e0e9be86f165d48db", - categoryName = "없음", - categoryIcon = "CLEAN" + if (rulesTodayInfo != null) { + rulesTodayInfo.let { rulesTodayInfo -> + Timber.d("RulesViewModel init") + _todayTodoList.value = rulesTodayInfo.todayTodoRules + _categoryOfRuleList.value = rulesTodayInfo.homeRuleCategories.plus( + CategoryInfo( + id = "62d6b94e0e9be86f165d48db", + categoryName = "없음", + categoryIcon = "CLEAN" + ) ) - ) + } + } else { + Timber.e("rulesTodayInfo: $rulesTodayInfo") } } } @@ -82,17 +87,29 @@ class RulesViewModel @Inject constructor( * 임시 담당자 save버튼 누르면 서버로 보내기 * */ fun putToTmpManagerList() { - val clickedTmpManagerList: MutableList = mutableListOf() - _tmpManagerList.value?.forEach { - if (it.isChecked) clickedTmpManagerList.add(it.id!!) - } + val clickedTmpManagerList: MutableList = + mutableListOf().also { clickedTmpManagerList -> + _tmpManagerList.value?.forEach { homieInfo -> + homieInfo.id?.let { id -> + if (homieInfo.isChecked) clickedTmpManagerList.add(id) + } ?: Timber.e("homieInfo.id: ${homieInfo.id}") + } + Timber.d("clickedTmpManagerList - $clickedTmpManagerList") + } viewModelScope.launch { - rulesTodayRepository.putTempManagerInfoList( - "", - _todayTodoList.value!![tmpTodayToDoPosition.value!!].id, - clickedTmpManagerList - )?.let { fetchToTodayToDoList() } + safeLet( + todayTodoList.value, + tmpTodayToDoPosition.value + ) { todayTodoList: List, position: Int -> + rulesTodayRepository.putTempManagerInfoList( + "", + todayTodoList[position].id, + clickedTmpManagerList + ) + fetchToTodayToDoList() + } + ?: Timber.e("Put 실패 - todayTodoList: ${todayTodoList.value}, tmpTodayToDoPosition: ${tmpTodayToDoPosition.value}}") } } @@ -100,8 +117,10 @@ class RulesViewModel @Inject constructor( * 임시 담당자 checked 바꾸기 * */ fun setSelectedTmpManager(position: Int) { - requireNotNull(_tmpManagerList.value)[position].isChecked = - !requireNotNull(_tmpManagerList.value)[position].isChecked + _tmpManagerList.value?.let { tmpManagerList -> + val checkState = !(tmpManagerList[position].isChecked) + tmpManagerList[position].isChecked = checkState + } } /** get @@ -110,27 +129,27 @@ class RulesViewModel @Inject constructor( viewModelScope.launch { val tempManagerInfo: TempManagerInfo? = rulesTodayRepository.getTempManagerInfoList("", _todayTodoList.value!![position].id) - tempManagerInfo?.let { - _tmpManagerList.value = it.homies + tempManagerInfo?.let { tempManagerInfo -> + _tmpManagerList.value = tempManagerInfo.homies _tmpTodayToDoPosition.value = position - } + } ?: Timber.e("서버통신 실패") } } fun fetchToTodayToDoList() = viewModelScope.launch { - rulesTodayRepository.getTodayTodayInfoList("")?.let { - _todayTodoList.value = it.todayTodoRules - } + rulesTodayRepository.getTodayTodayInfoList("")?.let { rulesTodayInfo -> + _todayTodoList.value = rulesTodayInfo.todayTodoRules + } ?: Timber.e("서버통신 실패") } /** get * My -To - DO 서버통신*/ fun fetchToMyTodayToDoList() { viewModelScope.launch { - rulesTodayRepository.getMyTodoInfoList("")?.let { - _myTodoList.value = it - } + rulesTodayRepository.getMyTodoInfoList("")?.let { ruleInfoList -> + _myTodoList.value = ruleInfoList + } ?: Timber.e("서버통신 실패") } } @@ -138,17 +157,18 @@ class RulesViewModel @Inject constructor( * 나의 to-do check한 거 보내기 * */ fun setMyToDoCheckBoxSelected(position: Int) { - val isSelected = myTodoList.value!![position].isChecked - myTodoList.value!![position].isChecked = !isSelected - val checked = myTodoList.value!![position].isChecked - val id = myTodoList.value!![position].id - viewModelScope.launch { - rulesTodayRepository.putMyToDoCheckLust( - "", - id, - checked - ) - } + myTodoList.value?.let { myTodoList -> + val checkState = !(myTodoList[position].isChecked) + myTodoList[position].isChecked = checkState + val id = myTodoList[position].id + viewModelScope.launch { + rulesTodayRepository.putMyToDoCheckLust( + "", + id, + checkState + ) + } + } ?: Timber.e("myTodoList: ${myTodoList.value}") } /**