From 3712fd94874f9ce6fb5e8f5c4e5a11cefbad3894 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 16:48:05 +0900 Subject: [PATCH 01/18] =?UTF-8?q?[UI/#42]=20=EC=9D=B8=EC=8A=A4=ED=83=80=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=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/res/drawable-hdpi/ic_instagram.png | Bin 0 -> 2133 bytes app/src/main/res/drawable-mdpi/ic_instagram.png | Bin 0 -> 1243 bytes app/src/main/res/drawable-xhdpi/ic_instagram.png | Bin 0 -> 3161 bytes .../main/res/drawable-xxhdpi/ic_instagram.png | Bin 0 -> 5244 bytes .../main/res/drawable-xxxhdpi/ic_instagram.png | Bin 0 -> 7602 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_instagram.png create mode 100644 app/src/main/res/drawable-mdpi/ic_instagram.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_instagram.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_instagram.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_instagram.png diff --git a/app/src/main/res/drawable-hdpi/ic_instagram.png b/app/src/main/res/drawable-hdpi/ic_instagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cf2cef92ab26fd4a79644f85779ce75bdeccc2 GIT binary patch literal 2133 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 LNkvXXu0mjfzdIFC literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_instagram.png b/app/src/main/res/drawable-mdpi/ic_instagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ac6012dc642a1f56f7b0b62de5fd51b7d01dc0 GIT binary patch literal 1243 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_instagram.png b/app/src/main/res/drawable-xxhdpi/ic_instagram.png new file mode 100644 index 0000000000000000000000000000000000000000..173be017cbb6cffcb1dce39784b3efc9a85ee5e6 GIT binary patch literal 5244 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 US0^E3KmY&$07*qoM6N<$f&pHBk^lez literal 0 HcmV?d00001 From fd44892762f86ed625ffb048a19d33b51f438fda Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 17:09:29 +0900 Subject: [PATCH 02/18] =?UTF-8?q?[FEAT/#42]=20DataSource=20Mock=20->=20?= =?UTF-8?q?=EC=8B=A4=EC=84=9C=EB=B2=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 8 ++++---- app/src/main/java/com/yello/di/DataSourceModule.kt | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9351be202..4eefa37d6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -84,10 +84,10 @@ android:name=".presentation.main.profile.manage.ProfileQuitForSureActivity" android:exported="false" android:screenOrientation="portrait" /> - - - - + \ No newline at end of file diff --git a/app/src/main/java/com/yello/di/DataSourceModule.kt b/app/src/main/java/com/yello/di/DataSourceModule.kt index b257cd97f..3bdcf351f 100644 --- a/app/src/main/java/com/yello/di/DataSourceModule.kt +++ b/app/src/main/java/com/yello/di/DataSourceModule.kt @@ -4,6 +4,7 @@ import com.example.data.datasource.OnboardingDataSource import com.example.data.datasource.YelloDataSource import com.example.data.datasource.local.MockYelloDataSourceImpl import com.example.data.datasource.remote.OnboardingDataSourceImpl +import com.example.data.datasource.remote.YelloDataSourceImpl import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -15,7 +16,7 @@ import javax.inject.Singleton object DataSourceModule { @Provides @Singleton - fun provideYelloDataSource(yelloDataSource: MockYelloDataSourceImpl): YelloDataSource = + fun provideYelloDataSource(yelloDataSource: YelloDataSourceImpl): YelloDataSource = yelloDataSource @Provides From 4e28661ce4ccabe460cde9060489f3671194df0a Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:31:19 +0900 Subject: [PATCH 03/18] [CHORE/#42] Flipper version down --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 6051342f2..ef5e487ae 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -43,7 +43,7 @@ object Versions { const val espressoVersion = "3.3.0" const val androidTestVersion = "1.1.2" - const val flipperVersion = "0.193.0" + const val flipperVersion = "0.187.0" const val soloaderVersion = "0.10.5" const val leakCanaryVersion = "2.11" From 28f6cbeecb19e431c14468298ad45e44b27dd875 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:31:45 +0900 Subject: [PATCH 04/18] =?UTF-8?q?[FEAT/#42]=20fake=20data=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/src/main/assets/fake_detail_yello.json | 11 ++++++++--- data/src/main/assets/fake_total_yello.json | 16 ++++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/data/src/main/assets/fake_detail_yello.json b/data/src/main/assets/fake_detail_yello.json index b6c49a648..53a0235a9 100644 --- a/data/src/main/assets/fake_detail_yello.json +++ b/data/src/main/assets/fake_detail_yello.json @@ -2,13 +2,18 @@ "status": 200, "message": "조회 성공하였습니다.", "data": { + "currentPoint": 400, "nameHint": -1, "isAnswerRevealed": false, + "senderGender": "MALE", "senderName": "이의제", "vote": { - "head": "나는 너랑 한강에서", - "answer": "차박하면서 책읽는 것을", - "foot": "하고 싶어" + "questionId": 2, + "nameHead" : "술자리에서", + "nameFoot" : "가", + "keywordHead" : "사라진다면", + "keyword" : "수영", + "keywordFoot" : "(이)야" } } } \ No newline at end of file diff --git a/data/src/main/assets/fake_total_yello.json b/data/src/main/assets/fake_total_yello.json index da72db2a7..6b2e2ed2f 100644 --- a/data/src/main/assets/fake_total_yello.json +++ b/data/src/main/assets/fake_total_yello.json @@ -6,7 +6,7 @@ "yello": [ { "id": 1, - "gender": "M", + "gender": "MALE", "nameHint": -1, "senderName": "권세훈", "vote": { @@ -22,7 +22,7 @@ }, { "id": 1, - "gender": "W", + "gender": "FEMALE", "nameHint": -1, "senderName": "권세훈", "vote": { @@ -38,7 +38,7 @@ }, { "id": 1, - "gender": "M", + "gender": "MALE", "nameHint": -1, "senderName": "권세훈", "vote": { @@ -54,7 +54,7 @@ }, { "id": 1, - "gender": "M", + "gender": "MALE", "nameHint": -1, "senderName": "권세훈", "vote": { @@ -70,7 +70,7 @@ }, { "id": 1, - "gender": "W", + "gender": "FEMALE", "nameHint": 1, "senderName": "권세훈", "vote": { @@ -86,7 +86,7 @@ }, { "id": 1, - "gender": "M", + "gender": "MALE", "nameHint": 0, "senderName": "권세훈", "vote": { @@ -102,7 +102,7 @@ }, { "id": 1, - "gender": "M", + "gender": "MALE", "nameHint": 0, "senderName": "권세훈", "vote": { @@ -118,7 +118,7 @@ }, { "id": 1, - "gender": "M", + "gender": "MALE", "nameHint": 0, "senderName": "권세훈", "vote": { From dfca70d1e7c5d66a56bc3d871089ddd30fc0898b Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:32:17 +0900 Subject: [PATCH 05/18] =?UTF-8?q?[FEAT/#42]=20shape=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/res/drawable/shape_fill_black_32dp.xml | 5 +++++ app/src/main/res/drawable/shape_fill_gray900_12dp.xml | 5 +++++ app/src/main/res/drawable/shape_white_35per_8dp.xml | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 app/src/main/res/drawable/shape_fill_black_32dp.xml create mode 100644 app/src/main/res/drawable/shape_fill_gray900_12dp.xml create mode 100644 app/src/main/res/drawable/shape_white_35per_8dp.xml diff --git a/app/src/main/res/drawable/shape_fill_black_32dp.xml b/app/src/main/res/drawable/shape_fill_black_32dp.xml new file mode 100644 index 000000000..0bc481598 --- /dev/null +++ b/app/src/main/res/drawable/shape_fill_black_32dp.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_fill_gray900_12dp.xml b/app/src/main/res/drawable/shape_fill_gray900_12dp.xml new file mode 100644 index 000000000..349162bca --- /dev/null +++ b/app/src/main/res/drawable/shape_fill_gray900_12dp.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_35per_8dp.xml b/app/src/main/res/drawable/shape_white_35per_8dp.xml new file mode 100644 index 000000000..eb73604db --- /dev/null +++ b/app/src/main/res/drawable/shape_white_35per_8dp.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From a356212aff438da30d4a8632abd9c2cf77712c87 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:32:57 +0900 Subject: [PATCH 06/18] =?UTF-8?q?[FEAT/#42]=20MyYello=20data=20&=20domain?= =?UTF-8?q?=20=EA=B0=92=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/response/yello/ResponseMyYello.kt | 21 +++++++++++++------ .../java/com/example/domain/entity/MyYello.kt | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/data/src/main/java/com/example/data/model/response/yello/ResponseMyYello.kt b/data/src/main/java/com/example/data/model/response/yello/ResponseMyYello.kt index a8a3ec205..010bebe58 100644 --- a/data/src/main/java/com/example/data/model/response/yello/ResponseMyYello.kt +++ b/data/src/main/java/com/example/data/model/response/yello/ResponseMyYello.kt @@ -9,17 +9,17 @@ import kotlinx.serialization.Serializable @Serializable data class ResponseMyYello( val totalCount: Int, - val yello: List + val votes: List ) { fun toTotalYello(): MyYello { - return MyYello(totalCount, yello.map { it.toYello() }) + return MyYello(totalCount, votes.map { it.toYello() }) } } @Serializable data class YelloDto( - val id: Int, - val gender: String, + val id: Long, + val senderGender: String, val nameHint: Int, val senderName: String, val vote: VoteDto, @@ -28,8 +28,17 @@ data class YelloDto( val createdAt: String ) { fun toYello(): Yello { - val genderEnum = if (gender.contains("M")) GenderEnum.M else GenderEnum.W - return Yello(id, genderEnum, nameHint, senderName, vote.toVote(), isHintUsed, isRead, createdAt) + val genderEnum = if (senderGender.contains("MALE")) GenderEnum.M else GenderEnum.W + return Yello( + id, + genderEnum, + nameHint, + senderName, + vote.toVote(), + isHintUsed, + isRead, + createdAt + ) } } diff --git a/domain/src/main/java/com/example/domain/entity/MyYello.kt b/domain/src/main/java/com/example/domain/entity/MyYello.kt index f64d65886..cf6887d9c 100644 --- a/domain/src/main/java/com/example/domain/entity/MyYello.kt +++ b/domain/src/main/java/com/example/domain/entity/MyYello.kt @@ -8,7 +8,7 @@ data class MyYello( ) data class Yello( - val id: Int, + val id: Long, val gender: GenderEnum, val nameHint: Int, val senderName: String, From 2f9a9636ef4d17285a50d63d83da20d50baa8338 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:33:19 +0900 Subject: [PATCH 07/18] =?UTF-8?q?[FEAT/#42]=20YelloDetail=20data=20&=20dom?= =?UTF-8?q?ain=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/yello/ResponseYelloDetail.kt | 27 +++++++++---------- .../com/example/domain/entity/YelloDetail.kt | 13 ++++----- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/data/src/main/java/com/example/data/model/response/yello/ResponseYelloDetail.kt b/data/src/main/java/com/example/data/model/response/yello/ResponseYelloDetail.kt index 4dc610fbd..7769ae9a8 100644 --- a/data/src/main/java/com/example/data/model/response/yello/ResponseYelloDetail.kt +++ b/data/src/main/java/com/example/data/model/response/yello/ResponseYelloDetail.kt @@ -1,28 +1,27 @@ package com.example.data.model.response.yello import com.example.domain.entity.YelloDetail -import com.example.domain.entity.YelloDetailVote import kotlinx.serialization.Serializable @Serializable data class ResponseYelloDetail( + val currentPoint: Int, + val colorIndex: Int, val nameHint: Int, val isAnswerRevealed: Boolean, + val senderGender: String, val senderName: String, - val vote: YelloDetailVoteDto + val vote: VoteDto ) { fun toYelloDetail(): YelloDetail { - return YelloDetail(nameHint, isAnswerRevealed, senderName, vote.toYelloDetailVote()) - } -} - -@Serializable -data class YelloDetailVoteDto( - val head: String, - val answer: String, - val foot: String -) { - fun toYelloDetailVote(): YelloDetailVote { - return YelloDetailVote(head, answer, foot) + return YelloDetail( + currentPoint, + colorIndex, + nameHint, + isAnswerRevealed, + senderGender, + senderName, + vote.toVote() + ) } } \ No newline at end of file diff --git a/domain/src/main/java/com/example/domain/entity/YelloDetail.kt b/domain/src/main/java/com/example/domain/entity/YelloDetail.kt index ff04dcb3c..dec419525 100644 --- a/domain/src/main/java/com/example/domain/entity/YelloDetail.kt +++ b/domain/src/main/java/com/example/domain/entity/YelloDetail.kt @@ -1,14 +1,11 @@ package com.example.domain.entity data class YelloDetail( + val currentPoint: Int, + val colorIndex: Int, val nameHint: Int, val isAnswerRevealed: Boolean, + val senderGender: String, val senderName: String, - val vote: YelloDetailVote -) - -data class YelloDetailVote( - val head: String, - val answer: String, - val foot: String -) + val vote: Vote +) \ No newline at end of file From 77ad0e0dd4a49365dfb9d9a2aff546e4572f1b53 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:33:51 +0900 Subject: [PATCH 08/18] =?UTF-8?q?[FEAT/#42]=20BindingAdapter=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 --- .../com/yello/util/binding/BindingAdapter.kt | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/yello/util/binding/BindingAdapter.kt b/app/src/main/java/com/yello/util/binding/BindingAdapter.kt index a10b0fee5..f40cdd9be 100644 --- a/app/src/main/java/com/yello/util/binding/BindingAdapter.kt +++ b/app/src/main/java/com/yello/util/binding/BindingAdapter.kt @@ -6,11 +6,12 @@ import android.widget.ImageView import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat.getColor +import androidx.core.view.isVisible import androidx.databinding.BindingAdapter import com.yello.R object BindingAdapter { - + @JvmStatic @BindingAdapter("setVoteBackground") fun ConstraintLayout.setVoteBackground(bgIndex: Int) { setBackgroundResource( @@ -158,4 +159,26 @@ object BindingAdapter { }, ) } + + @JvmStatic + @BindingAdapter("setNullOrBlankVisible") + fun TextView.setNullOrBlankVisible(text: String?) { + this.isVisible = !text.isNullOrBlank() + } + + @JvmStatic + @BindingAdapter("setImageTint") + fun ImageView.setImageTint(colorIndex: Int) { + if (colorIndex == 1 || colorIndex == 3 || colorIndex == 7) { + this.setColorFilter(getColor(this.context, R.color.black)) + } + } + + @JvmStatic + @BindingAdapter("setTextTint") + fun TextView.setTextTint(colorIndex: Int) { + if (colorIndex == 1 || colorIndex == 3 || colorIndex == 7) { + this.setTextColor(getColor(this.context, R.color.black)) + } + } } From 948e23420981f9ff813e2b432c36cc96e643337a Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:35:12 +0900 Subject: [PATCH 09/18] =?UTF-8?q?[UI/#42]=20=EB=82=B4=20=EC=AA=BD=EC=A7=80?= =?UTF-8?q?=20=EC=83=81=EC=84=B8=EB=B3=B4=EA=B8=B0=20UI=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/activity_my_yello_read.xml | 363 ++++++++++++++++++ 1 file changed, 363 insertions(+) create mode 100644 app/src/main/res/layout/activity_my_yello_read.xml diff --git a/app/src/main/res/layout/activity_my_yello_read.xml b/app/src/main/res/layout/activity_my_yello_read.xml new file mode 100644 index 000000000..b31b0c2cb --- /dev/null +++ b/app/src/main/res/layout/activity_my_yello_read.xml @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 0893b256c37c347e6feefe3516492074f32d0d1d Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:35:50 +0900 Subject: [PATCH 10/18] =?UTF-8?q?[FEAT/#42]=20=EC=A3=BC=EC=86=8C=EA=B0=92?= =?UTF-8?q?=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/example/data/remote/service/YelloService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/com/example/data/remote/service/YelloService.kt b/data/src/main/java/com/example/data/remote/service/YelloService.kt index ed7532135..fe1ec79d7 100644 --- a/data/src/main/java/com/example/data/remote/service/YelloService.kt +++ b/data/src/main/java/com/example/data/remote/service/YelloService.kt @@ -11,12 +11,12 @@ import retrofit2.http.Path import retrofit2.http.Query interface YelloService { - @GET("/api/v1/yello") + @GET("api/v1/vote") suspend fun getMyYelloList( @Query("page") page: Int ): BaseResponse - @GET("/api/v1/yello/{id}/name") + @GET("api/v1/vote/{id}") suspend fun getYelloDetail( @Path("id") id: Long ): BaseResponse From dcc53f44964f9afd92bd4d2da9118adde162bc1b Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:36:20 +0900 Subject: [PATCH 11/18] =?UTF-8?q?[FEAT/#42]=20YelloRepositoryImpl=20runCat?= =?UTF-8?q?ching=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/data/repository/YelloRepositoryImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/src/main/java/com/example/data/repository/YelloRepositoryImpl.kt b/data/src/main/java/com/example/data/repository/YelloRepositoryImpl.kt index daf0e31c2..eac9d8e59 100644 --- a/data/src/main/java/com/example/data/repository/YelloRepositoryImpl.kt +++ b/data/src/main/java/com/example/data/repository/YelloRepositoryImpl.kt @@ -12,7 +12,7 @@ class YelloRepositoryImpl @Inject constructor( private val dataSource: YelloDataSource ) : YelloRepository { override suspend fun getMyYelloList(page: Int): Result { - return kotlin.runCatching { dataSource.getMyYelloList(page).data.toTotalYello() } + return runCatching { dataSource.getMyYelloList(page).data.toTotalYello() } } override suspend fun getYelloDetail(id: Long): Result { From c5c1825703ec75667186d54942bfea1d9fd16763 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:36:49 +0900 Subject: [PATCH 12/18] =?UTF-8?q?[FEAT/#42]=20=EC=B4=88=EC=84=B1=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20Util=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/yello/util/Utils.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 app/src/main/java/com/yello/util/Utils.kt diff --git a/app/src/main/java/com/yello/util/Utils.kt b/app/src/main/java/com/yello/util/Utils.kt new file mode 100644 index 000000000..031d6cc6b --- /dev/null +++ b/app/src/main/java/com/yello/util/Utils.kt @@ -0,0 +1,16 @@ +package com.yello.util + +object Utils { + fun setChosungText(name: String, number: Int): String { + val firstChosung = name[number] + val chosungUnicode = Character.UnicodeBlock.of(firstChosung.toInt()) + return if (chosungUnicode == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO + || chosungUnicode == Character.UnicodeBlock.HANGUL_JAMO + || chosungUnicode == Character.UnicodeBlock.HANGUL_SYLLABLES + ) { + val chosungIndex = (firstChosung.toInt() - 0xAC00) / 28 / 21 + val chosung = Character.toChars(chosungIndex + 0x1100)[0] + chosung.toString() // 출력: "ㄱ" + } else "" + } +} \ No newline at end of file From b6ee42e5b808a841f9426414105ea28804c76d65 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:37:17 +0900 Subject: [PATCH 13/18] =?UTF-8?q?[FEAT/#42]=20=EC=98=90=EB=A1=9C=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=96=B4=EB=8E=81=ED=84=B0=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/myyello/MyYelloAdapter.kt | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloAdapter.kt b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloAdapter.kt index 2ee150619..243fab7cb 100644 --- a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloAdapter.kt +++ b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloAdapter.kt @@ -7,10 +7,13 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import com.example.domain.entity.Yello import com.example.domain.enum.GenderEnum +import com.example.ui.view.setOnSingleClickListener import com.yello.R import com.yello.databinding.ItemMyYelloBinding +import com.yello.util.Utils -class MyYelloAdapter : RecyclerView.Adapter() { +class MyYelloAdapter(private val itemClick: (Yello) -> (Unit)) : + RecyclerView.Adapter() { private val yelloList = mutableListOf() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyYelloViewHolder { val binding = ItemMyYelloBinding.inflate( @@ -18,7 +21,7 @@ class MyYelloAdapter : RecyclerView.Adapter() parent, false ) - return MyYelloViewHolder(binding) + return MyYelloViewHolder(binding, itemClick) } override fun onBindViewHolder(holder: MyYelloViewHolder, position: Int) { @@ -33,7 +36,8 @@ class MyYelloAdapter : RecyclerView.Adapter() } class MyYelloViewHolder( - private val binding: ItemMyYelloBinding + private val binding: ItemMyYelloBinding, + private val itemClick: (Yello) -> Unit ) : RecyclerView.ViewHolder(binding.root) { fun onBind(item: Yello) { binding.ivReadYelloPoint.isVisible = !item.isRead && !item.isHintUsed @@ -81,23 +85,14 @@ class MyYelloAdapter : RecyclerView.Adapter() binding.tvKeyword.text = item.vote.keyword binding.tvKeywordFoot.text = item.vote.keywordFoot if (item.nameHint >= 0) { - binding.tvSendName.text = setChosungText(item.senderName, item.nameHint) + binding.tvSendName.text = Utils.setChosungText(item.senderName, item.nameHint) } binding.clSendName.isVisible = item.nameHint != -1 } - } - private fun setChosungText(name: String, number: Int): String { - val firstChosung = name[number] - val chosungUnicode = Character.UnicodeBlock.of(firstChosung.toInt()) - return if (chosungUnicode == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO - || chosungUnicode == Character.UnicodeBlock.HANGUL_JAMO - || chosungUnicode == Character.UnicodeBlock.HANGUL_SYLLABLES - ) { - val chosungIndex = (firstChosung.toInt() - 0xAC00) / 28 / 21 - val chosung = Character.toChars(chosungIndex + 0x1100)[0] - chosung.toString() // 출력: "ㄱ" - } else "" + binding.root.setOnSingleClickListener { + itemClick(item) + } } } } From f0de0e59f8a6beca4f615feb9fb619dc2714d42d Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:38:19 +0900 Subject: [PATCH 14/18] =?UTF-8?q?[FEAT/#42]=20=EB=82=B4=20=EC=98=90?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=84=EC=B2=B4=EB=B3=B4=EA=B8=B0=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0=20=EB=94=94=ED=85=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/myyello/MyYelloFragment.kt | 29 +++++++++++-------- .../main/myyello/MyYelloViewModel.kt | 25 ++++++++++------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt index a9860df4a..b9c59a43e 100644 --- a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt +++ b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt @@ -1,6 +1,7 @@ package com.yello.presentation.main.myyello import android.os.Bundle +import android.util.Log import android.view.View import androidx.fragment.app.viewModels import androidx.lifecycle.flowWithLifecycle @@ -12,6 +13,7 @@ import com.example.ui.fragment.toast import com.example.ui.view.UiState import com.yello.R import com.yello.databinding.FragmentMyYelloBinding +import com.yello.presentation.main.myyello.read.MyYelloReadActivity import com.yello.presentation.util.BaseLinearRcvItemDeco import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.launchIn @@ -32,7 +34,9 @@ class MyYelloFragment : BindingFragment(R.layout.fragmen private fun initView() { viewModel.getMyYelloList() - adapter = MyYelloAdapter() + adapter = MyYelloAdapter { + startActivity(MyYelloReadActivity.getIntent(requireContext(), it.id)) + } binding.rvMyYelloReceive.addItemDecoration( BaseLinearRcvItemDeco( 8, @@ -56,7 +60,6 @@ class MyYelloFragment : BindingFragment(R.layout.fragmen when (it) { is UiState.Success -> { adapter?.addItem(it.data.yello) - binding.tvCount.text = it.data.totalCount.toString() } is UiState.Failure -> { @@ -66,25 +69,27 @@ class MyYelloFragment : BindingFragment(R.layout.fragmen else -> {} } }.launchIn(viewLifecycleOwner.lifecycleScope) + + viewModel.totalCount.flowWithLifecycle(viewLifecycleOwner.lifecycle) + .onEach { + binding.tvCount.text = it.toString() + }.launchIn(viewLifecycleOwner.lifecycleScope) } + // 페이지네이션 private fun infinityScroll() { binding.rvMyYelloReceive.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) - // 화면에 보이는 마지막 아이템의 position - val lastVisibleItemPosition = - (recyclerView.layoutManager as LinearLayoutManager).findLastCompletelyVisibleItemPosition() - // 어댑터에 등록된 아이템의 총 개수 -1 - val itemTotalCount = adapter?.itemCount?.minus(1) - // 스크롤이 끝에 도달했는지 확인 - if (lastVisibleItemPosition != -1 && itemTotalCount != -1) { - if (lastVisibleItemPosition == itemTotalCount) { + if (dy > 0) { + if (!binding.rvMyYelloReceive.canScrollVertically(1) && + (recyclerView.layoutManager as LinearLayoutManager).findLastVisibleItemPosition() == adapter!!.itemCount - 1 + ) { viewModel.getMyYelloList() } - } } - }) + } + }) } override fun onDestroyView() { diff --git a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloViewModel.kt b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloViewModel.kt index 3d6c6bdfb..e50f1ff0b 100644 --- a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloViewModel.kt +++ b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloViewModel.kt @@ -1,15 +1,17 @@ package com.yello.presentation.main.myyello -import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.example.domain.entity.MyYello import com.example.domain.repository.YelloRepository import com.example.ui.view.UiState import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import javax.inject.Inject @@ -17,26 +19,31 @@ import javax.inject.Inject class MyYelloViewModel @Inject constructor( private val repository: YelloRepository ) : ViewModel() { - private val _myYelloData = MutableStateFlow>(UiState.Loading) + private val _myYelloData = MutableSharedFlow>() val myYelloData: SharedFlow> = _myYelloData.asSharedFlow() - private var currentPage = 0 + private val _totalCount = MutableStateFlow(0) + val totalCount: StateFlow = _totalCount.asStateFlow() + + private var currentPage = -1 private var isPagingFinish = false private var totalPage = Int.MAX_VALUE fun getMyYelloList() { if (isPagingFinish) return - _myYelloData.value = UiState.Loading + _myYelloData.tryEmit(UiState.Loading) viewModelScope.launch { repository.getMyYelloList(++currentPage) .onSuccess { totalPage = Math.ceil((it.totalCount * 0.1)).toInt() if (totalPage == currentPage) isPagingFinish = true - _myYelloData.value = when { - it.yello.isEmpty() -> UiState.Empty - else -> UiState.Success(it) - } - + _myYelloData.emit( + when { + it.yello.isEmpty() -> UiState.Empty + else -> UiState.Success(it) + } + ) + _totalCount.value = it.totalCount }.onFailure { _myYelloData.emit(UiState.Failure("옐로 리스트 서버 통신 실패")) } From de9629176a7908d81d38e00a8c797894e16bc9a9 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:39:02 +0900 Subject: [PATCH 15/18] =?UTF-8?q?[FEAT/#42]=20=EB=82=B4=20=EC=98=90?= =?UTF-8?q?=EB=A1=9C=20=EC=83=81=EC=84=B8=EB=B3=B4=EA=B8=B0=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0=20=EB=B0=8F=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/myyello/read/MyYelloReadActivity.kt | 93 +++++++++++++++++++ .../main/myyello/read/MyYelloReadViewModel.kt | 32 +++++++ 2 files changed, 125 insertions(+) create mode 100644 app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadActivity.kt create mode 100644 app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadViewModel.kt diff --git a/app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadActivity.kt b/app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadActivity.kt new file mode 100644 index 000000000..0fabe10ee --- /dev/null +++ b/app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadActivity.kt @@ -0,0 +1,93 @@ +package com.yello.presentation.main.myyello.read + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.viewModels +import androidx.core.view.isVisible +import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope +import com.example.domain.entity.YelloDetail +import com.example.domain.enum.PointEnum +import com.example.ui.base.BindingActivity +import com.example.ui.context.toast +import com.example.ui.intent.longExtra +import com.example.ui.view.UiState +import com.example.ui.view.setOnSingleClickListener +import com.yello.R +import com.yello.databinding.ActivityMyYelloReadBinding +import com.yello.util.Utils +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach + +@AndroidEntryPoint +class MyYelloReadActivity : + BindingActivity(R.layout.activity_my_yello_read) { + private val id by longExtra() + private val viewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + initView() + initClick() + observe() + } + + private fun initView() { + viewModel.getYelloDetail(id) + } + + private fun initClick() { + binding.tvInitialCheck.setOnSingleClickListener { + PointUseDialog.newInstance(true, PointEnum.INITIAL.ordinal) + .show(supportFragmentManager, "dialog") + } + + binding.clSendCheck.setOnSingleClickListener { + PointUseDialog.newInstance(true, PointEnum.KEYWORD.ordinal) + .show(supportFragmentManager, "dialog") + } + + binding.ivBack.setOnSingleClickListener { + finish() + } + } + + private fun observe() { + viewModel.yelloDetailData.flowWithLifecycle(lifecycle) + .onEach { + when (it) { + is UiState.Success -> { + binding.data = it.data + setData(it.data) + } + + is UiState.Failure -> { + toast(it.msg) + } + + else -> { + + } + } + }.launchIn(lifecycleScope) + } + + private fun setData(yello: YelloDetail) { + binding.tvSendName.isVisible = yello.nameHint != -1 + binding.tvNameNotYet.isVisible = yello.nameHint == -1 + if (yello.nameHint >= 0) binding.tvSendName.text = + Utils.setChosungText(yello.senderName, yello.nameHint) + binding.tvGender.text = + if (yello.senderGender.contains("MALE")) getString(R.string.my_yello_male) else getString( + R.string.my_yello_female + ) + } + + companion object { + fun getIntent(context: Context, id: Long) = + Intent(context, MyYelloReadActivity::class.java) + .putExtra("id", id) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadViewModel.kt b/app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadViewModel.kt new file mode 100644 index 000000000..2154f31f0 --- /dev/null +++ b/app/src/main/java/com/yello/presentation/main/myyello/read/MyYelloReadViewModel.kt @@ -0,0 +1,32 @@ +package com.yello.presentation.main.myyello.read + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.example.domain.entity.YelloDetail +import com.example.domain.repository.YelloRepository +import com.example.ui.view.UiState +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class MyYelloReadViewModel @Inject constructor( + private val repository: YelloRepository +) : ViewModel() { + private val _yelloDetailData = MutableStateFlow>(UiState.Loading) + val yelloDetailData: StateFlow> = _yelloDetailData.asStateFlow() + + fun getYelloDetail(id: Long) { + viewModelScope.launch { + repository.getYelloDetail(id) + .onSuccess { + _yelloDetailData.value = UiState.Success(it) + }.onFailure { + _yelloDetailData.value = UiState.Failure("옐로 상세보기 서버 통신 실패") + } + } + } +} \ No newline at end of file From 398cc9dd26dffc09002a16e8edc6b75bbf619a0a Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:39:25 +0900 Subject: [PATCH 16/18] =?UTF-8?q?[FEAT/#42]=20PointEnum=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/src/main/java/com/example/domain/enum/PointEnum.kt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 domain/src/main/java/com/example/domain/enum/PointEnum.kt diff --git a/domain/src/main/java/com/example/domain/enum/PointEnum.kt b/domain/src/main/java/com/example/domain/enum/PointEnum.kt new file mode 100644 index 000000000..09c803d50 --- /dev/null +++ b/domain/src/main/java/com/example/domain/enum/PointEnum.kt @@ -0,0 +1,5 @@ +package com.example.domain.enum + +enum class PointEnum { + INITIAL, KEYWORD +} \ No newline at end of file From b5a8b941237cda01fcecd5aed3664e78c5d315b2 Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:39:43 +0900 Subject: [PATCH 17/18] =?UTF-8?q?[FEAT/#42]=20=ED=8F=AC=EC=9D=B8=ED=8A=B8?= =?UTF-8?q?=20=EC=82=AC=EC=9A=A9=20=EB=8B=A4=EC=9D=B4=EC=96=BC=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=ED=8B=80=EB=A7=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/myyello/read/PointUseDialog.kt | 64 ++++++++ app/src/main/res/layout/dialog_point_use.xml | 138 ++++++++++++++++++ app/src/main/res/values/strings.xml | 7 + 3 files changed, 209 insertions(+) create mode 100644 app/src/main/java/com/yello/presentation/main/myyello/read/PointUseDialog.kt create mode 100644 app/src/main/res/layout/dialog_point_use.xml diff --git a/app/src/main/java/com/yello/presentation/main/myyello/read/PointUseDialog.kt b/app/src/main/java/com/yello/presentation/main/myyello/read/PointUseDialog.kt new file mode 100644 index 000000000..2359673db --- /dev/null +++ b/app/src/main/java/com/yello/presentation/main/myyello/read/PointUseDialog.kt @@ -0,0 +1,64 @@ +package com.yello.presentation.main.myyello.read + +import android.content.res.Resources +import android.os.Bundle +import android.view.View +import android.view.WindowManager +import androidx.core.view.isVisible +import com.example.domain.enum.PointEnum +import com.example.ui.base.BindingDialogFragment +import com.example.ui.intent.boolArgs +import com.example.ui.intent.intArgs +import com.yello.R +import com.yello.databinding.DialogPointUseBinding + +class PointUseDialog : BindingDialogFragment(R.layout.dialog_point_use) { + private val isTwoButton by boolArgs() + private val pointType by intArgs() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + initView() + setDialogBackground() + } + + private fun initView() { + setButtonView() + } + + private fun setButtonView() { + binding.tvNo.isVisible = !isTwoButton + if (!isTwoButton) { + binding.tvNo.text = "투표하고 포인트 받기" + } else { + if (pointType == PointEnum.INITIAL.ordinal) { + binding.tvTitle.text = "300 포인트로 초성을 얻을까요?" + } + } + } + + private fun setDialogBackground() { + val deviceWidth = Resources.getSystem().displayMetrics.widthPixels + val dialogHorizontalMargin = (Resources.getSystem().displayMetrics.density * 40) * 2 + + dialog?.window?.apply { + setLayout( + (deviceWidth - dialogHorizontalMargin * 2).toInt(), + WindowManager.LayoutParams.WRAP_CONTENT + ) + setBackgroundDrawableResource(R.drawable.shape_fill_gray900_12dp) + } + dialog?.setCancelable(true) + } + + companion object { + @JvmStatic + fun newInstance(isTwoButton: Boolean, pointType: Int) = + PointUseDialog().apply { + arguments = Bundle().apply { + putInt("point_type", pointType) + putBoolean("is_two_button", isTwoButton) + } + } + } +} diff --git a/app/src/main/res/layout/dialog_point_use.xml b/app/src/main/res/layout/dialog_point_use.xml new file mode 100644 index 000000000..faeaf6e5e --- /dev/null +++ b/app/src/main/res/layout/dialog_point_use.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6e644b68..1673a384c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -75,6 +75,13 @@ 누가 보냈는지 확인하기 아직 쪽지가 온 게 없어요. + \??? + 0 + 님이 보냄 + 익명의 여학생 + 익명의 남학생 + 인스타그램 공유하기 + 100포인트로 키워드 확인하기 투표 포인트 적립! 투표로 포인트를 모아 쪽지를 열어보세요. From f9b02f0f7a6fe5b73d9cdd27311dc0def0a6affd Mon Sep 17 00:00:00 2001 From: Leekangmin Date: Mon, 17 Jul 2023 18:52:47 +0900 Subject: [PATCH 18/18] =?UTF-8?q?[FEAT/#42]=20Log=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yello/presentation/main/myyello/MyYelloFragment.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt index b9c59a43e..43ef49506 100644 --- a/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt +++ b/app/src/main/java/com/yello/presentation/main/myyello/MyYelloFragment.kt @@ -1,7 +1,6 @@ package com.yello.presentation.main.myyello import android.os.Bundle -import android.util.Log import android.view.View import androidx.fragment.app.viewModels import androidx.lifecycle.flowWithLifecycle