From 2b034cee3b7abb22746edfa22bcd3d6c5287fd30 Mon Sep 17 00:00:00 2001 From: Nguyen Quang Minh Date: Mon, 30 Sep 2024 13:57:56 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20T=E1=BA=A1o=20model=20v=C3=A0=20dto=20c?= =?UTF-8?q?ho=20get=20study=20set=20by=20id=20request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/dto/color/ColorResponseDto.kt | 14 ++++++++ .../dto/study_set/GetStudySetResponseDto.kt | 34 +++++++++++++++++++ .../data/dto/subject/SubjectResponseDto.kt | 11 ++++++ .../quickmem/data/mapper/color/ColorMapper.kt | 16 +++++++++ .../data/mapper/subject/SubjectMapper.kt | 14 ++++++++ .../study_set/GetStudySetResponseModel.kt | 16 +++++++++ .../domain/model/subject/SubjectModel.kt | 2 +- .../domain/repository/StudySetRepository.kt | 2 ++ .../presentation/app/home/HomeScreen.kt | 4 +-- 9 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/pwhs/quickmem/data/dto/color/ColorResponseDto.kt create mode 100644 app/src/main/java/com/pwhs/quickmem/data/dto/study_set/GetStudySetResponseDto.kt create mode 100644 app/src/main/java/com/pwhs/quickmem/data/dto/subject/SubjectResponseDto.kt create mode 100644 app/src/main/java/com/pwhs/quickmem/data/mapper/color/ColorMapper.kt create mode 100644 app/src/main/java/com/pwhs/quickmem/data/mapper/subject/SubjectMapper.kt create mode 100644 app/src/main/java/com/pwhs/quickmem/domain/model/study_set/GetStudySetResponseModel.kt diff --git a/app/src/main/java/com/pwhs/quickmem/data/dto/color/ColorResponseDto.kt b/app/src/main/java/com/pwhs/quickmem/data/dto/color/ColorResponseDto.kt new file mode 100644 index 0000000..fb7cdb6 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/data/dto/color/ColorResponseDto.kt @@ -0,0 +1,14 @@ +package com.pwhs.quickmem.data.dto.color + +import com.google.gson.annotations.SerializedName + +data class ColorResponseDto( + @SerializedName("id") + val id: Int, + + @SerializedName("name") + val name: String, + + @SerializedName("hexValue") + val hexValue: String +) \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/data/dto/study_set/GetStudySetResponseDto.kt b/app/src/main/java/com/pwhs/quickmem/data/dto/study_set/GetStudySetResponseDto.kt new file mode 100644 index 0000000..1806df6 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/data/dto/study_set/GetStudySetResponseDto.kt @@ -0,0 +1,34 @@ +package com.pwhs.quickmem.data.dto.study_set + +import com.google.gson.annotations.SerializedName +import com.pwhs.quickmem.data.dto.color.ColorResponseDto +import com.pwhs.quickmem.data.dto.subject.SubjectResponseDto + +data class GetStudySetResponseDto( + @SerializedName("id") + val id: String, + + @SerializedName("title") + val title: String, + + @SerializedName("description") + val description: String, + + @SerializedName("isPublic") + val isPublic: Boolean, + + @SerializedName("createdAt") + val createdAt: String, // Sử dụng String hoặc LocalDateTime + + @SerializedName("updatedAt") + val updatedAt: String, + + @SerializedName("ownerId") + val ownerId: String, + + @SerializedName("subject") + val subject: SubjectResponseDto? = null, + + @SerializedName("color") + val color: ColorResponseDto? = null +) diff --git a/app/src/main/java/com/pwhs/quickmem/data/dto/subject/SubjectResponseDto.kt b/app/src/main/java/com/pwhs/quickmem/data/dto/subject/SubjectResponseDto.kt new file mode 100644 index 0000000..dba533b --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/data/dto/subject/SubjectResponseDto.kt @@ -0,0 +1,11 @@ +package com.pwhs.quickmem.data.dto.subject + +import com.google.gson.annotations.SerializedName + +data class SubjectResponseDto( + @SerializedName("id") + val id: Int, + + @SerializedName("name") + val name: String +) \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/data/mapper/color/ColorMapper.kt b/app/src/main/java/com/pwhs/quickmem/data/mapper/color/ColorMapper.kt new file mode 100644 index 0000000..4072922 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/data/mapper/color/ColorMapper.kt @@ -0,0 +1,16 @@ +package com.pwhs.quickmem.data.mapper.color + +import com.pwhs.quickmem.data.dto.color.ColorResponseDto +import com.pwhs.quickmem.domain.model.color.ColorModel + +fun ColorResponseDto.toColorModel() = ColorModel( + id = id, + name = name, + hexValue = hexValue +) + +fun ColorModel.toColorResponseDto() = ColorResponseDto( + id = id, + name = name, + hexValue = hexValue +) \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/data/mapper/subject/SubjectMapper.kt b/app/src/main/java/com/pwhs/quickmem/data/mapper/subject/SubjectMapper.kt new file mode 100644 index 0000000..1b2e123 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/data/mapper/subject/SubjectMapper.kt @@ -0,0 +1,14 @@ +package com.pwhs.quickmem.data.mapper.subject + +import com.pwhs.quickmem.data.dto.subject.SubjectResponseDto +import com.pwhs.quickmem.domain.model.subject.SubjectModel + +fun SubjectResponseDto.toSubjectModel() = SubjectModel( + id = id, + name = name, +) + +fun SubjectModel.toSubjectResponseDto() = SubjectResponseDto( + id = id, + name = name, +) \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/domain/model/study_set/GetStudySetResponseModel.kt b/app/src/main/java/com/pwhs/quickmem/domain/model/study_set/GetStudySetResponseModel.kt new file mode 100644 index 0000000..aeaf653 --- /dev/null +++ b/app/src/main/java/com/pwhs/quickmem/domain/model/study_set/GetStudySetResponseModel.kt @@ -0,0 +1,16 @@ +package com.pwhs.quickmem.domain.model.study_set + +import com.pwhs.quickmem.data.dto.color.ColorResponseDto +import com.pwhs.quickmem.data.dto.subject.SubjectResponseDto + +data class GetStudySetResponseModel( + val id: String, + val title: String, + val description: String, + val isPublic: Boolean, + val createdAt: String, + val updatedAt: String, + val ownerId: String, + val subject: SubjectResponseDto? = null, + val color: ColorResponseDto? = null +) diff --git a/app/src/main/java/com/pwhs/quickmem/domain/model/subject/SubjectModel.kt b/app/src/main/java/com/pwhs/quickmem/domain/model/subject/SubjectModel.kt index 9ae5b6a..0c8754f 100644 --- a/app/src/main/java/com/pwhs/quickmem/domain/model/subject/SubjectModel.kt +++ b/app/src/main/java/com/pwhs/quickmem/domain/model/subject/SubjectModel.kt @@ -9,7 +9,7 @@ data class SubjectModel( val name: String, @DrawableRes val iconRes: Int? = null, val color: Color? = null, - val description: String?, + val description: String? = null, val createdAt: String? = null, val updatedAt: String? = null ) { diff --git a/app/src/main/java/com/pwhs/quickmem/domain/repository/StudySetRepository.kt b/app/src/main/java/com/pwhs/quickmem/domain/repository/StudySetRepository.kt index 64d1b12..8fe5db8 100644 --- a/app/src/main/java/com/pwhs/quickmem/domain/repository/StudySetRepository.kt +++ b/app/src/main/java/com/pwhs/quickmem/domain/repository/StudySetRepository.kt @@ -10,4 +10,6 @@ interface StudySetRepository { token: String, createStudySetRequestModel: CreateStudySetRequestModel ): Flow> + + } \ No newline at end of file diff --git a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt index 782dbb9..8adb4d9 100644 --- a/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt +++ b/app/src/main/java/com/pwhs/quickmem/presentation/app/home/HomeScreen.kt @@ -9,7 +9,6 @@ import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -26,13 +25,12 @@ import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.generated.destinations.HomeScreenDestination import com.ramcosta.composedestinations.generated.destinations.SearchScreenDestination - import com.ramcosta.composedestinations.navigation.DestinationsNavigator @Destination @Composable fun HomeScreen( - modifier: Modifier, + modifier: Modifier = Modifier, navigator: DestinationsNavigator, viewModel: HomeViewModel = hiltViewModel() ) {