From d57c90ca0cddde64ef1c80b92b9bcba1f1fa937f Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 15:33:25 +0900 Subject: [PATCH 01/20] =?UTF-8?q?[add]=20#117=20=EC=95=A1=ED=8B=B0?= =?UTF-8?q?=EB=B9=84=ED=8B=B0,=20=EB=B7=B0=EB=AA=A8=EB=8D=B8=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 --- .../main/notification/NotificationActivity.kt | 15 +++++++++++++++ .../main/notification/NotificationViewModel.kt | 9 +++++++++ 2 files changed, 24 insertions(+) create mode 100644 app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt create mode 100644 app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt new file mode 100644 index 00000000..7bb2148a --- /dev/null +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt @@ -0,0 +1,15 @@ +package com.android.go.sopt.winey.presentation.main.notification + +import android.os.Bundle +import com.android.go.sopt.winey.R +import com.android.go.sopt.winey.databinding.ActivityNotificationBinding +import com.android.go.sopt.winey.util.binding.BindingActivity +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class NotificationActivity : BindingActivity(R.layout.activity_notification) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + } +} diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt new file mode 100644 index 00000000..47f0ac59 --- /dev/null +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt @@ -0,0 +1,9 @@ +package com.android.go.sopt.winey.presentation.main.notification + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel + +@HiltViewModel +class NotificationViewModel : ViewModel() { + +} From 31629424b4398e675cb7c612f7d9a0b18e450f32 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 15:35:02 +0900 Subject: [PATCH 02/20] =?UTF-8?q?[ui]=20#117=20=EC=95=8C=EB=A6=BC=EB=B7=B0?= =?UTF-8?q?=20=EC=95=B1=20=EB=B0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/activity_notification.xml | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 app/src/main/res/layout/activity_notification.xml diff --git a/app/src/main/res/layout/activity_notification.xml b/app/src/main/res/layout/activity_notification.xml new file mode 100644 index 00000000..a613ff08 --- /dev/null +++ b/app/src/main/res/layout/activity_notification.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + From 68a38b3bdbfc4d0dacd305de8d6a5e216798e1ec Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 15:35:17 +0900 Subject: [PATCH 03/20] =?UTF-8?q?[ui]=20#117=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EB=B7=B0=20=EB=A6=AC=EC=82=AC=EC=9D=B4=ED=81=B4=EB=9F=AC=20?= =?UTF-8?q?=EB=B7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_notification.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/layout/activity_notification.xml b/app/src/main/res/layout/activity_notification.xml index a613ff08..436594ff 100644 --- a/app/src/main/res/layout/activity_notification.xml +++ b/app/src/main/res/layout/activity_notification.xml @@ -45,5 +45,12 @@ + + From bc9061625a086ce7183ff064b7cfec5468c4e6d1 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 15:35:44 +0900 Subject: [PATCH 04/20] =?UTF-8?q?[add]=20#117=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=ED=85=9C=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/item_notification_post.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 app/src/main/res/layout/item_notification_post.xml diff --git a/app/src/main/res/layout/item_notification_post.xml b/app/src/main/res/layout/item_notification_post.xml new file mode 100644 index 00000000..c67e99e2 --- /dev/null +++ b/app/src/main/res/layout/item_notification_post.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + From 76e2111f78c782cfef214ee33bad49ddb4086395 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 16:01:09 +0900 Subject: [PATCH 05/20] =?UTF-8?q?[add]=20#117=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/drawable/ic_notification_comment.xml | 14 ++ .../res/drawable/ic_notification_like.xml | 20 ++ .../res/drawable/ic_notification_logo.xml | 40 ++++ .../main/res/drawable/ic_notification_lv1.xml | 109 +++++++++ .../main/res/drawable/ic_notification_lv2.xml | 202 +++++++++++++++++ .../main/res/drawable/ic_notification_lv3.xml | 208 ++++++++++++++++++ .../main/res/drawable/ic_notification_lv4.xml | 166 ++++++++++++++ 7 files changed, 759 insertions(+) create mode 100644 app/src/main/res/drawable/ic_notification_comment.xml create mode 100644 app/src/main/res/drawable/ic_notification_like.xml create mode 100644 app/src/main/res/drawable/ic_notification_logo.xml create mode 100644 app/src/main/res/drawable/ic_notification_lv1.xml create mode 100644 app/src/main/res/drawable/ic_notification_lv2.xml create mode 100644 app/src/main/res/drawable/ic_notification_lv3.xml create mode 100644 app/src/main/res/drawable/ic_notification_lv4.xml diff --git a/app/src/main/res/drawable/ic_notification_comment.xml b/app/src/main/res/drawable/ic_notification_comment.xml new file mode 100644 index 00000000..3449151f --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_comment.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/ic_notification_like.xml b/app/src/main/res/drawable/ic_notification_like.xml new file mode 100644 index 00000000..43aaae57 --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_like.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_notification_logo.xml b/app/src/main/res/drawable/ic_notification_logo.xml new file mode 100644 index 00000000..825e4f1c --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_logo.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_notification_lv1.xml b/app/src/main/res/drawable/ic_notification_lv1.xml new file mode 100644 index 00000000..95fc9607 --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_lv1.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_notification_lv2.xml b/app/src/main/res/drawable/ic_notification_lv2.xml new file mode 100644 index 00000000..414b06c6 --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_lv2.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_notification_lv3.xml b/app/src/main/res/drawable/ic_notification_lv3.xml new file mode 100644 index 00000000..8f75ac5f --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_lv3.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_notification_lv4.xml b/app/src/main/res/drawable/ic_notification_lv4.xml new file mode 100644 index 00000000..f3b7d9e1 --- /dev/null +++ b/app/src/main/res/drawable/ic_notification_lv4.xml @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5f6ab072bf0cc5a96afccb2d85e007d8bdeed57e Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 16:13:21 +0900 Subject: [PATCH 06/20] =?UTF-8?q?[ui]=20#117=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=ED=85=9C=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/item_notification_post.xml | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/app/src/main/res/layout/item_notification_post.xml b/app/src/main/res/layout/item_notification_post.xml index c67e99e2..aa1bb317 100644 --- a/app/src/main/res/layout/item_notification_post.xml +++ b/app/src/main/res/layout/item_notification_post.xml @@ -11,6 +11,57 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + + + + + + + + + + From 088792b2b7a46928ccb737219be04912f013af48 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 16:13:42 +0900 Subject: [PATCH 07/20] =?UTF-8?q?[chore]=20#117=20=EB=A6=AC=EC=82=AC?= =?UTF-8?q?=EC=9D=B4=ED=81=B4=EB=9F=AC=EB=B7=B0=20tools:listitem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_notification.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_notification.xml b/app/src/main/res/layout/activity_notification.xml index 436594ff..fa59f6cc 100644 --- a/app/src/main/res/layout/activity_notification.xml +++ b/app/src/main/res/layout/activity_notification.xml @@ -50,7 +50,8 @@ android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@id/cl_notification_appbar" /> + app:layout_constraintTop_toBottomOf="@id/cl_notification_appbar" + tools:listitem="@layout/item_notification_post" /> From 636d7dd089b95af5551ab4c3848e874b2fa60e71 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 17:58:12 +0900 Subject: [PATCH 08/20] =?UTF-8?q?[feat]=20#117=20notification=20data=20cla?= =?UTF-8?q?ss=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../go/sopt/winey/domain/entity/Notification.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 app/src/main/java/com/android/go/sopt/winey/domain/entity/Notification.kt diff --git a/app/src/main/java/com/android/go/sopt/winey/domain/entity/Notification.kt b/app/src/main/java/com/android/go/sopt/winey/domain/entity/Notification.kt new file mode 100644 index 00000000..ef92c5d9 --- /dev/null +++ b/app/src/main/java/com/android/go/sopt/winey/domain/entity/Notification.kt @@ -0,0 +1,12 @@ +package com.android.go.sopt.winey.domain.entity + +data class Notification( + val notiId: Int, + val notiReceiver: String, + val notiMessage: String, + val notiType: String, + val isChecked: Boolean, + val timeAgo: String, + val createdAt: String, + val linkId: Int +) From 9fb2fa9c8445ebb87e5c5e8258dbf44b482bafa9 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 17:58:26 +0900 Subject: [PATCH 09/20] =?UTF-8?q?[add]=20#117=20string=20=EB=A6=AC?= =?UTF-8?q?=EC=86=8C=EC=8A=A4=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/values/strings.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f4f65392..cd319d3d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,4 +149,12 @@ 서브 메시지 입니다.\n서브 메시지 입니다. 버튼1 버튼2 + + + 등급 상승 + 등급 하락 + 목표 달성 실패 + 좋아요 + 댓글 + 위니 사용법 From a5fa26affd9ccaafd5e275ddbf35acf3091ebcb8 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 17:58:43 +0900 Subject: [PATCH 10/20] =?UTF-8?q?[feat]=20#117=20=EB=B0=94=EC=9D=B8?= =?UTF-8?q?=EB=94=A9=20=EC=96=B4=EB=8C=91=ED=84=B0=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/winey/util/binding/BindingAdapter.kt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt b/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt index a970dba6..66002273 100644 --- a/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt +++ b/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt @@ -113,3 +113,32 @@ fun setLikeImage(view: ImageView, isLiked: Boolean) { } view.setImageResource(imageRes) } + +@BindingAdapter("notiType") +fun TextView.setNotiType(notiType: String) { + when (notiType) { + "RANKUPTO2", "RANKUPTO3", "RANKUPTO4" -> context.stringOf(R.string.notification_rankup) + "DELETERANKDOWNTO1", "DELETERANKDOWNTO2", "DELETERANKDOWNTO3" -> context.stringOf(R.string.notification_rankdown) + "GOALFAILED" -> context.stringOf(R.string.notification_goal_failed) + "LIKENOTI" -> context.stringOf(R.string.notification_like) + "COMMENTNOTI" -> context.stringOf(R.string.notification_comment) + "HOWTOLEVELUP" -> context.stringOf(R.string.notification_how_to_levelup) + else -> { + } + } +} + +@BindingAdapter("notiType") +fun ImageView.setNotiType(notiType: String) { + when (notiType) { + "RANKUPTO2", "DELETERANKDOWNTO2" -> context.drawableOf(R.drawable.ic_notification_lv2) + "RANKUPTO3", "DELETERANKDOWNTO3" -> context.drawableOf(R.drawable.ic_notification_lv3) + "RANKUPTO4" -> context.drawableOf(R.drawable.ic_notification_lv4) + "DELETERANKDOWNTO1" -> context.drawableOf(R.drawable.ic_notification_lv1) + "GOALFAILED", "HOWTOLEVELUP" -> context.drawableOf(R.drawable.ic_notification_logo) + "LIKENOTI" -> context.drawableOf(R.drawable.ic_notification_like) + "COMMENTNOTI" -> context.drawableOf(R.drawable.ic_notification_comment) + else -> { + } + } +} From f1a6b67211167a20471c7fe262d602fd3b7d3188 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 17:58:56 +0900 Subject: [PATCH 11/20] =?UTF-8?q?[feat]=20#117=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EB=B0=94=EC=9D=B8=EB=94=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/item_notification_post.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/item_notification_post.xml b/app/src/main/res/layout/item_notification_post.xml index aa1bb317..9a5e1386 100644 --- a/app/src/main/res/layout/item_notification_post.xml +++ b/app/src/main/res/layout/item_notification_post.xml @@ -5,6 +5,9 @@ + + app:layout_constraintBottom_toBottomOf="parent" /> From 31954371ae5002b5d2647e4fd1bacd17317ca049 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 17:59:10 +0900 Subject: [PATCH 12/20] =?UTF-8?q?[feat]=20#117=20=EC=96=B4=EB=8C=91?= =?UTF-8?q?=ED=84=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/notification/NotificationAdapter.kt | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt new file mode 100644 index 00000000..1a9021f9 --- /dev/null +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt @@ -0,0 +1,45 @@ +package com.android.go.sopt.winey.presentation.main.notification + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.paging.PagingDataAdapter +import androidx.recyclerview.widget.RecyclerView +import com.android.go.sopt.winey.databinding.ItemNotificationPostBinding +import com.android.go.sopt.winey.domain.entity.Notification +import com.android.go.sopt.winey.util.view.ItemDiffCallback + +class NotificationAdapter : + PagingDataAdapter(DiffUtil) { + + class NotificationViewHolder(private val binding: ItemNotificationPostBinding) : + RecyclerView.ViewHolder(binding.root) { + + fun onBind(data: Notification?) { + binding.apply { + this.data = data + if (data == null) { + return + } + binding.root.setOnClickListener { + } + } + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NotificationViewHolder { + val binding = + ItemNotificationPostBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return NotificationViewHolder(binding) + } + + override fun onBindViewHolder(holder: NotificationViewHolder, position: Int) { + holder.onBind(getItem(position)) + } + + companion object { + private val DiffUtil = ItemDiffCallback( + onItemsTheSame = { old, new -> old.notiId == new.notiId }, + onContentsTheSame = { old, new -> old == new } + ) + } +} From 43d0201cd5cc946f801efae3488c32eaed483b4a Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Thu, 17 Aug 2023 17:59:33 +0900 Subject: [PATCH 13/20] =?UTF-8?q?[chore]=20#117=20=EC=96=B4=EB=8C=91?= =?UTF-8?q?=ED=84=B0=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/main/notification/NotificationActivity.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt index 7bb2148a..05683113 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt @@ -8,8 +8,13 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class NotificationActivity : BindingActivity(R.layout.activity_notification) { - + private lateinit var notificationAdapter: NotificationAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + initNotificationAdapter() + } + + private fun initNotificationAdapter() { + notificationAdapter = NotificationAdapter() } } From d686c29ffb42b8bbb402ddbddca1161d6a0baac1 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 18 Aug 2023 20:54:27 +0900 Subject: [PATCH 14/20] =?UTF-8?q?[mod]=20#117=20=EB=B0=94=EC=9D=B8?= =?UTF-8?q?=EB=94=A9=20=EC=96=B4=EB=8C=91=ED=84=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/winey/util/binding/BindingAdapter.kt | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt b/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt index 66002273..31f85667 100644 --- a/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt +++ b/app/src/main/java/com/android/go/sopt/winey/util/binding/BindingAdapter.kt @@ -116,29 +116,38 @@ fun setLikeImage(view: ImageView, isLiked: Boolean) { @BindingAdapter("notiType") fun TextView.setNotiType(notiType: String) { - when (notiType) { - "RANKUPTO2", "RANKUPTO3", "RANKUPTO4" -> context.stringOf(R.string.notification_rankup) - "DELETERANKDOWNTO1", "DELETERANKDOWNTO2", "DELETERANKDOWNTO3" -> context.stringOf(R.string.notification_rankdown) - "GOALFAILED" -> context.stringOf(R.string.notification_goal_failed) - "LIKENOTI" -> context.stringOf(R.string.notification_like) - "COMMENTNOTI" -> context.stringOf(R.string.notification_comment) - "HOWTOLEVELUP" -> context.stringOf(R.string.notification_how_to_levelup) - else -> { - } + val resourceId = when (notiType) { + "RANKUPTO2", "RANKUPTO3", "RANKUPTO4" -> R.string.notification_rankup + "DELETERANKDOWNTO1", "DELETERANKDOWNTO2", "DELETERANKDOWNTO3" -> R.string.notification_rankdown + "GOALFAILED" -> R.string.notification_goal_failed + "LIKENOTI" -> R.string.notification_like + "COMMENTNOTI" -> R.string.notification_comment + "HOWTOLEVELUP" -> R.string.notification_how_to_levelup + else -> null + } + + if (resourceId != null) { + text = context.getString(resourceId) + } else { + text = "" } } @BindingAdapter("notiType") fun ImageView.setNotiType(notiType: String) { - when (notiType) { - "RANKUPTO2", "DELETERANKDOWNTO2" -> context.drawableOf(R.drawable.ic_notification_lv2) - "RANKUPTO3", "DELETERANKDOWNTO3" -> context.drawableOf(R.drawable.ic_notification_lv3) - "RANKUPTO4" -> context.drawableOf(R.drawable.ic_notification_lv4) - "DELETERANKDOWNTO1" -> context.drawableOf(R.drawable.ic_notification_lv1) - "GOALFAILED", "HOWTOLEVELUP" -> context.drawableOf(R.drawable.ic_notification_logo) - "LIKENOTI" -> context.drawableOf(R.drawable.ic_notification_like) - "COMMENTNOTI" -> context.drawableOf(R.drawable.ic_notification_comment) - else -> { - } + val drawableResourceId = when (notiType) { + "RANKUPTO2", "DELETERANKDOWNTO2" -> R.drawable.ic_notification_lv2 + "RANKUPTO3", "DELETERANKDOWNTO3" -> R.drawable.ic_notification_lv3 + "RANKUPTO4" -> R.drawable.ic_notification_lv4 + "DELETERANKDOWNTO1" -> R.drawable.ic_notification_lv1 + "GOALFAILED", "HOWTOLEVELUP" -> R.drawable.ic_notification_logo + "LIKENOTI" -> R.drawable.ic_notification_like + "COMMENTNOTI" -> R.drawable.ic_notification_comment + else -> 0 + } + + if (drawableResourceId != 0) { + setImageResource(drawableResourceId) + } else { } } From 94707b65c8caa142c25e695020b9f509cbc1c75c Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 18 Aug 2023 20:55:10 +0900 Subject: [PATCH 15/20] [chore] #117 Notification viewmodel --- .../presentation/main/notification/NotificationActivity.kt | 2 ++ .../presentation/main/notification/NotificationViewModel.kt | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt index 05683113..9c47b161 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationActivity.kt @@ -1,6 +1,7 @@ package com.android.go.sopt.winey.presentation.main.notification import android.os.Bundle +import androidx.activity.viewModels import com.android.go.sopt.winey.R import com.android.go.sopt.winey.databinding.ActivityNotificationBinding import com.android.go.sopt.winey.util.binding.BindingActivity @@ -9,6 +10,7 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class NotificationActivity : BindingActivity(R.layout.activity_notification) { private lateinit var notificationAdapter: NotificationAdapter + private val viewModel: NotificationViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) initNotificationAdapter() diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt index 47f0ac59..3110db46 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationViewModel.kt @@ -1,9 +1,5 @@ package com.android.go.sopt.winey.presentation.main.notification import androidx.lifecycle.ViewModel -import dagger.hilt.android.lifecycle.HiltViewModel -@HiltViewModel -class NotificationViewModel : ViewModel() { - -} +class NotificationViewModel : ViewModel() From 5c8e1d72e3908b215c45b37807bae24acba6512d Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 18 Aug 2023 20:55:43 +0900 Subject: [PATCH 16/20] =?UTF-8?q?[ui]=20#117=20mypage=20=EB=A6=AC=EB=94=94?= =?UTF-8?q?=EC=9E=90=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/mypage/MyPageFragment.kt | 18 ++++++- .../main/res/drawable/ic_mypage_lv_help.xml | 34 +++++++------ app/src/main/res/layout/fragment_my_page.xml | 49 +++++++++++++++++-- app/src/main/res/values/strings.xml | 1 + 4 files changed, 81 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt index 739711c3..bdff387e 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/mypage/MyPageFragment.kt @@ -18,7 +18,6 @@ import com.android.go.sopt.winey.presentation.main.AlertDialogFragment import com.android.go.sopt.winey.presentation.main.MainViewModel import com.android.go.sopt.winey.presentation.main.mypage.myfeed.MyFeedFragment import com.android.go.sopt.winey.util.binding.BindingFragment -import com.android.go.sopt.winey.util.context.stringOf import com.android.go.sopt.winey.util.fragment.snackBar import com.android.go.sopt.winey.util.fragment.stringOf import com.android.go.sopt.winey.util.view.UiState @@ -38,6 +37,7 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) init1On1ButtonClickListener() + initTermsButtonClickListener() initLevelHelpButtonClickListener() initToMyFeedButtonClickListener() initLogoutButtonClickListener() @@ -63,6 +63,14 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ } } + private fun initTermsButtonClickListener() { + binding.clMypageToTerms.setOnClickListener { + val url = TERMS_URL + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + startActivity(intent) + } + } + private fun initLevelHelpButtonClickListener() { binding.btnMypageLevelHelp.setOnClickListener { val intent = Intent(context, MypageHelpActivity::class.java) @@ -127,7 +135,11 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ private fun handleSuccessState(data: User?) { binding.data = data + handleIsOver(data) + handleUserLevel(data) + } + private fun handleIsOver(data: User?) { when (data?.isOver) { true -> { binding.tvMypageTargetAmount.text = getString(R.string.mypage_not_yet_set) @@ -147,6 +159,9 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ null -> { } } + } + + private fun handleUserLevel(data: User?) { when (data?.userLevel) { LEVEL_COMMON -> { binding.ivMypageProgressbar.setImageResource(R.drawable.ic_mypage_lv1_progressbar) @@ -185,5 +200,6 @@ class MyPageFragment : BindingFragment(R.layout.fragment_ private const val LEVEL_NOBLESS = "귀족" private const val LEVEL_KING = "황제" private const val ONE_ON_ONE_URL = "https://open.kakao.com/o/s751Susf" + private const val TERMS_URL = "https://empty-weaver-a9f.notion.site/62b37962c661488ba5f60958c24753e1?pvs=4" } } diff --git a/app/src/main/res/drawable/ic_mypage_lv_help.xml b/app/src/main/res/drawable/ic_mypage_lv_help.xml index 02b6fba0..c030e6a0 100644 --- a/app/src/main/res/drawable/ic_mypage_lv_help.xml +++ b/app/src/main/res/drawable/ic_mypage_lv_help.xml @@ -1,17 +1,21 @@ - - - + android:width="30dp" + android:height="30dp" + android:viewportWidth="30" + android:viewportHeight="30"> + + + + + + diff --git a/app/src/main/res/layout/fragment_my_page.xml b/app/src/main/res/layout/fragment_my_page.xml index d88f0011..68b09b10 100644 --- a/app/src/main/res/layout/fragment_my_page.xml +++ b/app/src/main/res/layout/fragment_my_page.xml @@ -78,10 +78,11 @@ android:id="@+id/btn_mypage_level_help" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="@android:color/transparent" android:src="@drawable/ic_mypage_lv_help" + android:background="@android:color/transparent" app:layout_constraintStart_toEndOf="@id/tv_mypage_level_token" - app:layout_constraintTop_toTopOf="@id/tv_mypage_level_token" /> + app:layout_constraintTop_toTopOf="@id/tv_mypage_level_token" + app:layout_constraintBottom_toBottomOf="@id/tv_mypage_level_token"/> + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/v_mypage_line9"> 절약 목표 기간이 지나지 않아\n 목표를 수정할 수 없어요 닫기 1:1 문의 + 이용약관 탈퇴하기 로그아웃 정말 로그아웃 하시겠어요? From e60dda1f8f2c5cbb5694f0acc0cca47af75565f2 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 18 Aug 2023 20:56:21 +0900 Subject: [PATCH 17/20] =?UTF-8?q?[chore]=20#117=20mainviewmodel=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83=20=EB=A1=9C=EC=A7=81=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 --- .../winey/presentation/main/MainActivity.kt | 22 ------------------- .../winey/presentation/main/MainViewModel.kt | 7 ++++++ 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt index b4ddf856..6d5d8c51 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt @@ -33,7 +33,6 @@ class MainActivity : BindingActivity(R.layout.activity_main initBnvItemSelectedListener() syncBottomNavigationSelection() setupLogoutState() - setupTokenState() } private fun initBnvItemSelectedListener() { @@ -82,23 +81,6 @@ class MainActivity : BindingActivity(R.layout.activity_main }.launchIn(lifecycleScope) } - fun setupTokenState() { - viewModel.getUserState.flowWithLifecycle(lifecycle).onEach { state -> - when (state) { - is UiState.Failure -> { - if (state is HttpException) { - if (state.code() == CODE_TOKEN_EXPIRED) { - viewModel.postLogout() - } - } - } - - else -> { - } - } - } - } - private fun navigateToLoginScreen() { Intent(this@MainActivity, LoginActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) @@ -112,8 +94,4 @@ class MainActivity : BindingActivity(R.layout.activity_main replace(R.id.fcv_main, T::class.simpleName) } } - - companion object { - private const val CODE_TOKEN_EXPIRED = 401 - } } diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainViewModel.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainViewModel.kt index 70763089..1f3b4e54 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainViewModel.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainViewModel.kt @@ -40,6 +40,9 @@ class MainViewModel @Inject constructor( .onFailure { t -> if (t is HttpException) { Timber.e("HTTP 실패 ${t.code()}") + if (t.code() == CODE_TOKEN_EXPIRED) { + postLogout() + } } Timber.e("${t.message}") _getUserState.value = UiState.Failure("${t.message}") @@ -66,4 +69,8 @@ class MainViewModel @Inject constructor( } } } + + companion object { + private const val CODE_TOKEN_EXPIRED = 401 + } } From a66888982d6924582a811afd60a6bd154dc50ac7 Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Fri, 18 Aug 2023 21:00:09 +0900 Subject: [PATCH 18/20] =?UTF-8?q?[chore]=20#117=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20import=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/android/go/sopt/winey/presentation/main/MainActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt index 6d5d8c51..faac4653 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/MainActivity.kt @@ -20,7 +20,6 @@ import com.android.go.sopt.winey.util.view.UiState import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import retrofit2.HttpException @AndroidEntryPoint class MainActivity : BindingActivity(R.layout.activity_main) { From 85517b1c4e6692f3ccf2e42b243135ea4888795b Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Sat, 19 Aug 2023 20:10:08 +0900 Subject: [PATCH 19/20] =?UTF-8?q?[add]=20#117=20=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A7=81=20=EB=A6=AC=EC=86=8C=EC=8A=A4=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/layout/activity_notification.xml | 2 +- app/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_notification.xml b/app/src/main/res/layout/activity_notification.xml index fa59f6cc..182ce8f4 100644 --- a/app/src/main/res/layout/activity_notification.xml +++ b/app/src/main/res/layout/activity_notification.xml @@ -30,7 +30,7 @@ android:id="@+id/tv_notification_title" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="알림" + android:text="@string/notification_title" android:textAppearance="@style/TextAppearance.WINEY.Headline_b_18_xl" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1dfaf6dd..915689bb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -176,6 +176,7 @@ 버튼2 + 알림 등급 상승 등급 하락 목표 달성 실패 From 46ef14e19d2211e00d135f32a3d58991dca6c70e Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Sat, 19 Aug 2023 20:12:01 +0900 Subject: [PATCH 20/20] [chore] #117 PagingDataAdapter -> ListAdapter --- .../presentation/main/notification/NotificationAdapter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt index 1a9021f9..f0a942f2 100644 --- a/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt +++ b/app/src/main/java/com/android/go/sopt/winey/presentation/main/notification/NotificationAdapter.kt @@ -2,14 +2,14 @@ package com.android.go.sopt.winey.presentation.main.notification import android.view.LayoutInflater import android.view.ViewGroup -import androidx.paging.PagingDataAdapter +import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.android.go.sopt.winey.databinding.ItemNotificationPostBinding import com.android.go.sopt.winey.domain.entity.Notification import com.android.go.sopt.winey.util.view.ItemDiffCallback class NotificationAdapter : - PagingDataAdapter(DiffUtil) { + ListAdapter(DiffUtil) { class NotificationViewHolder(private val binding: ItemNotificationPostBinding) : RecyclerView.ViewHolder(binding.root) {