From b9ddfa8d4097f0ea2e77e52190e1c1d48b815232 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 01:08:38 +0900
Subject: [PATCH 001/109] =?UTF-8?q?[ADD/#33]=20=EB=8D=B0=EC=9D=B4=ED=84=B0?=
=?UTF-8?q?=EB=B0=94=EC=9D=B8=EB=94=A9=20=EC=BD=94=EB=93=9C=20=EC=95=BD?=
=?UTF-8?q?=EA=B0=84=EC=9D=98=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularViewModel.kt | 4 +--
app/src/main/res/layout/fragment_explore.xml | 5 +++-
app/src/main/res/layout/fragment_popular.xml | 6 ++++
.../main/res/layout/item_explore_content.xml | 30 ++++++++++---------
4 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 693b0b6..fd44107 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -32,10 +32,10 @@ class PopularViewModel @Inject constructor(
val filter = MutableLiveData("")
init {
- getPopularList()
+ getPopularData()
}
- private fun getPopularList() {
+ fun getPopularData() {
viewModelScope.launch {
contentRepository.getContent(filter.value.toString())
.onSuccess { response ->
diff --git a/app/src/main/res/layout/fragment_explore.xml b/app/src/main/res/layout/fragment_explore.xml
index 39a975a..9659123 100644
--- a/app/src/main/res/layout/fragment_explore.xml
+++ b/app/src/main/res/layout/fragment_explore.xml
@@ -2,7 +2,10 @@
-
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toTopOf="parent"
+ tools:text="@string/explore_activity" />
+ app:layout_constraintTop_toBottomOf="@id/tv_explore_category"
+ tools:text="@string/explore_content_title" />
+ app:layout_constraintTop_toBottomOf="@id/tv_explore_content_title"
+ tools:text="@string/explore_date" />
+ app:layout_constraintStart_toStartOf="parent"
+ tools:src="@drawable/img_explore_background" />
\ No newline at end of file
From 9c0d1fc5aaa736944a710c479e526d67f6a61526 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 01:15:21 +0900
Subject: [PATCH 002/109] =?UTF-8?q?[ADD/#33]=20serializable=20=EA=B9=8C?=
=?UTF-8?q?=EB=A8=B9=EC=A7=80=20=EB=A7=90=EA=B3=A0=20=EB=84=A3=EC=9E=90..?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/data/entity/response/ResponseGetContentDto.kt | 2 +-
.../release/keyneez/data/entity/response/ResponseGetLikeDto.kt | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
index e29e27f..1dc8e33 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
@@ -2,7 +2,7 @@ package com.release.keyneez.data.entity.response
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
-
+@Serializable
data class ResponseGetContentDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt
index 9570bb3..639d1a8 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt
@@ -1,7 +1,9 @@
package com.release.keyneez.data.entity.response
import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+@Serializable
data class ResponseGetLikeDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
From a052c7de5041ad546ce706f6aed5d31d0c62a7fd Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 15:26:12 +0900
Subject: [PATCH 003/109] =?UTF-8?q?[MOD/#33]=20selector=20=EA=B4=80?=
=?UTF-8?q?=EB=A0=A8=ED=95=98=EC=97=AC=20=EC=BD=94=EB=93=9C=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 9 +++++++++
.../main/explore/popular/PopularFragment.kt | 5 ++---
.../sel_explore_drawable_text_color.xml | 4 ++--
.../sel_explore_drawable_bnv_category.xml | 16 +++++++++++++---
app/src/main/res/layout/fragment_like.xml | 8 ++++----
app/src/main/res/layout/fragment_popular.xml | 15 ++++++++++-----
app/src/main/res/layout/fragment_recent.xml | 8 ++++----
7 files changed, 44 insertions(+), 21 deletions(-)
rename app/src/main/res/{drawable => color}/sel_explore_drawable_text_color.xml (55%)
diff --git a/app/build.gradle b/app/build.gradle
index 2143c24..b03593a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,6 +6,7 @@ plugins {
id 'org.jetbrains.kotlin.plugin.serialization' version '1.7.10'
id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
}
+apply plugin: 'kotlin-kapt'
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
@@ -58,10 +59,15 @@ dependencies {
// ktx
implementation 'androidx.core:core-ktx:1.10.1'
implementation "androidx.fragment:fragment-ktx:1.5.7"
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.0-alpha03"
+ implementation "androidx.activity:activity-ktx:1.6.1"
// recyclerview
implementation "androidx.recyclerview:recyclerview:1.3.0"
+ // kotlin serialization
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
+
// coroutine
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
@@ -103,6 +109,9 @@ dependencies {
// app compat
implementation 'androidx.appcompat:appcompat:1.6.1'
+ // dot indicator
+ implementation "com.tbuonomo:dotsindicator:4.3"
+
// material
implementation 'com.google.android.material:material:1.9.0'
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 0f0f69a..eb5670b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -3,16 +3,15 @@ package com.release.keyneez.presentation.main.explore.popular
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
-import com.release.keyneez.R
import com.release.keyneez.databinding.FragmentPopularBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
-class PopularFragment : BindingFragment(R.layout.fragment_popular) {
+class PopularFragment :
+ BindingFragment(com.release.keyneez.R.layout.fragment_popular) {
private val viewModel: PopularViewModel by viewModels()
private var popularAdapter: PopularAdapter? = null
-
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.vm = viewModel
diff --git a/app/src/main/res/drawable/sel_explore_drawable_text_color.xml b/app/src/main/res/color/sel_explore_drawable_text_color.xml
similarity index 55%
rename from app/src/main/res/drawable/sel_explore_drawable_text_color.xml
rename to app/src/main/res/color/sel_explore_drawable_text_color.xml
index 143b7cd..5b2f32e 100644
--- a/app/src/main/res/drawable/sel_explore_drawable_text_color.xml
+++ b/app/src/main/res/color/sel_explore_drawable_text_color.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml b/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml
index f9f2436..92fe961 100644
--- a/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml
+++ b/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml
@@ -1,5 +1,15 @@
-
-
-
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_like.xml b/app/src/main/res/layout/fragment_like.xml
index 60ed2bf..bcc3a29 100644
--- a/app/src/main/res/layout/fragment_like.xml
+++ b/app/src/main/res/layout/fragment_like.xml
@@ -64,7 +64,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_entire"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_like_toolbar" />
@@ -79,7 +79,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_hobby"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_like_all"
app:layout_constraintTop_toBottomOf="@id/layout_like_toolbar" />
@@ -94,7 +94,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_activity"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_like_hobby"
app:layout_constraintTop_toBottomOf="@id/layout_like_toolbar" />
@@ -109,7 +109,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_career"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_like_outside"
app:layout_constraintTop_toBottomOf="@id/layout_like_toolbar" />
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index f52c79d..df0e6e1 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -19,7 +19,8 @@
+ android:layout_height="match_parent"
+ android:clickable="true">
@@ -45,9 +47,10 @@
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
+ android:clickable="true"
android:onClick="@{()->vm.getPopularData()}"
android:text="@string/explore_hobby"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_popular_all"
app:layout_constraintTop_toTopOf="parent" />
@@ -59,10 +62,11 @@
android:layout_marginStart="9dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
+ android:clickable="true"
android:onClick="@{()->vm.getPopularData()}"
android:paddingVertical="6dp"
android:text="@string/explore_activity"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_popular_hobby"
app:layout_constraintTop_toTopOf="parent" />
@@ -72,12 +76,13 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
+ android:clickable="true"
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
android:onClick="@{()->vm.getPopularData()}"
android:paddingVertical="6dp"
android:text="@string/explore_career"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_popular_outside"
app:layout_constraintTop_toTopOf="parent" />
diff --git a/app/src/main/res/layout/fragment_recent.xml b/app/src/main/res/layout/fragment_recent.xml
index 1af3ed7..d0eae40 100644
--- a/app/src/main/res/layout/fragment_recent.xml
+++ b/app/src/main/res/layout/fragment_recent.xml
@@ -29,7 +29,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_entire"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -43,7 +43,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_hobby"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_recent_all"
app:layout_constraintTop_toTopOf="parent" />
@@ -57,7 +57,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_activity"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_recent_hobby"
app:layout_constraintTop_toTopOf="parent" />
@@ -71,7 +71,7 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_career"
- android:textColor="@drawable/sel_explore_drawable_text_color"
+ android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_recent_outside"
app:layout_constraintTop_toTopOf="parent" />
From 92a1f5a5f2a7f95a06928e88d4c3a19ff6fcaab7 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 18:34:36 +0900
Subject: [PATCH 004/109] =?UTF-8?q?[ADD/#33]=20selector=20=EA=B4=80?=
=?UTF-8?q?=EB=A0=A8=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 1 +
.../presentation/main/explore/popular/PopularFragment.kt | 5 +++++
.../main/res/drawable/sel_explore_drawable_bnv_category.xml | 4 ++--
app/src/main/res/layout/fragment_popular.xml | 1 -
4 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index b03593a..b4fb966 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,6 +7,7 @@ plugins {
id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
}
apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-parcelize'
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index eb5670b..5391338 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -2,7 +2,9 @@ package com.release.keyneez.presentation.main.explore.popular
import android.os.Bundle
import android.view.View
+import android.widget.TextView
import androidx.fragment.app.viewModels
+import com.release.keyneez.R
import com.release.keyneez.databinding.FragmentPopularBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -15,6 +17,9 @@ class PopularFragment :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.vm = viewModel
+ binding.tvExplorePopularAll.setOnClickListener {
+ binding.tvExplorePopularAll.isSelected = !binding.tvExplorePopularAll.isSelected
+ }
initPopularAdapter()
setupPopularActivityList()
}
diff --git a/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml b/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml
index 92fe961..e4ef233 100644
--- a/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml
+++ b/app/src/main/res/drawable/sel_explore_drawable_bnv_category.xml
@@ -1,12 +1,12 @@
- -
+
-
- -
+
-
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index df0e6e1..c8bb5fb 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -30,7 +30,6 @@
android:layout_marginStart="22dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
- android:onClick="@{()->vm.getPopularData()}"
android:paddingVertical="6dp"
android:clickable="true"
android:text="@string/explore_entire"
From b0975cb6fdf989cf0c2aa1a7386038575112ea56 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 18:43:30 +0900
Subject: [PATCH 005/109] =?UTF-8?q?[FEAT/#33]=20selector=20=ED=95=98?=
=?UTF-8?q?=EB=82=98=EC=9D=98=20=EB=B2=84=ED=8A=BC=EB=A7=8C=20=EB=88=84?=
=?UTF-8?q?=EB=A5=BC=20=EC=88=98=20=EC=9E=88=EA=B2=8C=20=ED=95=98=EB=8A=94?=
=?UTF-8?q?=20=EA=B2=83=20=EB=93=9C=EB=94=94=EC=96=B4=20=EA=B5=AC=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularFragment.kt | 28 ++++++++++++++++---
app/src/main/res/layout/fragment_popular.xml | 3 --
2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 5391338..fdd3ed0 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -4,7 +4,6 @@ import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
-import com.release.keyneez.R
import com.release.keyneez.databinding.FragmentPopularBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -17,11 +16,32 @@ class PopularFragment :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.vm = viewModel
- binding.tvExplorePopularAll.setOnClickListener {
- binding.tvExplorePopularAll.isSelected = !binding.tvExplorePopularAll.isSelected
- }
initPopularAdapter()
setupPopularActivityList()
+ initCategoryBtnListener()
+ }
+
+ private fun initCategoryBtnListener() {
+ binding.tvExplorePopularAll.setOnClickListener {
+ selectOnlyOneButton(binding.tvExplorePopularAll)
+ }
+ binding.tvExplorePopularCareer.setOnClickListener {
+ selectOnlyOneButton(binding.tvExplorePopularCareer)
+ }
+ binding.tvExplorePopularHobby.setOnClickListener {
+ selectOnlyOneButton(binding.tvExplorePopularHobby)
+ }
+ binding.tvExplorePopularOutside.setOnClickListener {
+ selectOnlyOneButton(binding.tvExplorePopularOutside)
+ }
+ }
+ private fun selectOnlyOneButton(selectedButton: TextView) {
+ binding.tvExplorePopularAll.isSelected = false
+ binding.tvExplorePopularCareer.isSelected = false
+ binding.tvExplorePopularHobby.isSelected = false
+ binding.tvExplorePopularOutside.isSelected = false
+
+ selectedButton.isSelected = true
}
private fun initPopularAdapter() {
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index c8bb5fb..4aa34e3 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -47,7 +47,6 @@
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:clickable="true"
- android:onClick="@{()->vm.getPopularData()}"
android:text="@string/explore_hobby"
android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_popular_all"
@@ -62,7 +61,6 @@
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
android:clickable="true"
- android:onClick="@{()->vm.getPopularData()}"
android:paddingVertical="6dp"
android:text="@string/explore_activity"
android:textColor="@color/sel_explore_drawable_text_color"
@@ -78,7 +76,6 @@
android:clickable="true"
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
- android:onClick="@{()->vm.getPopularData()}"
android:paddingVertical="6dp"
android:text="@string/explore_career"
android:textColor="@color/sel_explore_drawable_text_color"
From eb73d5c4132d8c4b3b0c3c26996db0c76a2e0699 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 18:46:10 +0900
Subject: [PATCH 006/109] =?UTF-8?q?[ADD/#33]=20=EC=B5=9C=EC=8B=A0=20?=
=?UTF-8?q?=ED=83=90=EC=83=89=EB=B7=B0=EC=97=90=EB=8F=84=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
---
.../main/explore/recent/RecentFragment.kt | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index e53d3b1..e7e6e53 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -2,6 +2,7 @@ package com.release.keyneez.presentation.main.explore.recent
import android.os.Bundle
import android.view.View
+import android.widget.TextView
import androidx.fragment.app.viewModels
import com.release.keyneez.R
import com.release.keyneez.databinding.FragmentRecentBinding
@@ -15,6 +16,30 @@ class RecentFragment : BindingFragment(R.layout.fragment_
super.onViewCreated(view, savedInstanceState)
initRecentAdapter()
setupRecentActivityList()
+ initCategoryBtnListener()
+ }
+ private fun initCategoryBtnListener() {
+ binding.tvExploreRecentAll.setOnClickListener {
+ selectOnlyOneButton(binding.tvExploreRecentAll)
+ }
+ binding.tvExploreRecentCareer.setOnClickListener {
+ selectOnlyOneButton(binding.tvExploreRecentCareer)
+ }
+ binding.tvExploreRecentHobby.setOnClickListener {
+ selectOnlyOneButton(binding.tvExploreRecentHobby)
+ }
+ binding.tvExploreRecentOutside.setOnClickListener {
+ selectOnlyOneButton(binding.tvExploreRecentOutside)
+ }
+ }
+
+ private fun selectOnlyOneButton(selectedButton: TextView) {
+ binding.tvExploreRecentAll.isSelected = false
+ binding.tvExploreRecentCareer.isSelected = false
+ binding.tvExploreRecentHobby.isSelected = false
+ binding.tvExploreRecentOutside.isSelected = false
+
+ selectedButton.isSelected = true
}
private fun initRecentAdapter() {
From 7ec383bfc7d8c015a375a6609f112af3c9a5fa77 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 18:49:02 +0900
Subject: [PATCH 007/109] =?UTF-8?q?[ADD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=EC=97=90=EB=8F=84=20=EC=A0=81=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/like/LikeFragment.kt | 26 +++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index ed89f2c..a56c78b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -2,6 +2,7 @@ import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.View
+import android.widget.TextView
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
@@ -32,6 +33,31 @@ class LikeFragment :
setupLikeActivityList()
initLikeEditBtnClickListener()
initEditBtnClickListener()
+ initCategoryBtnListener()
+ }
+
+ private fun initCategoryBtnListener() {
+ binding.tvLikeAll.setOnClickListener {
+ selectOnlyOneButton(binding.tvLikeAll)
+ }
+ binding.tvLikeCareer.setOnClickListener {
+ selectOnlyOneButton(binding.tvLikeCareer)
+ }
+ binding.tvLikeHobby.setOnClickListener {
+ selectOnlyOneButton(binding.tvLikeHobby)
+ }
+ binding.tvLikeOutside.setOnClickListener {
+ selectOnlyOneButton(binding.tvLikeOutside)
+ }
+ }
+
+ private fun selectOnlyOneButton(selectedButton: TextView) {
+ binding.tvLikeAll.isSelected = false
+ binding.tvLikeCareer.isSelected = false
+ binding.tvLikeHobby.isSelected = false
+ binding.tvLikeOutside.isSelected = false
+
+ selectedButton.isSelected = true
}
private fun initLikeAdapter() {
From 67cbdc71c7f5739b3ef1c4cadfeb794f6fa76862 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 20:30:41 +0900
Subject: [PATCH 008/109] =?UTF-8?q?[FEAT/#33]=20=EC=B9=B4=ED=85=8C?=
=?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EB=B3=84=20=EC=84=9C=EB=B2=84=ED=86=B5?=
=?UTF-8?q?=EC=8B=A0=ED=95=98=EA=B8=B0=20=EA=B5=AC=ED=98=84=20=EC=99=84?=
=?UTF-8?q?=EB=A3=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularFragment.kt | 4 ++++
.../presentation/main/explore/popular/PopularViewModel.kt | 4 ++++
app/src/main/res/layout/fragment_popular.xml | 8 ++++----
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index fdd3ed0..c1146e5 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -35,6 +35,7 @@ class PopularFragment :
selectOnlyOneButton(binding.tvExplorePopularOutside)
}
}
+
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvExplorePopularAll.isSelected = false
binding.tvExplorePopularCareer.isSelected = false
@@ -42,6 +43,9 @@ class PopularFragment :
binding.tvExplorePopularOutside.isSelected = false
selectedButton.isSelected = true
+ val filterValue = selectedButton.text.toString()
+ viewModel.setFilterValue(filterValue)
+ viewModel.getPopularData()
}
private fun initPopularAdapter() {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index fd44107..2cd61df 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -35,6 +35,10 @@ class PopularViewModel @Inject constructor(
getPopularData()
}
+ fun setFilterValue(value: String) {
+ filter.value = value
+ }
+
fun getPopularData() {
viewModelScope.launch {
contentRepository.getContent(filter.value.toString())
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index 4aa34e3..bf77e81 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -29,9 +29,9 @@
android:layout_height="wrap_content"
android:layout_marginStart="22dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
+ android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
- android:clickable="true"
android:text="@string/explore_entire"
android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toStartOf="parent"
@@ -44,9 +44,9 @@
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
+ android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
- android:clickable="true"
android:text="@string/explore_hobby"
android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_popular_all"
@@ -59,8 +59,8 @@
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
- android:paddingHorizontal="16dp"
android:clickable="true"
+ android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_activity"
android:textColor="@color/sel_explore_drawable_text_color"
@@ -73,8 +73,8 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
- android:clickable="true"
android:background="@drawable/sel_explore_drawable_bnv_category"
+ android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_career"
From 4f80942a1912ad9f7da05d9e36c32e62465e9f46 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 7 Jul 2023 20:33:04 +0900
Subject: [PATCH 009/109] =?UTF-8?q?[ADD/#33]=20clickable=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80=ED=95=98=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/res/layout/fragment_recent.xml | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/app/src/main/res/layout/fragment_recent.xml b/app/src/main/res/layout/fragment_recent.xml
index d0eae40..fb1fee7 100644
--- a/app/src/main/res/layout/fragment_recent.xml
+++ b/app/src/main/res/layout/fragment_recent.xml
@@ -12,12 +12,15 @@
+
+
+ android:layout_height="match_parent"
+ android:clickable="true">
Date: Fri, 7 Jul 2023 20:46:39 +0900
Subject: [PATCH 010/109] =?UTF-8?q?[ADD/#33]=20recent=20=EC=B9=B4=ED=85=8C?=
=?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EB=B3=84=20=EC=84=9C=EB=B2=84=ED=86=B5?=
=?UTF-8?q?=EC=8B=A0=20=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/recent/RecentAdapter.kt | 23 ++---
.../main/explore/recent/RecentFragment.kt | 10 +-
.../main/explore/recent/RecentViewModel.kt | 99 +++++++++++--------
3 files changed, 75 insertions(+), 57 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index 355e5b9..6f0127e 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -4,12 +4,12 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
-import coil.load
+import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.databinding.ItemExploreContentBinding
-import com.release.keyneez.domain.model.Activity
import com.release.keyneez.util.DiffCallback
-class RecentAdapter : ListAdapter(diffUtil) {
+class RecentAdapter : ListAdapter(diffUtil) {
+ var data = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return RecentViewHolder(
ItemExploreContentBinding.inflate(
@@ -21,25 +21,20 @@ class RecentAdapter : ListAdapter(diffUtil) {
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
- if (holder is RecentViewHolder) holder.bind(getItem(position))
+ if (holder is RecentViewHolder) holder.setRecentContent(getItem(position))
}
class RecentViewHolder(private val binding: ItemExploreContentBinding) :
RecyclerView.ViewHolder(binding.root) {
- fun bind(item: Activity) {
- with(binding) {
- ivExploreBackground.load(item.background)
- tvExploreCategory.text = item.category
- tvExploreContentTitle.text = item.title
- tvExploreDate.text = item.date
- // TODO : root.setOnSingleClickListener 구현
- }
+ fun setRecentContent(recent: ResponseGetContentDto) {
+ binding.data = recent
+ // 여기도 누르면 상세뷰로 가는 코드짜기
}
}
companion object {
- private val diffUtil = DiffCallback(
- onItemsTheSame = { old, new -> old.id == new.id },
+ private val diffUtil = DiffCallback(
+ onItemsTheSame = { old, new -> old.content == new.content },
onContentsTheSame = { old, new -> old == new }
)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index e7e6e53..c8deeb0 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -7,13 +7,16 @@ import androidx.fragment.app.viewModels
import com.release.keyneez.R
import com.release.keyneez.databinding.FragmentRecentBinding
import com.release.keyneez.util.binding.BindingFragment
+import dagger.hilt.android.AndroidEntryPoint
+@AndroidEntryPoint
class RecentFragment : BindingFragment(R.layout.fragment_recent) {
private val viewModel: RecentViewModel by viewModels()
private var recentAdapter: RecentAdapter? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ binding.vm = viewModel
initRecentAdapter()
setupRecentActivityList()
initCategoryBtnListener()
@@ -40,6 +43,9 @@ class RecentFragment : BindingFragment(R.layout.fragment_
binding.tvExploreRecentOutside.isSelected = false
selectedButton.isSelected = true
+ val filterValue = selectedButton.text.toString()
+ viewModel.setFilterValue(filterValue)
+ viewModel.getRecentData()
}
private fun initRecentAdapter() {
@@ -48,8 +54,8 @@ class RecentFragment : BindingFragment(R.layout.fragment_
}
private fun setupRecentActivityList() {
- viewModel.activityList.observe(viewLifecycleOwner) { activityList ->
- recentAdapter?.submitList(activityList)
+ viewModel.recentList.observe(viewLifecycleOwner) { recentList ->
+ recentAdapter?.submitList(recentList)
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index f260a92..75a85bc 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -3,53 +3,70 @@ package com.release.keyneez.presentation.main.explore.recent
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
import com.release.keyneez.R
+import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.repository.ContentRepository
import com.release.keyneez.domain.model.Activity
+import com.release.keyneez.util.UiState
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.launch
+import retrofit2.HttpException
+import timber.log.Timber
+import javax.inject.Inject
-class RecentViewModel : ViewModel() {
- private val _activityList = MutableLiveData
>()
- val activityList: LiveData>
- get() = _activityList
+@HiltViewModel
+class RecentViewModel @Inject constructor(
+ private val contentRepository: ContentRepository
+) : ViewModel() {
+ private val _recentList = MutableLiveData>()
+ val recentList: LiveData>
+ get() = _recentList
+
+ private val _stateMessage = MutableLiveData()
+ val stateMessage: LiveData
+ get() = _stateMessage
+
+ private val _saveState = MutableLiveData()
+ val saveState: LiveData
+ get() = _saveState
+
+ val filter = MutableLiveData("")
init {
- getRecentActivityList()
+ getRecentData()
+ }
+
+ fun setFilterValue(value: String) {
+ filter.value = value
+ }
+
+ fun getRecentData() {
+ viewModelScope.launch {
+ contentRepository.getContent(filter.value.toString())
+ .onSuccess { response ->
+ Timber.tag(successTag).d("response : $response")
+
+ if (response.data == null) {
+ Timber.d("GET RECENT CONTENT IS NULL")
+ _stateMessage.value = UiState.Failure(RECENT_DATA_NULL_CODE)
+ }
+ _recentList.value = response.data!!
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.tag(failTag).e("throwable : $it")
+ if (it is HttpException) {
+ Timber.tag(failTag).e("code : ${it.code()}")
+ Timber.tag(failTag).e("message : ${it.message()}")
+ }
+ }
+ }
}
- private fun getRecentActivityList() {
- val mainList = listOf(
- Activity(
- id = 1,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- ),
- Activity(
- id = 1,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- ),
- Activity(
- id = 1,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- ),
- Activity(
- id = 1,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- )
- )
- _activityList.value = mainList
+ companion object {
+ const val RECENT_DATA_NULL_CODE = 100
+ private const val successTag = "GET_RECENT_CONTENT_SUCCESS"
+ private const val failTag = "GET_RECENT_CONTENT_FAIL"
}
}
From 38b718ea00f212c4e911d3e613a0a3bb330e22d0 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 8 Jul 2023 13:31:34 +0900
Subject: [PATCH 011/109] =?UTF-8?q?[FEAT/#33]=20=EC=82=AD=EC=A0=9C?=
=?UTF-8?q?=ED=95=98=EB=8B=A4=EA=B0=80=20=EB=82=98=EA=B0=94=EC=9D=84=20?=
=?UTF-8?q?=EB=95=8C=20=EB=AA=A8=EB=93=A0=20=EA=B2=83=EC=9D=B4=20=EC=B4=88?=
=?UTF-8?q?=EA=B8=B0=ED=99=94=EB=90=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20?=
=?UTF-8?q?=EC=9E=91=EC=84=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/like/LikeAdapter.kt | 17 ++++++++++++++---
.../presentation/main/like/LikeFragment.kt | 3 ++-
.../presentation/main/like/LikeViewModel.kt | 9 +++++++++
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
index 6f1d73a..014198c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
@@ -13,13 +13,15 @@ import com.release.keyneez.util.extension.setOnSingleClickListener
class LikeAdapter(
private val setItemsSelected: (Int) -> List,
- private val isEdit: LiveData
+ private val isEdit: LiveData,
+ private val clearSelectedItems: () -> Unit
) : ListAdapter(diffUtil) {
inner class LikeViewHolder(
private val binding: ItemLikeContentBinding,
private val setItemsSelected: (Int) -> List,
- private val isEdit: LiveData
+ private val isEdit: LiveData,
+ private val clearSelectedItems: () -> Unit
) : RecyclerView.ViewHolder(binding.root) {
fun bind(item: Activity) {
with(binding) {
@@ -35,6 +37,14 @@ class LikeAdapter(
}
}
}
+ isEdit.observeForever { isEdit ->
+ if (isEdit == false) {
+ item.isSelected = false
+ binding.ivLikeCheckedBackground.visibility = View.GONE
+ binding.btnLikeChecked.visibility = View.GONE
+ clearSelectedItems()
+ }
+ }
}
}
@@ -47,7 +57,8 @@ class LikeAdapter(
return LikeViewHolder(
binding,
setItemsSelected,
- isEdit
+ isEdit,
+ clearSelectedItems
)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index a56c78b..fc4822a 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -63,7 +63,8 @@ class LikeFragment :
private fun initLikeAdapter() {
likeAdapter = LikeAdapter(
setItemsSelected = likeViewModel::setItemsSelected,
- isEdit = likeViewModel.isEdit
+ isEdit = likeViewModel.isEdit,
+ clearSelectedItems = likeViewModel::clearSelectedItems
)
binding.rvLike.adapter = likeAdapter
val animator = binding.rvLike.itemAnimator
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 41838ab..4ba5186 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -1,5 +1,6 @@
package com.release.keyneez.presentation.main.like
+import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -42,6 +43,14 @@ class LikeViewModel : ViewModel() {
return selectedIdsList.toList()
}
+ fun clearSelectedItems() {
+ Log.d("1", "제발")
+ if (_isEdit.value == false) {
+ _selectedIds.value?.clear()
+ getSelectedIdsCount()
+ }
+ }
+
fun updateEditView() {
_isEdit.value = _isEdit.value?.not()
}
From 0d861bdfcc9af3d1787f8ae030e6c2d2868e1b9c Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 8 Jul 2023 13:38:20 +0900
Subject: [PATCH 012/109] =?UTF-8?q?[MOD/#33]=20=EC=82=AD=EC=A0=9C=ED=96=88?=
=?UTF-8?q?=EB=8B=A4=EA=B0=80=20=EB=8B=A4=EC=8B=9C=20=EB=82=98=EA=B0=80?=
=?UTF-8?q?=EB=A9=B4=20=EB=B2=84=ED=8A=BC=20=EB=88=84=EB=A5=B4=EB=8A=94=20?=
=?UTF-8?q?=EA=B2=83=EB=8F=84=20=EC=B4=88=EA=B8=B0=ED=99=94=ED=95=98?=
=?UTF-8?q?=EA=B2=8C=EB=81=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeViewModel.kt | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 4ba5186..1fca667 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -1,6 +1,5 @@
package com.release.keyneez.presentation.main.like
-import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -44,9 +43,9 @@ class LikeViewModel : ViewModel() {
}
fun clearSelectedItems() {
- Log.d("1", "제발")
if (_isEdit.value == false) {
_selectedIds.value?.clear()
+ _selectedIds.value = mutableListOf()
getSelectedIdsCount()
}
}
From ac3e542d31daac4f93ad7fa7112463348c63b41c Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 8 Jul 2023 23:38:30 +0900
Subject: [PATCH 013/109] =?UTF-8?q?[MOD/#33]=20=EC=A0=84=EC=B2=B4=EC=9D=BC?=
=?UTF-8?q?=20=EB=95=8C=EB=8A=94=20=EC=BF=BC=EB=A6=AC=EC=97=90=20=EC=95=88?=
=?UTF-8?q?=20=EB=93=A4=EC=96=B4=EA=B0=80=EA=B2=8C=20=ED=95=98=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularFragment.kt | 9 +++++++--
.../presentation/main/explore/recent/RecentFragment.kt | 10 ++++++++--
.../main/explore/recent/RecentViewModel.kt | 2 --
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index c1146e5..dd9f58c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -44,8 +44,13 @@ class PopularFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- viewModel.setFilterValue(filterValue)
- viewModel.getPopularData()
+ if (filterValue != binding.tvExplorePopularAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
+ viewModel.getPopularData()
+ } else {
+ viewModel.setFilterValue("")
+ viewModel.getPopularData()
+ }
}
private fun initPopularAdapter() {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index c8deeb0..5bcbd32 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -21,6 +21,7 @@ class RecentFragment : BindingFragment(R.layout.fragment_
setupRecentActivityList()
initCategoryBtnListener()
}
+
private fun initCategoryBtnListener() {
binding.tvExploreRecentAll.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentAll)
@@ -44,8 +45,13 @@ class RecentFragment : BindingFragment(R.layout.fragment_
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- viewModel.setFilterValue(filterValue)
- viewModel.getRecentData()
+ if (filterValue != binding.tvExploreRecentAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
+ viewModel.getRecentData()
+ } else {
+ viewModel.setFilterValue("")
+ viewModel.getRecentData()
+ }
}
private fun initRecentAdapter() {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 75a85bc..0dca822 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -4,10 +4,8 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.release.keyneez.R
import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.repository.ContentRepository
-import com.release.keyneez.domain.model.Activity
import com.release.keyneez.util.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
From 6b8065fd4ba2474b6faa2fd79f6cbadf21689c1b Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 9 Jul 2023 11:01:17 +0900
Subject: [PATCH 014/109] =?UTF-8?q?[MOD/#33]=20=ED=83=90=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EB=93=A4=EC=96=B4=EA=B0=94=EC=9D=84=20=EB=95=8C=20=EA=B8=B0?=
=?UTF-8?q?=EB=B3=B8=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=A0=84=EC=B2=B4?=
=?UTF-8?q?=EA=B0=80=20=EC=84=A0=ED=83=9D=EB=90=98=EC=96=B4=20=EC=9E=88?=
=?UTF-8?q?=EA=B2=8C=20=ED=95=B4=20=EC=A3=BC=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularFragment.kt | 1 +
.../keyneez/presentation/main/explore/recent/RecentFragment.kt | 2 ++
2 files changed, 3 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index dd9f58c..7d287f1 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -22,6 +22,7 @@ class PopularFragment :
}
private fun initCategoryBtnListener() {
+ selectOnlyOneButton(binding.tvExplorePopularAll)
binding.tvExplorePopularAll.setOnClickListener {
selectOnlyOneButton(binding.tvExplorePopularAll)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 5bcbd32..6a3c1b6 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -1,6 +1,7 @@
package com.release.keyneez.presentation.main.explore.recent
import android.os.Bundle
+import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
@@ -35,6 +36,7 @@ class RecentFragment : BindingFragment(R.layout.fragment_
binding.tvExploreRecentOutside.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentOutside)
}
+ selectOnlyOneButton(binding.tvExploreRecentAll)
}
private fun selectOnlyOneButton(selectedButton: TextView) {
From 144c0e4a86549be8f99c7167fa1b1f44133e54b4 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 9 Jul 2023 11:05:13 +0900
Subject: [PATCH 015/109] =?UTF-8?q?[ADD/#33]=20=EC=B9=B4=ED=85=8C=EA=B3=A0?=
=?UTF-8?q?=EB=A6=AC=20select=20=EA=B4=80=EB=A0=A8=20=EC=BD=94=EB=93=9C=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
---
.../main/explore/recent/RecentFragment.kt | 3 +--
.../keyneez/presentation/main/like/LikeFragment.kt | 11 +++++++++++
.../keyneez/presentation/main/like/LikeViewModel.kt | 8 ++++++++
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 6a3c1b6..17084c8 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -1,7 +1,6 @@
package com.release.keyneez.presentation.main.explore.recent
import android.os.Bundle
-import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
@@ -24,6 +23,7 @@ class RecentFragment : BindingFragment(R.layout.fragment_
}
private fun initCategoryBtnListener() {
+ selectOnlyOneButton(binding.tvExploreRecentAll)
binding.tvExploreRecentAll.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentAll)
}
@@ -36,7 +36,6 @@ class RecentFragment : BindingFragment(R.layout.fragment_
binding.tvExploreRecentOutside.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentOutside)
}
- selectOnlyOneButton(binding.tvExploreRecentAll)
}
private fun selectOnlyOneButton(selectedButton: TextView) {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index fc4822a..db41e40 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -14,7 +14,9 @@ import com.release.keyneez.presentation.main.like.LikeViewModel
import com.release.keyneez.util.binding.BindingFragment
import com.release.keyneez.util.binding.BindingToast
import com.release.keyneez.util.extension.setOnSingleClickListener
+import dagger.hilt.android.AndroidEntryPoint
+@AndroidEntryPoint
class LikeFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_like) {
private var likeAdapter: LikeAdapter? = null
@@ -37,6 +39,7 @@ class LikeFragment :
}
private fun initCategoryBtnListener() {
+ selectOnlyOneButton(binding.tvLikeAll)
binding.tvLikeAll.setOnClickListener {
selectOnlyOneButton(binding.tvLikeAll)
}
@@ -58,6 +61,14 @@ class LikeFragment :
binding.tvLikeOutside.isSelected = false
selectedButton.isSelected = true
+ val filterValue = selectedButton.text.toString()
+ if (filterValue != binding.tvLikeAll.text.toString()) {
+ likeViewModel.setFilterValue(filterValue)
+ likeViewModel.getPopularData()
+ } else {
+ likeViewModel.setFilterValue("")
+ likeViewModel.getPopularData()
+ }
}
private fun initLikeAdapter() {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 1fca667..78b64be 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -5,7 +5,9 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.release.keyneez.R
import com.release.keyneez.domain.model.Activity
+import dagger.hilt.android.lifecycle.HiltViewModel
+@HiltViewModel
class LikeViewModel : ViewModel() {
private val _activityList = MutableLiveData>(mutableListOf())
private val _isEdit = MutableLiveData()
@@ -22,6 +24,8 @@ class LikeViewModel : ViewModel() {
get() = _isSelected
val selectedIds: LiveData> = _selectedIds
+ val filter = MutableLiveData("")
+
init {
getLikeActivityList()
getSelectedIdsCount()
@@ -30,6 +34,10 @@ class LikeViewModel : ViewModel() {
_selectedIds.value = emptyList().toMutableList()
}
+ fun setFilterValue(value: String) {
+ filter.value = value
+ }
+
fun setItemsSelected(id: Int): List {
val selectedIdsList = _selectedIds.value ?: mutableListOf()
if (selectedIdsList.contains(id)) {
From d0e5c6eff41b26554e512ca0ca0fbf8311751fe7 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 9 Jul 2023 11:56:13 +0900
Subject: [PATCH 016/109] =?UTF-8?q?[MOD/#33]=20=EC=84=9C=EB=B2=84=ED=86=B5?=
=?UTF-8?q?=EC=8B=A0=20=EB=B0=8F=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=B0=94?=
=?UTF-8?q?=EC=9D=B8=EB=94=A9=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entity/response/ResponseGetLikeDto.kt | 3 +-
.../data/repository/ContentRepository.kt | 2 +-
.../data/repository/ContentRepositoryImpl.kt | 4 +-
.../keyneez/data/service/ContentService.kt | 2 +-
.../keyneez/data/source/ContentDataSource.kt | 2 +-
.../keyneez/presentation/main/MainActivity.kt | 2 +-
.../presentation/main/like/LikeAdapter.kt | 17 +--
.../presentation/main/like/LikeFragment.kt | 21 ++--
.../presentation/main/like/LikeViewModel.kt | 100 ++++++++++--------
app/src/main/res/layout/fragment_like.xml | 3 +
app/src/main/res/layout/item_like_content.xml | 24 +++--
11 files changed, 98 insertions(+), 82 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt
index 639d1a8..9ea9d07 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetLikeDto.kt
@@ -10,5 +10,6 @@ data class ResponseGetLikeDto(
@SerialName("category") val category: String,
@SerialName("img") val img: String?,
@SerialName("start_at") val start: String?,
- @SerialName("end_at") val end: String?
+ @SerialName("end_at") val end: String?,
+ var isSelected: Boolean = false
)
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
index 3a9762f..d92378b 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
@@ -8,6 +8,6 @@ import com.release.keyneez.data.entity.response.wrapper.BaseResponse
interface ContentRepository {
suspend fun getContent(filter: String): Result>>
- suspend fun getLike(): Result>>
+ suspend fun getLike(filter: String): Result>>
suspend fun getSearch(keyword: String): Result>>
}
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
index 1bda1d4..1516051 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
@@ -14,8 +14,8 @@ class ContentRepositoryImpl @Inject constructor(
override suspend fun getContent(filter: String): Result>> =
kotlin.runCatching { contentDataSource.getContent(filter) }
- override suspend fun getLike(): Result>> =
- kotlin.runCatching { contentDataSource.getLike() }
+ override suspend fun getLike(filter: String): Result>> =
+ kotlin.runCatching { contentDataSource.getLike(filter) }
override suspend fun getSearch(keyword: String): Result>> =
kotlin.runCatching { contentDataSource.getSearch(keyword) }
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 34b1504..63b0563 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -9,7 +9,7 @@ import retrofit2.http.Query
interface ContentService {
@GET("contents/liked")
- suspend fun getLike(): BaseResponse>
+ suspend fun getLike(@Query("filter") filter: String): BaseResponse>
@GET("contents/")
suspend fun getContent(@Query("filter") filter: String): BaseResponse>
diff --git a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
index 9594e66..1abd48d 100644
--- a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
+++ b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
@@ -13,7 +13,7 @@ class ContentDataSource @Inject constructor(
suspend fun getContent(filter: String): BaseResponse> =
contentService.getContent(filter)
- suspend fun getLike(): BaseResponse> = contentService.getLike()
+ suspend fun getLike(filter: String): BaseResponse> = contentService.getLike(filter)
suspend fun getSearch(keyword: String): BaseResponse> =
contentService.getSearch(keyword)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/MainActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/MainActivity.kt
index 860f74e..ec20b82 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/MainActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/MainActivity.kt
@@ -1,6 +1,5 @@
package com.release.keyneez.presentation.main
-import LikeFragment
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
@@ -10,6 +9,7 @@ import com.release.keyneez.R
import com.release.keyneez.databinding.ActivityMainBinding
import com.release.keyneez.presentation.main.explore.ExploreFragment
import com.release.keyneez.presentation.main.home.HomeFragment
+import com.release.keyneez.presentation.main.like.LikeFragment
import com.release.keyneez.presentation.main.setting.SettingFragment
import com.release.keyneez.util.binding.BindingActivity
import dagger.hilt.android.AndroidEntryPoint
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
index 014198c..9ef5dc4 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
@@ -6,6 +6,7 @@ import android.view.ViewGroup
import androidx.lifecycle.LiveData
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
+import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.databinding.ItemLikeContentBinding
import com.release.keyneez.domain.model.Activity
import com.release.keyneez.util.DiffCallback
@@ -15,7 +16,8 @@ class LikeAdapter(
private val setItemsSelected: (Int) -> List,
private val isEdit: LiveData,
private val clearSelectedItems: () -> Unit
-) : ListAdapter(diffUtil) {
+) : ListAdapter(diffUtil) {
+ var data = listOf()
inner class LikeViewHolder(
private val binding: ItemLikeContentBinding,
@@ -23,13 +25,12 @@ class LikeAdapter(
private val isEdit: LiveData,
private val clearSelectedItems: () -> Unit
) : RecyclerView.ViewHolder(binding.root) {
- fun bind(item: Activity) {
+ fun setLikeContent(item: ResponseGetLikeDto) {
with(binding) {
- data = item
ivLikeBackground.setOnSingleClickListener {
if (isEdit.value == true) {
item.isSelected = !item.isSelected
- setItemsSelected(item.id)
+ setItemsSelected(item.content)
binding.ivLikeCheckedBackground.visibility =
if (item.isSelected) View.VISIBLE else View.GONE
binding.btnLikeChecked.visibility =
@@ -62,16 +63,18 @@ class LikeAdapter(
)
}
+ override fun getItemCount(): Int = data.size
+
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
- if (holder is LikeViewHolder) holder.bind(getItem(position))
+ if (holder is LikeViewHolder) holder.setLikeContent(getItem(position))
}
private var onItemClickListener: ((Activity) -> Unit)? = null
companion object {
private val diffUtil =
- DiffCallback(
- onItemsTheSame = { old, new -> old.id == new.id },
+ DiffCallback(
+ onItemsTheSame = { old, new -> old.content == new.content },
onContentsTheSame = { old, new -> old == new }
)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index db41e40..65db051 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -1,3 +1,5 @@
+package com.release.keyneez.presentation.main.like
+
import android.content.Context
import android.os.Bundle
import android.util.Log
@@ -6,11 +8,9 @@ import android.widget.TextView
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
+import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.databinding.FragmentLikeBinding
-import com.release.keyneez.domain.model.Activity
import com.release.keyneez.presentation.main.MainViewModel
-import com.release.keyneez.presentation.main.like.LikeAdapter
-import com.release.keyneez.presentation.main.like.LikeViewModel
import com.release.keyneez.util.binding.BindingFragment
import com.release.keyneez.util.binding.BindingToast
import com.release.keyneez.util.extension.setOnSingleClickListener
@@ -20,7 +20,7 @@ import dagger.hilt.android.AndroidEntryPoint
class LikeFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_like) {
private var likeAdapter: LikeAdapter? = null
- lateinit var likeList: List
+ lateinit var likeList: List
private val likeViewModel by viewModels()
private val mainViewModel by activityViewModels()
@@ -32,7 +32,7 @@ class LikeFragment :
super.onViewCreated(view, savedInstanceState)
binding.vm = likeViewModel
initLikeAdapter()
- setupLikeActivityList()
+ setupLikeData()
initLikeEditBtnClickListener()
initEditBtnClickListener()
initCategoryBtnListener()
@@ -64,10 +64,10 @@ class LikeFragment :
val filterValue = selectedButton.text.toString()
if (filterValue != binding.tvLikeAll.text.toString()) {
likeViewModel.setFilterValue(filterValue)
- likeViewModel.getPopularData()
+ likeViewModel.getLikeData()
} else {
likeViewModel.setFilterValue("")
- likeViewModel.getPopularData()
+ likeViewModel.getLikeData()
}
}
@@ -82,9 +82,6 @@ class LikeFragment :
if (animator is SimpleItemAnimator) {
animator.supportsChangeAnimations = false
}
- likeViewModel.activityList.observe(viewLifecycleOwner) { activityList ->
- likeAdapter?.submitList(activityList)
- }
}
private fun initLikeEditBtnClickListener() {
@@ -108,8 +105,8 @@ class LikeFragment :
}
}
- private fun setupLikeActivityList() {
- likeViewModel.activityList.observe(viewLifecycleOwner) { activityList ->
+ private fun setupLikeData() {
+ likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
likeList = activityList
likeAdapter?.submitList(activityList)
if (likeViewModel.isEdit.value == false) {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 78b64be..6c6d219 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -3,31 +3,46 @@ package com.release.keyneez.presentation.main.like
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
-import com.release.keyneez.R
-import com.release.keyneez.domain.model.Activity
+import androidx.lifecycle.viewModelScope
+import com.release.keyneez.data.entity.response.ResponseGetLikeDto
+import com.release.keyneez.data.repository.ContentRepository
+import com.release.keyneez.util.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.launch
+import retrofit2.HttpException
+import timber.log.Timber
+import javax.inject.Inject
@HiltViewModel
-class LikeViewModel : ViewModel() {
- private val _activityList = MutableLiveData>(mutableListOf())
+class LikeViewModel @Inject constructor(
+ private val contentRepository: ContentRepository
+) : ViewModel() {
+ private val _likeList = MutableLiveData>(mutableListOf())
private val _isEdit = MutableLiveData()
private val _isSelected = MutableLiveData()
private val _selectedIds = MutableLiveData>()
private val _selectedCount = MutableLiveData()
+ private val _stateMessage = MutableLiveData()
+ private val _saveState = MutableLiveData()
val selectedCount: LiveData
get() = _selectedCount
- val activityList: LiveData>
- get() = _activityList
+ val likeList: LiveData>
+ get() = _likeList
val isEdit: LiveData
get() = _isEdit
val isSelected: LiveData
get() = _isSelected
val selectedIds: LiveData> = _selectedIds
+ val stateMessage: LiveData
+ get() = _stateMessage
+
+ val saveState: LiveData
+ get() = _saveState
val filter = MutableLiveData("")
init {
- getLikeActivityList()
+ getLikeData()
getSelectedIdsCount()
_isEdit.value = false
_isSelected.value = false
@@ -76,12 +91,12 @@ class LikeViewModel : ViewModel() {
fun deleteSelectedItems() {
if (_isEdit.value == true) {
val selectedIdsList = _selectedIds.value ?: return
- val updatedList = _activityList.value?.toMutableList() ?: mutableListOf()
+ val updatedList = _likeList.value?.toMutableList() ?: mutableListOf()
val positionsToRemove = mutableListOf()
val selectedIdsSet = selectedIdsList.toSet()
for (selectedId in selectedIdsList) {
- val itemToRemove = updatedList.find { it.id == selectedId }
+ val itemToRemove = updatedList.find { it.content == selectedId }
itemToRemove?.let {
val position = updatedList.indexOf(it)
positionsToRemove.add(position)
@@ -90,50 +105,41 @@ class LikeViewModel : ViewModel() {
}
for (i in updatedList.size - 1 downTo 0) {
val activity = updatedList[i]
- if (selectedIdsSet.contains(activity.id)) {
+ if (selectedIdsSet.contains(activity.content)) {
updatedList.removeAt(i)
}
}
- _activityList.value = updatedList.toList()
+ _likeList.value = updatedList.toList()
+ }
+ }
+
+ fun getLikeData() {
+ viewModelScope.launch {
+ contentRepository.getLike(filter.value.toString())
+ .onSuccess { response ->
+ Timber.tag(successTag).d("response : $response")
+
+ if (response.data == null) {
+ Timber.d("GET LIKE CONTENT IS NULL")
+ _stateMessage.value = UiState.Failure(LIKE_DATA_NULL_CODE)
+ }
+ _likeList.value = response.data!!
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.tag(failTag).e("throwable : $it")
+ if (it is HttpException) {
+ Timber.tag(failTag).e("code : ${it.code()}")
+ Timber.tag(failTag).e("message : ${it.message()}")
+ }
+ }
}
}
- private fun getLikeActivityList() {
- val mainList = listOf(
- Activity(
- id = 1,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- ),
- Activity(
- id = 2,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- ),
- Activity(
- id = 3,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- ),
- Activity(
- id = 4,
- background = R.drawable.img_explore_background,
- title = "행주산성\n맛집 투어",
- category = "진로",
- date = "%s-%s",
- liked = true
- )
- )
- _activityList.value = mainList
+ companion object {
+ const val LIKE_DATA_NULL_CODE = 100
+ private const val successTag = "GET_LIKE_CONTENT_SUCCESS"
+ private const val failTag = "GET_LIKE_CONTENT_FAIL"
}
}
diff --git a/app/src/main/res/layout/fragment_like.xml b/app/src/main/res/layout/fragment_like.xml
index bcc3a29..9358ffc 100644
--- a/app/src/main/res/layout/fragment_like.xml
+++ b/app/src/main/res/layout/fragment_like.xml
@@ -9,6 +9,9 @@
name="vm"
type="com.release.keyneez.presentation.main.like.LikeViewModel" />
+
diff --git a/app/src/main/res/layout/item_like_content.xml b/app/src/main/res/layout/item_like_content.xml
index 87e8759..22b9434 100644
--- a/app/src/main/res/layout/item_like_content.xml
+++ b/app/src/main/res/layout/item_like_content.xml
@@ -7,7 +7,7 @@
+ type="com.release.keyneez.data.entity.response.ResponseGetLikeDto" />
@@ -39,6 +39,7 @@
+ app:layout_constraintTop_toTopOf="parent"
+ tools:text="@string/explore_activity" />
+ app:layout_constraintTop_toBottomOf="@id/tv_like_category"
+ tools:text="@string/explore_content_title" />
+ app:layout_constraintTop_toBottomOf="@id/tv_like_content_title"
+ tools:text="@string/explore_date" />
+ app:layout_constraintStart_toStartOf="parent"
+ tools:src="@drawable/img_explore_background" />
Date: Sun, 9 Jul 2023 13:09:21 +0900
Subject: [PATCH 017/109] =?UTF-8?q?[MOD/#33]=20=ED=8E=B8=EC=A7=91=EB=B2=84?=
=?UTF-8?q?=ED=8A=BC=EC=9D=B4=20=EC=95=88=20=EB=88=8C=EB=A6=AC=EB=8A=94=20?=
=?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EB=B0=9C=EC=83=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeFragment.kt | 2 +-
app/src/main/res/layout/fragment_like.xml | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 65db051..e790b1f 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -33,9 +33,9 @@ class LikeFragment :
binding.vm = likeViewModel
initLikeAdapter()
setupLikeData()
- initLikeEditBtnClickListener()
initEditBtnClickListener()
initCategoryBtnListener()
+ initLikeEditBtnClickListener()
}
private fun initCategoryBtnListener() {
diff --git a/app/src/main/res/layout/fragment_like.xml b/app/src/main/res/layout/fragment_like.xml
index 9358ffc..f72bfb4 100644
--- a/app/src/main/res/layout/fragment_like.xml
+++ b/app/src/main/res/layout/fragment_like.xml
@@ -9,9 +9,6 @@
name="vm"
type="com.release.keyneez.presentation.main.like.LikeViewModel" />
-
@@ -50,6 +47,7 @@
android:layout_marginTop="37dp"
android:layout_marginEnd="11dp"
android:padding="12dp"
+ android:clickable="true"
android:text="@{vm.isEdit ? @string/like_cancel : @string/like_edit}"
android:textColor="@color/gray600"
app:layout_constraintEnd_toEndOf="@id/layout_like_toolbar"
From 8201b98832b3a2ec68174f78e2d526fe00a5b1c1 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 10 Jul 2023 18:32:44 +0900
Subject: [PATCH 018/109] =?UTF-8?q?[ADD/#33]=20like=20dto=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
---
.../data/entity/response/ResponsePostLikeDto.kt | 15 +++++++++++++++
.../presentation/main/like/LikeFragment.kt | 3 ++-
.../presentation/main/like/LikeViewModel.kt | 6 ++----
3 files changed, 19 insertions(+), 5 deletions(-)
create mode 100644 app/src/main/java/com/release/keyneez/data/entity/response/ResponsePostLikeDto.kt
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponsePostLikeDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponsePostLikeDto.kt
new file mode 100644
index 0000000..7d40b75
--- /dev/null
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponsePostLikeDto.kt
@@ -0,0 +1,15 @@
+package com.release.keyneez.data.entity.response
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class ResponsePostLikeDto(
+ @SerialName("content_pk") val content: Int,
+ @SerialName("title") val title: String,
+ @SerialName("category") val category: String,
+ @SerialName("img") val img: String?,
+ @SerialName("start_at") val start: String?,
+ @SerialName("end_at") val end: String?,
+ var isSelected: Boolean = false
+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index e790b1f..212c9ba 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -85,7 +85,8 @@ class LikeFragment :
}
private fun initLikeEditBtnClickListener() {
- binding.btnLikeEdit.setOnSingleClickListener {
+ binding.btnLikeEdit.setOnClickListener {
+ Log.d("1", "제발..")
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 6c6d219..2af6bc2 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -1,5 +1,6 @@
package com.release.keyneez.presentation.main.like
+import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -74,6 +75,7 @@ class LikeViewModel @Inject constructor(
}
fun updateEditView() {
+ Log.d("1", "갑자기 왜 안되는 거야 대체..")
_isEdit.value = _isEdit.value?.not()
}
@@ -84,10 +86,6 @@ class LikeViewModel @Inject constructor(
return selectedIdsList.size
}
- fun updateSelected() {
- _isSelected.value = _isSelected.value?.not()
- }
-
fun deleteSelectedItems() {
if (_isEdit.value == true) {
val selectedIdsList = _selectedIds.value ?: return
From b884850d48ef6d5403a37a6fdf8ebce39c128280 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 10 Jul 2023 18:54:31 +0900
Subject: [PATCH 019/109] =?UTF-8?q?[ADD/#33]=20=EC=B0=9C,=20=EC=B0=9C=20?=
=?UTF-8?q?=EC=B7=A8=EC=86=8C=20=EA=B4=80=EB=A0=A8=20=EC=84=9C=EB=B2=84=20?=
=?UTF-8?q?=EC=84=B8=ED=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/data/repository/ContentRepository.kt | 3 +++
.../keyneez/data/repository/ContentRepositoryImpl.kt | 7 +++++++
.../com/release/keyneez/data/service/ContentService.kt | 9 +++++++++
.../release/keyneez/data/source/ContentDataSource.kt | 10 +++++++++-
4 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
index d92378b..7c70402 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
@@ -3,6 +3,7 @@ package com.release.keyneez.data.repository
import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
+import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
interface ContentRepository {
@@ -10,4 +11,6 @@ interface ContentRepository {
suspend fun getContent(filter: String): Result>>
suspend fun getLike(filter: String): Result>>
suspend fun getSearch(keyword: String): Result>>
+ suspend fun postLike(pk: Int): Result>
+ suspend fun postUnlike(pk: Int): Result>
}
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
index 1516051..adfc492 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
@@ -3,6 +3,7 @@ package com.release.keyneez.data.repository
import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
+import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
import com.release.keyneez.data.source.ContentDataSource
import javax.inject.Inject
@@ -19,4 +20,10 @@ class ContentRepositoryImpl @Inject constructor(
override suspend fun getSearch(keyword: String): Result>> =
kotlin.runCatching { contentDataSource.getSearch(keyword) }
+
+ override suspend fun postLike(pk: Int): Result> =
+ kotlin.runCatching { contentDataSource.postLike(pk) }
+
+ override suspend fun postUnlike(pk: Int): Result> =
+ kotlin.runCatching { contentDataSource.postUnlike(pk) }
}
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 63b0563..8bce86d 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -3,8 +3,11 @@ package com.release.keyneez.data.service
import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
+import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
import retrofit2.http.GET
+import retrofit2.http.POST
+import retrofit2.http.Path
import retrofit2.http.Query
interface ContentService {
@@ -18,4 +21,10 @@ interface ContentService {
suspend fun getSearch(
@Query("keyword") keyword: String
): BaseResponse>
+
+ @POST("contents/{pk}/like")
+ suspend fun postLike(@Path("pk") pk: Int): BaseResponse
+
+ @POST("contents/{pk}/unlike")
+ suspend fun postUnlike(@Path("pk") pk: Int): BaseResponse
}
diff --git a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
index 1abd48d..95f0ac9 100644
--- a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
+++ b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
@@ -3,6 +3,7 @@ package com.release.keyneez.data.source
import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
+import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
import com.release.keyneez.data.service.ContentService
import javax.inject.Inject
@@ -13,7 +14,14 @@ class ContentDataSource @Inject constructor(
suspend fun getContent(filter: String): BaseResponse> =
contentService.getContent(filter)
- suspend fun getLike(filter: String): BaseResponse> = contentService.getLike(filter)
+ suspend fun getLike(filter: String): BaseResponse> =
+ contentService.getLike(filter)
+
suspend fun getSearch(keyword: String): BaseResponse> =
contentService.getSearch(keyword)
+
+ suspend fun postLike(pk: Int): BaseResponse =
+ contentService.postLike(pk)
+ suspend fun postUnlike(pk: Int): BaseResponse =
+ contentService.postUnlike(pk)
}
From ae3ae4f337229b9244d5a23815b332c5018305a9 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 10 Jul 2023 19:46:07 +0900
Subject: [PATCH 020/109] =?UTF-8?q?[FEAT/#33]=20=EC=82=AD=EC=A0=9C=20?=
=?UTF-8?q?=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EA=B5=AC=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/like/LikeViewModel.kt | 13 +++++++++++++
app/src/main/res/layout/fragment_like.xml | 3 +++
2 files changed, 16 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 2af6bc2..062b175 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -109,6 +109,19 @@ class LikeViewModel @Inject constructor(
}
_likeList.value = updatedList.toList()
+ // 서버 통신을 위해 선택된 아이템의 ID를 서버로 전송하여 좋아요 해제
+ viewModelScope.launch {
+ for (selectedId in selectedIdsList) {
+ try {
+ contentRepository.postUnlike(selectedId)
+ // 성공적으로 좋아요를 해제한 경우
+ Timber.d("Unlike item with ID: $selectedId success")
+ } catch (e: Exception) {
+ // 좋아요 해제 실패 또는 예외 발생한 경우
+ Timber.e(e, "Failed to unlike item with ID: $selectedId")
+ }
+ }
+ }
}
}
diff --git a/app/src/main/res/layout/fragment_like.xml b/app/src/main/res/layout/fragment_like.xml
index f72bfb4..6523d58 100644
--- a/app/src/main/res/layout/fragment_like.xml
+++ b/app/src/main/res/layout/fragment_like.xml
@@ -8,6 +8,9 @@
+
From 7b16a50b481bf7b341db698fde4a7fa85527a5f4 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 10 Jul 2023 20:15:59 +0900
Subject: [PATCH 021/109] =?UTF-8?q?[FEAT/#33]=20=EA=B2=80=EC=83=89=20?=
=?UTF-8?q?=EB=B7=B0=20=EC=A2=8B=EC=95=84=EC=9A=94=20=ED=95=98=EB=8A=94=20?=
=?UTF-8?q?=EA=B2=83=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=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
---
.../main/search/SearchViewModel.kt | 18 +++++++++++++++++-
.../main/res/layout/item_search_content.xml | 6 ++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index e7d1a17..2c1bf8f 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -45,7 +45,6 @@ class SearchViewModel @Inject constructor(
}
Timber.d("GET SEARCH LIST SUCCESS")
Timber.d("response : $response")
-
_searchList.value = response.data!!
_stateMessage.value = UiState.Success
}.onFailure {
@@ -65,6 +64,23 @@ class SearchViewModel @Inject constructor(
}
}
+ fun postSave(pk: Int) {
+ viewModelScope.launch {
+ contentRepository.postLike(pk).onSuccess { response ->
+
+ Timber.d("POST SAVE STATE SUCCESS")
+ Timber.d("response : $response")
+
+ _saveState.value = true
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
+ }
+ }
+ }
+
companion object {
const val SEARCH_NULL_CODE = 100
const val SEARCH_NO_POST_CODE = 404
diff --git a/app/src/main/res/layout/item_search_content.xml b/app/src/main/res/layout/item_search_content.xml
index 0066660..929bf46 100644
--- a/app/src/main/res/layout/item_search_content.xml
+++ b/app/src/main/res/layout/item_search_content.xml
@@ -9,6 +9,10 @@
name="data"
type="com.release.keyneez.data.entity.response.ResponseGetSearchResultDto" />
+
+
@@ -54,6 +58,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
+ isSelected="@{vm.saveState}"
+ android:onClick="@{()->vm.postSave(data.content)}"
android:layout_marginEnd="3dp"
android:background="@null"
android:contentDescription="@string/search_heart_contentdescription"
From 858241cb04403cc0c46be08ce375e0433789d074 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 10 Jul 2023 21:03:48 +0900
Subject: [PATCH 022/109] =?UTF-8?q?[ADD/#33]=20=EB=9D=BC=EC=82=AC=EC=9D=B4?=
=?UTF-8?q?=ED=81=B4=EB=9F=AC=EB=B7=B0=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94?=
=?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=9D=B8=EA=B8=B0=EB=B7=B0=20=EC=A2=8B?=
=?UTF-8?q?=EC=95=84=EC=9A=94=20=EB=B3=B4=EB=82=B4=EB=8A=94=20=EA=B2=83=20?=
=?UTF-8?q?=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EA=B5=AC=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularAdapter.kt | 6 +-
.../main/explore/popular/PopularViewModel.kt | 17 +++
.../main/explore/recent/RecentAdapter.kt | 6 +-
.../main/explore/recent/RecentViewModel.kt | 16 +++
app/src/main/res/layout/fragment_popular.xml | 2 +-
app/src/main/res/layout/fragment_recent.xml | 2 +-
...e_content.xml => item_popular_content.xml} | 24 ++--
.../main/res/layout/item_recent_content.xml | 114 ++++++++++++++++++
8 files changed, 170 insertions(+), 17 deletions(-)
rename app/src/main/res/layout/{item_explore_content.xml => item_popular_content.xml} (85%)
create mode 100644 app/src/main/res/layout/item_recent_content.xml
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index 67d75c3..bdfbe96 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -5,13 +5,13 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetContentDto
-import com.release.keyneez.databinding.ItemExploreContentBinding
+import com.release.keyneez.databinding.ItemPopularContentBinding
import com.release.keyneez.util.DiffCallback
class PopularAdapter : ListAdapter(diffUtil) {
var data = listOf()
- class PopularViewHolder(private val binding: ItemExploreContentBinding) :
+ class PopularViewHolder(private val binding: ItemPopularContentBinding) :
RecyclerView.ViewHolder(binding.root) {
fun setPopularContent(popular: ResponseGetContentDto) {
binding.data = popular
@@ -22,7 +22,7 @@ class PopularAdapter : ListAdapter
+
+ Timber.d("POST SAVE STATE SUCCESS")
+ Timber.d("response : $response")
+
+ _saveState.value = true
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
+ }
+ }
+ }
+
companion object {
const val POPULAR_DATA_NULL_CODE = 100
private const val successTag = "GET_POPULAR_CONTENT_SUCCESS"
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index 6f0127e..a6f678e 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -5,14 +5,14 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetContentDto
-import com.release.keyneez.databinding.ItemExploreContentBinding
+import com.release.keyneez.databinding.ItemRecentContentBinding
import com.release.keyneez.util.DiffCallback
class RecentAdapter : ListAdapter(diffUtil) {
var data = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return RecentViewHolder(
- ItemExploreContentBinding.inflate(
+ ItemRecentContentBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
@@ -24,7 +24,7 @@ class RecentAdapter : ListAdapter
+
+ Timber.d("POST SAVE STATE SUCCESS")
+ Timber.d("response : $response")
+
+ _saveState.value = true
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
+ }
+ }
+ }
companion object {
const val RECENT_DATA_NULL_CODE = 100
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index bf77e81..fe457d8 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -97,6 +97,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_explore_popular_all"
app:spanCount="2"
- tools:listitem="@layout/item_explore_content" />
+ tools:listitem="@layout/item_popular_content" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_recent.xml b/app/src/main/res/layout/fragment_recent.xml
index fb1fee7..beeac73 100644
--- a/app/src/main/res/layout/fragment_recent.xml
+++ b/app/src/main/res/layout/fragment_recent.xml
@@ -98,6 +98,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_explore_recent_all"
app:spanCount="2"
- tools:listitem="@layout/item_explore_content" />
+ tools:listitem="@layout/item_recent_content" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_explore_content.xml b/app/src/main/res/layout/item_popular_content.xml
similarity index 85%
rename from app/src/main/res/layout/item_explore_content.xml
rename to app/src/main/res/layout/item_popular_content.xml
index 54c057a..05ec6c5 100644
--- a/app/src/main/res/layout/item_explore_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -9,18 +9,22 @@
name="data"
type="com.release.keyneez.data.entity.response.ResponseGetContentDto" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 34dfa2f98fa5992e63a29be4946e32b6419959cf Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Tue, 11 Jul 2023 21:07:20 +0900
Subject: [PATCH 023/109] =?UTF-8?q?[ADD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EC=95=84=EC=9D=B4=ED=85=9C=20=EA=B0=9C=EC=88=98=20?=
=?UTF-8?q?=EC=84=B8=EB=8A=94=20=EC=BD=94=EB=93=9C=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/AndroidManifest.xml | 33 +++----------------
.../presentation/main/like/LikeViewModel.kt | 6 +++-
.../main/search/SearchActivity.kt | 6 ++--
3 files changed, 13 insertions(+), 32 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 00b757a..babcfe8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,12 +3,11 @@
xmlns:tools="http://schemas.android.com/tools">
-
-
-
-
-
-
-
-
-
-
-
+ android:name=".presentation.main.MainActivity"
+ android:exported="true"
+ android:screenOrientation="portrait">
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 062b175..6b55622 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -80,10 +80,14 @@ class LikeViewModel @Inject constructor(
}
fun getSelectedIdsCount(): Int {
+ _selectedIds.observeForever { selectedIdsList ->
+ val selectedCount = selectedIdsList?.size ?: 0
+ _selectedCount.value = selectedCount
+ }
val selectedIdsList = _selectedIds.value ?: mutableListOf()
val selectedCount = selectedIdsList.size
_selectedCount.value = selectedCount
- return selectedIdsList.size
+ return selectedCount
}
fun deleteSelectedItems() {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index c5084a4..a10cf4b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -61,10 +61,10 @@ class SearchActivity : BindingActivity(R.layout.activity_
}
private fun setupSearchActivityList() {
- val searchList = viewModel.searchList.value ?: emptyList()
+ val searchList = viewModel.searchList.value
searchAdapter?.submitList(searchList)
- binding.tvSearchCount.text = searchList.size.toString()
- if (searchList.size == 0) {
+ binding.tvSearchCount.text = searchList?.size.toString()
+ if (searchList?.size == 0) {
showToast(getString(R.string.search_no_result))
}
}
From dc00654e718c490a35f2d2c278801a0088d667b7 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 12 Jul 2023 16:45:29 +0900
Subject: [PATCH 024/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/release/keyneez/presentation/main/like/LikeFragment.kt | 3 +++
.../release/keyneez/presentation/main/like/LikeViewModel.kt | 2 --
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 212c9ba..bc470c3 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -82,6 +82,9 @@ class LikeFragment :
if (animator is SimpleItemAnimator) {
animator.supportsChangeAnimations = false
}
+ likeViewModel.likeList.observe(viewLifecycleOwner) { likeList ->
+ likeAdapter?.submitList(likeList)
+ }
}
private fun initLikeEditBtnClickListener() {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 6b55622..80d77e4 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -1,6 +1,5 @@
package com.release.keyneez.presentation.main.like
-import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -75,7 +74,6 @@ class LikeViewModel @Inject constructor(
}
fun updateEditView() {
- Log.d("1", "갑자기 왜 안되는 거야 대체..")
_isEdit.value = _isEdit.value?.not()
}
From 01b60aab2c7848ca5fe989c7e5afcd2af4170e7e Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 12 Jul 2023 19:18:49 +0900
Subject: [PATCH 025/109] =?UTF-8?q?[ADD/#33]=20api=20=EC=88=98=EC=A0=95?=
=?UTF-8?q?=EB=90=A8=EC=97=90=20=EB=94=B0=EB=9D=BCdto=20=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/entity/response/ResponseGetContentDto.kt | 9 +++++++++
.../data/entity/response/ResponseGetSearchResultDto.kt | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
index 1dc8e33..466e57a 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
@@ -7,9 +7,18 @@ data class ResponseGetContentDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
+ @SerialName("tag") val tag: String,
+ @SerialName("link") val link: String,
@SerialName("img") val img: String?,
+ @SerialName("place") val place: String,
+ @SerialName("introduction") val introduction: String,
+ @SerialName("inquiry") val inquiry: String?,
+ @SerialName("price") val price: String?,
+ @SerialName("benefit") val benefit: String?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
+ @SerialName("created_at") val created: String?,
+ @SerialName("updated_at") val updated: String?,
val Likes: List
) {
@Serializable
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
index 302a428..de5f040 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
@@ -8,9 +8,18 @@ data class ResponseGetSearchResultDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
+ @SerialName("tag") val tag: String,
+ @SerialName("link") val link: String,
@SerialName("img") val img: String?,
+ @SerialName("place") val place: String,
+ @SerialName("introduction") val introduction: String,
+ @SerialName("inquiry") val inquiry: String?,
+ @SerialName("price") val price: String?,
+ @SerialName("benefit") val benefit: String?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
+ @SerialName("created_at") val created: String?,
+ @SerialName("updated_at") val updated: String?,
val Likes: List
) {
@Serializable
From e5857f713bf237c234da54084f4db6c77bd00d39 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 12 Jul 2023 20:17:36 +0900
Subject: [PATCH 026/109] =?UTF-8?q?[MOD/#33]=20=EB=A6=B0=ED=8A=B8=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
---
.../keyneez/data/entity/response/ResponseGetContentDto.kt | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
index 466e57a..bf8554b 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
@@ -2,6 +2,7 @@ package com.release.keyneez.data.entity.response
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+
@Serializable
data class ResponseGetContentDto(
@SerialName("content_pk") val content: Int,
From 102a41874c1f6dfdc67fd45485aef180b74b4d35 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 12 Jul 2023 23:48:33 +0900
Subject: [PATCH 027/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=20=EB=B0=9B=EC=95=84=EC=98=A4=EB=8A=94=20=EA=B2=83=20=ED=95=B4?=
=?UTF-8?q?=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/res/layout/item_popular_content.xml | 2 +-
app/src/main/res/layout/item_recent_content.xml | 2 +-
app/src/main/res/layout/item_search_content.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index 05ec6c5..d7ff651 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -62,7 +62,7 @@
android:padding="12dp"
isSelected="@{vm.saveState}"
android:onClick="@{()->vm.postSave(data.content)}"
- android:src="@drawable/sel_search_drawable_bnv_like_icon"
+ android:src="@{data.Likes.isEmpty() ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
diff --git a/app/src/main/res/layout/item_recent_content.xml b/app/src/main/res/layout/item_recent_content.xml
index 51868cd..b4cd211 100644
--- a/app/src/main/res/layout/item_recent_content.xml
+++ b/app/src/main/res/layout/item_recent_content.xml
@@ -62,7 +62,7 @@
android:padding="12dp"
isSelected="@{vm.saveState}"
android:onClick="@{()->vm.postSave(data.content)}"
- android:src="@drawable/sel_search_drawable_bnv_like_icon"
+ android:src="@{data.Likes.isEmpty() ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
diff --git a/app/src/main/res/layout/item_search_content.xml b/app/src/main/res/layout/item_search_content.xml
index 929bf46..cf6bb64 100644
--- a/app/src/main/res/layout/item_search_content.xml
+++ b/app/src/main/res/layout/item_search_content.xml
@@ -64,7 +64,7 @@
android:background="@null"
android:contentDescription="@string/search_heart_contentdescription"
android:padding="12dp"
- android:src="@drawable/sel_search_drawable_bnv_like_icon"
+ android:src="@{data.Likes.isEmpty() ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
From 878726fdb80f32229ac900ebd6bad8337936ed5c Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 13 Jul 2023 00:03:07 +0900
Subject: [PATCH 028/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=ED=95=98=ED=8A=B8=20ui=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/res/layout/item_like_content.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/res/layout/item_like_content.xml b/app/src/main/res/layout/item_like_content.xml
index 22b9434..7880008 100644
--- a/app/src/main/res/layout/item_like_content.xml
+++ b/app/src/main/res/layout/item_like_content.xml
@@ -61,7 +61,7 @@
android:layout_marginEnd="3dp"
android:background="@null"
android:padding="12dp"
- android:src="@drawable/sel_search_drawable_bnv_like_icon"
+ android:src="@drawable/ic_heart_fill"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
From 7f484cf54e25e17c03d0df8b903b74eb55250417 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 14 Jul 2023 14:30:28 +0900
Subject: [PATCH 029/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularViewModel.kt | 3 ++-
app/src/main/res/layout/item_popular_content.xml | 2 +-
app/src/main/res/layout/item_recent_content.xml | 2 +-
app/src/main/res/layout/item_search_content.xml | 2 +-
4 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 566d28d..07a5182 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -32,6 +32,7 @@ class PopularViewModel @Inject constructor(
val filter = MutableLiveData("")
init {
+ _saveState.value == true
getPopularData()
}
@@ -69,7 +70,7 @@ class PopularViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = true
+ _saveState.value = false
_stateMessage.value = UiState.Success
}
.onFailure {
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index d7ff651..8352846 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -62,7 +62,7 @@
android:padding="12dp"
isSelected="@{vm.saveState}"
android:onClick="@{()->vm.postSave(data.content)}"
- android:src="@{data.Likes.isEmpty() ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
+ android:src="@{data.Likes.isEmpty() || vm.saveState ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
diff --git a/app/src/main/res/layout/item_recent_content.xml b/app/src/main/res/layout/item_recent_content.xml
index b4cd211..5a655aa 100644
--- a/app/src/main/res/layout/item_recent_content.xml
+++ b/app/src/main/res/layout/item_recent_content.xml
@@ -62,7 +62,7 @@
android:padding="12dp"
isSelected="@{vm.saveState}"
android:onClick="@{()->vm.postSave(data.content)}"
- android:src="@{data.Likes.isEmpty() ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
+ android:src="@{data.Likes.isEmpty() || vm.saveState ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
diff --git a/app/src/main/res/layout/item_search_content.xml b/app/src/main/res/layout/item_search_content.xml
index cf6bb64..cba9317 100644
--- a/app/src/main/res/layout/item_search_content.xml
+++ b/app/src/main/res/layout/item_search_content.xml
@@ -64,7 +64,7 @@
android:background="@null"
android:contentDescription="@string/search_heart_contentdescription"
android:padding="12dp"
- android:src="@{data.Likes.isEmpty() ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
+ android:src="@{data.Likes.isEmpty() || vm.saveState ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
From 3b24187cb72e689a03991c8505b08c9c86230aff Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 14 Jul 2023 14:33:03 +0900
Subject: [PATCH 030/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=952?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularViewModel.kt | 2 +-
.../presentation/main/explore/recent/RecentViewModel.kt | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 07a5182..b842504 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -32,7 +32,7 @@ class PopularViewModel @Inject constructor(
val filter = MutableLiveData("")
init {
- _saveState.value == true
+ _saveState.value = true
getPopularData()
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 3c0d52f..9429ca1 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -32,6 +32,7 @@ class RecentViewModel @Inject constructor(
val filter = MutableLiveData("")
init {
+ _saveState.value = true
getRecentData()
}
@@ -68,7 +69,7 @@ class RecentViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = true
+ _saveState.value = false
_stateMessage.value = UiState.Success
}
.onFailure {
From 321def30d694bd4ae383c0a5c1fe4b06abc45062 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 14 Jul 2023 14:34:07 +0900
Subject: [PATCH 031/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=953?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/search/SearchViewModel.kt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index 2c1bf8f..f631c0d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -32,6 +32,7 @@ class SearchViewModel @Inject constructor(
val key = MutableLiveData("")
init {
+ _saveState.value = true
getSearchPostData()
}
@@ -71,7 +72,7 @@ class SearchViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = true
+ _saveState.value = false
_stateMessage.value = UiState.Success
}
.onFailure {
From a003130d81c5bfb2de6ea3a3877844010578728f Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 15 Jul 2023 16:54:05 +0900
Subject: [PATCH 032/109] =?UTF-8?q?[DEL/#33]=20=EC=82=AD=EC=A0=9C=20?=
=?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EC=95=88=20=EB=88=8C=EB=A6=AC=EB=8A=94=20?=
=?UTF-8?q?=EA=B2=83=20=EC=9B=90=EC=9D=B8=20=ED=8C=8C=EC=95=85=20=EC=99=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/MainViewModel.kt | 2 ++
.../presentation/main/like/LikeFragment.kt | 21 +++++++++----------
app/src/main/res/layout/fragment_like.xml | 5 +----
3 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt
index 0772f55..dd5e741 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt
@@ -1,5 +1,6 @@
package com.release.keyneez.presentation.main
+import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -15,6 +16,7 @@ class MainViewModel @Inject constructor() : ViewModel() {
}
fun updateBnvView() {
+ Log.d("1", "hollo")
_isBnvVisible.value = _isBnvVisible.value?.not()
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index bc470c3..a6bccb3 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -38,6 +38,13 @@ class LikeFragment :
initLikeEditBtnClickListener()
}
+ private fun initLikeEditBtnClickListener() {
+ binding.btnLikeEdit.setOnSingleClickListener {
+ likeViewModel.updateEditView()
+ mainViewModel.updateBnvView()
+ }
+ }
+
private fun initCategoryBtnListener() {
selectOnlyOneButton(binding.tvLikeAll)
binding.tvLikeAll.setOnClickListener {
@@ -82,16 +89,8 @@ class LikeFragment :
if (animator is SimpleItemAnimator) {
animator.supportsChangeAnimations = false
}
- likeViewModel.likeList.observe(viewLifecycleOwner) { likeList ->
- likeAdapter?.submitList(likeList)
- }
- }
-
- private fun initLikeEditBtnClickListener() {
- binding.btnLikeEdit.setOnClickListener {
- Log.d("1", "제발..")
- likeViewModel.updateEditView()
- mainViewModel.updateBnvView()
+ likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
+ likeAdapter?.submitList(activityList)
}
}
@@ -120,7 +119,7 @@ class LikeFragment :
Log.d("1", "true일 때")
binding.tvLikeNum.setText(likeViewModel.getSelectedIdsCount().toString())
}
- binding.btnLikeEdit.isEnabled = likeList.isNotEmpty()
+// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
}
}
diff --git a/app/src/main/res/layout/fragment_like.xml b/app/src/main/res/layout/fragment_like.xml
index 6523d58..332cf6b 100644
--- a/app/src/main/res/layout/fragment_like.xml
+++ b/app/src/main/res/layout/fragment_like.xml
@@ -8,9 +8,6 @@
-
@@ -49,8 +46,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="37dp"
android:layout_marginEnd="11dp"
- android:padding="12dp"
android:clickable="true"
+ android:padding="12dp"
android:text="@{vm.isEdit ? @string/like_cancel : @string/like_edit}"
android:textColor="@color/gray600"
app:layout_constraintEnd_toEndOf="@id/layout_like_toolbar"
From 6745c6e50265e94a8426405d7ccd838aa138b0df Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 15 Jul 2023 16:55:59 +0900
Subject: [PATCH 033/109] =?UTF-8?q?[DEL/#33]=20=EB=A1=9C=EA=B7=B8=20?=
=?UTF-8?q?=EC=A0=9C=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/release/keyneez/presentation/main/MainViewModel.kt | 2 --
1 file changed, 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt
index dd5e741..0772f55 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/MainViewModel.kt
@@ -1,6 +1,5 @@
package com.release.keyneez.presentation.main
-import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -16,7 +15,6 @@ class MainViewModel @Inject constructor() : ViewModel() {
}
fun updateBnvView() {
- Log.d("1", "hollo")
_isBnvVisible.value = _isBnvVisible.value?.not()
}
}
From 95792c08b9ca3fb0b6abfc17eef5f0ce2e429573 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 15 Jul 2023 21:55:25 +0900
Subject: [PATCH 034/109] =?UTF-8?q?[MOD/#33]=20isEdit=20=EB=B6=88=EB=A6=AC?=
=?UTF-8?q?=EC=96=B8=EC=97=90=20=EB=94=B0=EB=9D=BC=20text=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95=20part=201?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/like/LikeFragment.kt | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index a6bccb3..b58c458 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -112,12 +112,14 @@ class LikeFragment :
likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
likeList = activityList
likeAdapter?.submitList(activityList)
- if (likeViewModel.isEdit.value == false) {
- Log.d("1", "false일 때")
- binding.tvLikeNum.setText(likeList.size.toString())
- } else {
- Log.d("1", "true일 때")
- binding.tvLikeNum.setText(likeViewModel.getSelectedIdsCount().toString())
+ likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
+ if (isEdit) {
+ Log.d("1", "true일 때")
+ binding.tvLikeNum.setText(likeViewModel.getSelectedIdsCount().toString())
+ } else {
+ Log.d("1", "false일 때")
+ binding.tvLikeNum.setText(likeList.size.toString())
+ }
}
// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
}
From 409cab4745e397966b601311237cfd27509eabbf Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 15 Jul 2023 22:34:16 +0900
Subject: [PATCH 035/109] =?UTF-8?q?[MOD/#33]=20isEdit=20=EB=B6=88=EB=A6=AC?=
=?UTF-8?q?=EC=96=B8=EC=97=90=20=EB=94=B0=EB=9D=BC=20text=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95=20part=202?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/like/LikeFragment.kt | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index b58c458..9d50830 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -8,6 +8,7 @@ import android.widget.TextView
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
+import com.release.keyneez.R
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.databinding.FragmentLikeBinding
import com.release.keyneez.presentation.main.MainViewModel
@@ -113,13 +114,15 @@ class LikeFragment :
likeList = activityList
likeAdapter?.submitList(activityList)
likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
- if (isEdit) {
+ val countText = if (isEdit) {
Log.d("1", "true일 때")
- binding.tvLikeNum.setText(likeViewModel.getSelectedIdsCount().toString())
+ val selectedCount = likeViewModel.getSelectedIdsCount().toString()
+ getString(R.string.like_select, selectedCount)
} else {
Log.d("1", "false일 때")
- binding.tvLikeNum.setText(likeList.size.toString())
+ getString(R.string.like_num, likeList.size)
}
+ binding.tvLikeNum.text = countText
}
// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
}
From 8eb2a08040096bf2d433854fa973170b5e8e80f2 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 15 Jul 2023 23:07:38 +0900
Subject: [PATCH 036/109] =?UTF-8?q?[MOD/#33]=20isEdit=20=EB=B6=88=EB=A6=AC?=
=?UTF-8?q?=EC=96=B8=EC=97=90=20=EB=94=B0=EB=9D=BC=20text=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95=20part=203?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/like/LikeFragment.kt | 9 ++++-----
.../keyneez/presentation/main/like/LikeViewModel.kt | 4 ----
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 9d50830..152e555 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -114,15 +114,14 @@ class LikeFragment :
likeList = activityList
likeAdapter?.submitList(activityList)
likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
- val countText = if (isEdit) {
- Log.d("1", "true일 때")
+ if (isEdit) {
val selectedCount = likeViewModel.getSelectedIdsCount().toString()
- getString(R.string.like_select, selectedCount)
+ binding.tvLikeNum.text = getString(R.string.like_select, selectedCount)
+ Log.d("1", "true일 때")
} else {
+ binding.tvLikeNum.text = getString(R.string.like_num, likeList.size)
Log.d("1", "false일 때")
- getString(R.string.like_num, likeList.size)
}
- binding.tvLikeNum.text = countText
}
// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 80d77e4..4827380 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -78,10 +78,6 @@ class LikeViewModel @Inject constructor(
}
fun getSelectedIdsCount(): Int {
- _selectedIds.observeForever { selectedIdsList ->
- val selectedCount = selectedIdsList?.size ?: 0
- _selectedCount.value = selectedCount
- }
val selectedIdsList = _selectedIds.value ?: mutableListOf()
val selectedCount = selectedIdsList.size
_selectedCount.value = selectedCount
From c5706f1855c2adbef7341ed4b7f34be4611c69f7 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 15 Jul 2023 23:25:03 +0900
Subject: [PATCH 037/109] =?UTF-8?q?[ADD/#33]=20=EB=B2=84=ED=8A=BC=20?=
=?UTF-8?q?=EB=88=84=EB=A5=BC=20=EB=95=8C=EB=A7=88=EB=8B=A4=20=EC=84=9C?=
=?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0=ED=95=A0=20=EC=88=98=20=EC=9E=88?=
=?UTF-8?q?=EA=B2=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeFragment.kt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 152e555..665f3b3 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -43,6 +43,9 @@ class LikeFragment :
binding.btnLikeEdit.setOnSingleClickListener {
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
+ if (likeViewModel.isEdit.value == false) {
+ likeViewModel.getLikeData()
+ }
}
}
@@ -106,6 +109,7 @@ class LikeFragment :
binding.ivEditBackground.visibility = View.GONE
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
+ likeViewModel.getLikeData()
}
}
From 35fc0a7ff7025fd757e8087a25f7a3cb7f235c70 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 16 Jul 2023 12:36:36 +0900
Subject: [PATCH 038/109] =?UTF-8?q?[MOD/#33]=20=EB=B2=84=ED=8A=BC=20?=
=?UTF-8?q?=EB=88=84=EB=A5=BC=20=EB=95=8C=EB=A7=88=EB=8B=A4=20=EC=84=9C?=
=?UTF-8?q?=EB=B2=84=ED=86=B5=EC=8B=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeFragment.kt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 665f3b3..010068c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -44,7 +44,7 @@ class LikeFragment :
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
if (likeViewModel.isEdit.value == false) {
- likeViewModel.getLikeData()
+ selectOnlyOneButton(binding.tvLikeAll)
}
}
}
@@ -109,7 +109,7 @@ class LikeFragment :
binding.ivEditBackground.visibility = View.GONE
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
- likeViewModel.getLikeData()
+ selectOnlyOneButton(binding.tvLikeAll)
}
}
From 56dbb90abf9539f11c9e887580efadb877242eda Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 16 Jul 2023 14:48:58 +0900
Subject: [PATCH 039/109] =?UTF-8?q?[MOD/#33]=20isEdit=20=EB=B6=88=EB=A6=AC?=
=?UTF-8?q?=EC=96=B8=EC=97=90=20=EB=94=B0=EB=9D=BC=20text=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95=20part4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeFragment.kt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 010068c..665f3b3 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -44,7 +44,7 @@ class LikeFragment :
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
if (likeViewModel.isEdit.value == false) {
- selectOnlyOneButton(binding.tvLikeAll)
+ likeViewModel.getLikeData()
}
}
}
@@ -109,7 +109,7 @@ class LikeFragment :
binding.ivEditBackground.visibility = View.GONE
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
- selectOnlyOneButton(binding.tvLikeAll)
+ likeViewModel.getLikeData()
}
}
From 9df02acfbeb2deaa81dd9d2d4e7e02b5e28f965f Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 17 Jul 2023 21:52:57 +0900
Subject: [PATCH 040/109] =?UTF-8?q?[MOD/#33]=20=EC=B7=A8=EC=86=8C=ED=95=98?=
=?UTF-8?q?=EB=A9=B4=20default=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC?=
=?UTF-8?q?=EB=A1=9C=20=EA=B0=80=EA=B2=8C=EB=81=94=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeFragment.kt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 665f3b3..9454d33 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -44,7 +44,7 @@ class LikeFragment :
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
if (likeViewModel.isEdit.value == false) {
- likeViewModel.getLikeData()
+ initCategoryBtnListener()
}
}
}
@@ -109,7 +109,7 @@ class LikeFragment :
binding.ivEditBackground.visibility = View.GONE
likeViewModel.updateEditView()
mainViewModel.updateBnvView()
- likeViewModel.getLikeData()
+ initCategoryBtnListener()
}
}
From e3dd497165f1be37861c5f53bcfbfa78b2a367d3 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 17 Jul 2023 22:02:50 +0900
Subject: [PATCH 041/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/search/SearchActivity.kt | 7 +++----
app/src/main/res/layout/activity_search.xml | 2 --
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index a10cf4b..ac0ec4d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -12,7 +12,6 @@ import com.release.keyneez.util.binding.BindingActivity
import com.release.keyneez.util.extension.hideKeyboard
import com.release.keyneez.util.extension.setOnSingleClickListener
import com.release.keyneez.util.extension.showSnackbar
-import com.release.keyneez.util.extension.showToast
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
@@ -64,9 +63,9 @@ class SearchActivity : BindingActivity(R.layout.activity_
val searchList = viewModel.searchList.value
searchAdapter?.submitList(searchList)
binding.tvSearchCount.text = searchList?.size.toString()
- if (searchList?.size == 0) {
- showToast(getString(R.string.search_no_result))
- }
+// if (searchList?.size == 0) {
+// showToast(getString(R.string.search_no_result))
+// }
}
private fun initHideKeyboard() {
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index 5a0cad3..64f80e2 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -99,7 +99,6 @@
android:layout_marginTop="34dp"
android:text="@string/search_result_end"
android:textColor="@color/gray900"
- android:visibility="@{vm.searchList == null ? View.GONE : View.VISIBLE}"
app:layout_constraintStart_toEndOf="@id/flow_search"
app:layout_constraintTop_toBottomOf="@id/view_search_baseline" />
@@ -108,7 +107,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="34dp"
- android:visibility="@{vm.searchList == null ? View.GONE : View.VISIBLE}"
app:constraint_referenced_ids="tv_search_after,tv_search_count"
app:flow_horizontalGap="3dp"
app:layout_constraintEnd_toEndOf="parent"
From e848653d3c917528b34bae93bf599e537ac497a5 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 17 Jul 2023 22:10:12 +0900
Subject: [PATCH 042/109] =?UTF-8?q?[DEL/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/search/SearchActivity.kt | 3 ---
1 file changed, 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index ac0ec4d..f09e0b6 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -63,9 +63,6 @@ class SearchActivity : BindingActivity(R.layout.activity_
val searchList = viewModel.searchList.value
searchAdapter?.submitList(searchList)
binding.tvSearchCount.text = searchList?.size.toString()
-// if (searchList?.size == 0) {
-// showToast(getString(R.string.search_no_result))
-// }
}
private fun initHideKeyboard() {
From 461891ccc74145e228594ab1cbb39635eb136065 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 17 Jul 2023 22:31:57 +0900
Subject: [PATCH 043/109] =?UTF-8?q?[DEL/#33]=20=EC=A4=91=EB=B3=B5=20submit?=
=?UTF-8?q?list=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/release/keyneez/presentation/main/like/LikeFragment.kt | 3 ---
1 file changed, 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 9454d33..5b0335d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -93,9 +93,6 @@ class LikeFragment :
if (animator is SimpleItemAnimator) {
animator.supportsChangeAnimations = false
}
- likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
- likeAdapter?.submitList(activityList)
- }
}
private fun initEditBtnClickListener() {
From 17442c597e3ef934a541f9eb0b2610a4e3cbab58 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 17 Jul 2023 23:06:34 +0900
Subject: [PATCH 044/109] =?UTF-8?q?[MOD/#33]=20=EB=A7=A8=20=EC=B2=98?=
=?UTF-8?q?=EC=9D=8C=EC=97=90=20=EB=93=A4=EC=96=B4=20=EC=98=AC=20=EB=95=8C?=
=?UTF-8?q?=20=EC=A4=91=EB=B3=B5=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20?=
=?UTF-8?q?=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/like/LikeFragment.kt | 28 +++++++++++--------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 5b0335d..71a3c44 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -24,7 +24,7 @@ class LikeFragment :
lateinit var likeList: List
private val likeViewModel by viewModels()
private val mainViewModel by activityViewModels()
-
+ private var isInitialLoad = true
override fun onAttach(context: Context) {
super.onAttach(context)
}
@@ -73,12 +73,14 @@ class LikeFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (filterValue != binding.tvLikeAll.text.toString()) {
- likeViewModel.setFilterValue(filterValue)
- likeViewModel.getLikeData()
- } else {
- likeViewModel.setFilterValue("")
- likeViewModel.getLikeData()
+ if (isInitialLoad == false) {
+ if (filterValue != binding.tvLikeAll.text.toString()) {
+ likeViewModel.setFilterValue(filterValue)
+ likeViewModel.getLikeData()
+ } else {
+ likeViewModel.setFilterValue("")
+ likeViewModel.getLikeData()
+ }
}
}
@@ -111,9 +113,13 @@ class LikeFragment :
}
private fun setupLikeData() {
- likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
- likeList = activityList
- likeAdapter?.submitList(activityList)
+ if (isInitialLoad) {
+ likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
+ likeList = activityList
+ likeAdapter?.submitList(activityList)
+ isInitialLoad = false
+ }
+ } else {
likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
if (isEdit) {
val selectedCount = likeViewModel.getSelectedIdsCount().toString()
@@ -124,8 +130,8 @@ class LikeFragment :
Log.d("1", "false일 때")
}
}
-// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
}
+// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
}
override fun onDestroyView() {
From 18a6277632450f0698559d63a31eb3336d2d7415 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 17 Jul 2023 23:55:48 +0900
Subject: [PATCH 045/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/like/LikeFragment.kt | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 71a3c44..c550f78 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -113,13 +113,10 @@ class LikeFragment :
}
private fun setupLikeData() {
- if (isInitialLoad) {
- likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
- likeList = activityList
- likeAdapter?.submitList(activityList)
- isInitialLoad = false
- }
- } else {
+ likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
+ isInitialLoad = false
+ likeList = activityList
+ likeAdapter?.submitList(activityList)
likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
if (isEdit) {
val selectedCount = likeViewModel.getSelectedIdsCount().toString()
From 397f0264d2d9730a6ec78182be7e85d5faf41f6f Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Tue, 18 Jul 2023 00:01:16 +0900
Subject: [PATCH 046/109] =?UTF-8?q?[ADD/#33]=20=EC=A3=BC=EC=84=9D=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
---
.../com/release/keyneez/presentation/main/like/LikeFragment.kt | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index c550f78..37ac082 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -123,6 +123,7 @@ class LikeFragment :
binding.tvLikeNum.text = getString(R.string.like_select, selectedCount)
Log.d("1", "true일 때")
} else {
+ // 서버 통신 때문에 제대로 출력 안되는 확률도 있기에 서버통신 되고 다시 살펴 보기
binding.tvLikeNum.text = getString(R.string.like_num, likeList.size)
Log.d("1", "false일 때")
}
From 8f2b8c81223feb7c455b7b0aa85268e0c39dcc8d Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 19 Jul 2023 23:09:17 +0900
Subject: [PATCH 047/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20observe=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/search/SearchActivity.kt | 15 +++++++++++----
.../presentation/main/search/SearchViewModel.kt | 9 +++++++++
app/src/main/res/layout/activity_search.xml | 2 ++
3 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index f09e0b6..d06a78f 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -1,7 +1,9 @@
package com.release.keyneez.presentation.main.search
import android.os.Bundle
+import android.util.Log
import android.view.KeyEvent
+import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.TextView
import androidx.activity.viewModels
@@ -29,6 +31,8 @@ class SearchActivity : BindingActivity(R.layout.activity_
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
+ binding.flowSearch.visibility = View.GONE
+ binding.tvSearchEnd.visibility = View.GONE
initSearchBtnClickListener()
initSearchAdapter()
initBackBtnClickListener()
@@ -60,9 +64,11 @@ class SearchActivity : BindingActivity(R.layout.activity_
}
private fun setupSearchActivityList() {
- val searchList = viewModel.searchList.value
- searchAdapter?.submitList(searchList)
- binding.tvSearchCount.text = searchList?.size.toString()
+ viewModel.searchList.observe(this) {
+ val searchList = viewModel.searchList.value
+ searchAdapter?.submitList(searchList)
+ binding.tvSearchCount.text = searchList?.size.toString()
+ }
}
private fun initHideKeyboard() {
@@ -85,7 +91,8 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun initSearchBtnClickListener() {
binding.btnSearch.setOnSingleClickListener {
setupSearchActivityList()
- viewModel.getSearchPostData()
+ Log.d("1", "제바루ㅜ")
+ viewModel.updateCount()
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index f631c0d..c9c56f3 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -1,5 +1,6 @@
package com.release.keyneez.presentation.main.search
+import androidx.databinding.ObservableBoolean
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -24,6 +25,9 @@ class SearchViewModel @Inject constructor(
private val _stateMessage = MutableLiveData()
val stateMessage: LiveData
get() = _stateMessage
+ private val _isFlowVisible = MutableLiveData()
+ val isFlowVisible: LiveData
+ get() = _isFlowVisible
private val _saveState = MutableLiveData()
val saveState: LiveData
@@ -33,9 +37,14 @@ class SearchViewModel @Inject constructor(
init {
_saveState.value = true
+ _isFlowVisible.value = false
getSearchPostData()
}
+ fun updateCount() {
+ _isFlowVisible.value = true
+ }
+
fun getSearchPostData() {
viewModelScope.launch {
contentRepository.getSearch(key.value.toString()).onSuccess { response ->
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index 64f80e2..d2dfe50 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -99,6 +99,7 @@
android:layout_marginTop="34dp"
android:text="@string/search_result_end"
android:textColor="@color/gray900"
+ android:visibility="@{vm.isFlowVisible ? View.VISIBLE : View.GONE}"
app:layout_constraintStart_toEndOf="@id/flow_search"
app:layout_constraintTop_toBottomOf="@id/view_search_baseline" />
@@ -107,6 +108,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="34dp"
+ android:visibility="@{vm.isFlowVisible ? View.VISIBLE : View.GONE}"
app:constraint_referenced_ids="tv_search_after,tv_search_count"
app:flow_horizontalGap="3dp"
app:layout_constraintEnd_toEndOf="parent"
From 3f5cda16281b7045f882e5989e3fc771b281e1b9 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 19 Jul 2023 23:16:31 +0900
Subject: [PATCH 048/109] =?UTF-8?q?[MOD/#33]=20=EC=9D=B8=EA=B8=B0=EB=B7=B0?=
=?UTF-8?q?=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EC=B4=88=EA=B8=B0?=
=?UTF-8?q?=EC=97=90=20=ED=95=9C=20=EB=B2=88=EB=A7=8C=20=EB=90=98=EA=B2=8C?=
=?UTF-8?q?=EB=81=94=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularFragment.kt | 16 ++++++++++------
.../presentation/main/search/SearchActivity.kt | 3 ++-
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 7d287f1..3012332 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -13,6 +13,7 @@ class PopularFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_popular) {
private val viewModel: PopularViewModel by viewModels()
private var popularAdapter: PopularAdapter? = null
+ private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.vm = viewModel
@@ -45,12 +46,14 @@ class PopularFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (filterValue != binding.tvExplorePopularAll.text.toString()) {
- viewModel.setFilterValue(filterValue)
- viewModel.getPopularData()
- } else {
- viewModel.setFilterValue("")
- viewModel.getPopularData()
+ if (isInitialLoad == false) {
+ if (filterValue != binding.tvExplorePopularAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
+ viewModel.getPopularData()
+ } else {
+ viewModel.setFilterValue("")
+ viewModel.getPopularData()
+ }
}
}
@@ -61,6 +64,7 @@ class PopularFragment :
private fun setupPopularActivityList() {
viewModel.popularList.observe(viewLifecycleOwner) { popularList ->
+ isInitialLoad = false
popularAdapter?.submitList(popularList)
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index d06a78f..f223fb5 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -27,7 +27,7 @@ import kotlinx.coroutines.runBlocking
class SearchActivity : BindingActivity(R.layout.activity_search) {
private var searchAdapter: SearchAdapter? = null
private val viewModel: SearchViewModel by viewModels()
-
+ private var isInitialLoad = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
@@ -65,6 +65,7 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun setupSearchActivityList() {
viewModel.searchList.observe(this) {
+ isInitialLoad = false
val searchList = viewModel.searchList.value
searchAdapter?.submitList(searchList)
binding.tvSearchCount.text = searchList?.size.toString()
From 9788ecb14f48ecac05d2bb5a28a337b8f296048e Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 19 Jul 2023 23:48:19 +0900
Subject: [PATCH 049/109] =?UTF-8?q?[MOD/#33]=20=EC=9D=B8=EA=B8=B0=EB=B7=B0?=
=?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularFragment.kt | 16 ++++++++++++++++
.../main/explore/popular/PopularViewModel.kt | 2 +-
app/src/main/res/layout/fragment_popular.xml | 4 ----
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 3012332..6c946f1 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -1,9 +1,13 @@
package com.release.keyneez.presentation.main.explore.popular
+import android.content.Context
import android.os.Bundle
+import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
+import androidx.recyclerview.widget.SimpleItemAnimator
+import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.databinding.FragmentPopularBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -12,6 +16,7 @@ import dagger.hilt.android.AndroidEntryPoint
class PopularFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_popular) {
private val viewModel: PopularViewModel by viewModels()
+ lateinit var list: List
private var popularAdapter: PopularAdapter? = null
private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -22,6 +27,10 @@ class PopularFragment :
initCategoryBtnListener()
}
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ }
+
private fun initCategoryBtnListener() {
selectOnlyOneButton(binding.tvExplorePopularAll)
binding.tvExplorePopularAll.setOnClickListener {
@@ -47,6 +56,7 @@ class PopularFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
if (isInitialLoad == false) {
+ Log.d("1", "서버통신")
if (filterValue != binding.tvExplorePopularAll.text.toString()) {
viewModel.setFilterValue(filterValue)
viewModel.getPopularData()
@@ -60,11 +70,17 @@ class PopularFragment :
private fun initPopularAdapter() {
popularAdapter = PopularAdapter()
binding.rvExplorePopular.adapter = popularAdapter
+ val animator = binding.rvExplorePopular.itemAnimator
+ if (animator is SimpleItemAnimator) {
+ animator.supportsChangeAnimations = false
+ }
}
private fun setupPopularActivityList() {
viewModel.popularList.observe(viewLifecycleOwner) { popularList ->
+ Log.d("1", "핵심")
isInitialLoad = false
+ list = popularList
popularAdapter?.submitList(popularList)
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index b842504..83608f9 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -17,7 +17,7 @@ import javax.inject.Inject
class PopularViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _popularList = MutableLiveData>()
+ private val _popularList = MutableLiveData>(mutableListOf())
val popularList: LiveData>
get() = _popularList
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index fe457d8..d215b05 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -29,7 +29,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="22dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
- android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_entire"
@@ -44,7 +43,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
- android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_hobby"
@@ -59,7 +57,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
- android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_activity"
@@ -74,7 +71,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
- android:clickable="true"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
android:text="@string/explore_career"
From b4e82dac159e657109c68d855c79b4a39f19aea4 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 19 Jul 2023 23:49:20 +0900
Subject: [PATCH 050/109] =?UTF-8?q?[DEL/#33]=20clickable=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/res/layout/fragment_recent.xml | 4 ----
1 file changed, 4 deletions(-)
diff --git a/app/src/main/res/layout/fragment_recent.xml b/app/src/main/res/layout/fragment_recent.xml
index beeac73..d2694a1 100644
--- a/app/src/main/res/layout/fragment_recent.xml
+++ b/app/src/main/res/layout/fragment_recent.xml
@@ -30,7 +30,6 @@
android:layout_marginStart="22dp"
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
- android:clickable="true"
android:paddingVertical="6dp"
android:text="@string/explore_entire"
android:textColor="@color/sel_explore_drawable_text_color"
@@ -46,7 +45,6 @@
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
- android:clickable="true"
android:text="@string/explore_hobby"
android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_recent_all"
@@ -61,7 +59,6 @@
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
- android:clickable="true"
android:text="@string/explore_activity"
android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_recent_hobby"
@@ -76,7 +73,6 @@
android:background="@drawable/sel_explore_drawable_bnv_category"
android:paddingHorizontal="16dp"
android:paddingVertical="6dp"
- android:clickable="true"
android:text="@string/explore_career"
android:textColor="@color/sel_explore_drawable_text_color"
app:layout_constraintStart_toEndOf="@id/tv_explore_recent_outside"
From 4064486e4828680f6be99f547c1ffe066c4b91bd Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 19 Jul 2023 23:55:55 +0900
Subject: [PATCH 051/109] =?UTF-8?q?[MOD/#33]=20=EC=B5=9C=EC=8B=A0=EB=B7=B0?=
=?UTF-8?q?=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EC=B4=88=EA=B8=B0?=
=?UTF-8?q?=EC=97=90=20=ED=95=9C=20=EB=B2=88=EB=A7=8C=20=EB=90=98=EA=B2=8C?=
=?UTF-8?q?=EB=81=94=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularFragment.kt | 1 -
.../main/explore/recent/RecentFragment.kt | 30 ++++++++++++++-----
.../main/explore/recent/RecentViewModel.kt | 3 +-
3 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 6c946f1..4c2988d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -78,7 +78,6 @@ class PopularFragment :
private fun setupPopularActivityList() {
viewModel.popularList.observe(viewLifecycleOwner) { popularList ->
- Log.d("1", "핵심")
isInitialLoad = false
list = popularList
popularAdapter?.submitList(popularList)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 17084c8..5c4ea07 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -1,10 +1,13 @@
package com.release.keyneez.presentation.main.explore.recent
+import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
+import androidx.recyclerview.widget.SimpleItemAnimator
import com.release.keyneez.R
+import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.databinding.FragmentRecentBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -13,7 +16,8 @@ import dagger.hilt.android.AndroidEntryPoint
class RecentFragment : BindingFragment(R.layout.fragment_recent) {
private val viewModel: RecentViewModel by viewModels()
private var recentAdapter: RecentAdapter? = null
-
+ lateinit var list: List
+ private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.vm = viewModel
@@ -22,6 +26,10 @@ class RecentFragment : BindingFragment(R.layout.fragment_
initCategoryBtnListener()
}
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ }
+
private fun initCategoryBtnListener() {
selectOnlyOneButton(binding.tvExploreRecentAll)
binding.tvExploreRecentAll.setOnClickListener {
@@ -46,22 +54,30 @@ class RecentFragment : BindingFragment(R.layout.fragment_
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (filterValue != binding.tvExploreRecentAll.text.toString()) {
- viewModel.setFilterValue(filterValue)
- viewModel.getRecentData()
- } else {
- viewModel.setFilterValue("")
- viewModel.getRecentData()
+ if (isInitialLoad == false) {
+ if (filterValue != binding.tvExploreRecentAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
+ viewModel.getRecentData()
+ } else {
+ viewModel.setFilterValue("")
+ viewModel.getRecentData()
+ }
}
}
private fun initRecentAdapter() {
recentAdapter = RecentAdapter()
binding.rvExploreRecent.adapter = recentAdapter
+ val animator = binding.rvExploreRecent.itemAnimator
+ if (animator is SimpleItemAnimator) {
+ animator.supportsChangeAnimations = false
+ }
}
private fun setupRecentActivityList() {
viewModel.recentList.observe(viewLifecycleOwner) { recentList ->
+ isInitialLoad = false
+ list = recentList
recentAdapter?.submitList(recentList)
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 9429ca1..ccf4e43 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -17,7 +17,7 @@ import javax.inject.Inject
class RecentViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _recentList = MutableLiveData>()
+ private val _recentList = MutableLiveData>(mutableListOf())
val recentList: LiveData>
get() = _recentList
@@ -62,6 +62,7 @@ class RecentViewModel @Inject constructor(
}
}
}
+
fun postSave(pk: Int) {
viewModelScope.launch {
contentRepository.postLike(pk).onSuccess { response ->
From 3565afa75861fdb62eb9212d0f9734de94b94ebd Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 00:27:35 +0900
Subject: [PATCH 052/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/search/SearchActivity.kt | 70 ++++++++-----------
.../main/search/SearchViewModel.kt | 3 +-
2 files changed, 31 insertions(+), 42 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index f223fb5..66cae49 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -15,19 +15,11 @@ import com.release.keyneez.util.extension.hideKeyboard
import com.release.keyneez.util.extension.setOnSingleClickListener
import com.release.keyneez.util.extension.showSnackbar
import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.debounce
-import kotlinx.coroutines.flow.flow
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
@AndroidEntryPoint
class SearchActivity : BindingActivity(R.layout.activity_search) {
private var searchAdapter: SearchAdapter? = null
private val viewModel: SearchViewModel by viewModels()
- private var isInitialLoad = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
@@ -65,7 +57,6 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun setupSearchActivityList() {
viewModel.searchList.observe(this) {
- isInitialLoad = false
val searchList = viewModel.searchList.value
searchAdapter?.submitList(searchList)
binding.tvSearchCount.text = searchList?.size.toString()
@@ -91,42 +82,41 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun initSearchBtnClickListener() {
binding.btnSearch.setOnSingleClickListener {
- setupSearchActivityList()
Log.d("1", "제바루ㅜ")
viewModel.updateCount()
}
}
- private fun debounce(): kotlinx.coroutines.flow.Flow = flow {
- emit(1)
- emit(2)
- delay(500L)
- emit(3)
- emit(4)
- delay(200L)
- emit(5)
- delay(700L)
- emit(6)
- }.debounce(300L)
-
- fun main() = runBlocking {
- debounce().collect { }
- }
-
- fun debounce(
- timeMillis: Long = 300L,
- coroutineScope: CoroutineScope,
- block: (T) -> Unit
- ): (T) -> Unit {
- var debounceJob: Job? = null
- return {
- debounceJob?.cancel()
- debounceJob = coroutineScope.launch {
- delay(timeMillis)
- block(it)
- }
- }
- }
+// private fun debounce(): kotlinx.coroutines.flow.Flow = flow {
+// emit(1)
+// emit(2)
+// delay(500L)
+// emit(3)
+// emit(4)
+// delay(200L)
+// emit(5)
+// delay(700L)
+// emit(6)
+// }.debounce(300L)
+//
+// fun main() = runBlocking {
+// debounce().collect { }
+// }
+//
+// fun debounce(
+// timeMillis: Long = 300L,
+// coroutineScope: CoroutineScope,
+// block: (T) -> Unit
+// ): (T) -> Unit {
+// var debounceJob: Job? = null
+// return {
+// debounceJob?.cancel()
+// debounceJob = coroutineScope.launch {
+// delay(timeMillis)
+// block(it)
+// }
+// }
+// }
private fun initBackBtnClickListener() {
binding.btnSearchCancel.setOnSingleClickListener {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index c9c56f3..40ae74e 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -1,6 +1,5 @@
package com.release.keyneez.presentation.main.search
-import androidx.databinding.ObservableBoolean
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -18,7 +17,7 @@ import javax.inject.Inject
class SearchViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _searchList = MutableLiveData>()
+ private val _searchList = MutableLiveData>(mutableListOf())
val searchList: LiveData>
get() = _searchList
From 0276014c1fa45c39a36f2dbdc92e17f8fc1f01b2 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 00:30:37 +0900
Subject: [PATCH 053/109] =?UTF-8?q?[DEL/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EC=B4=88=EA=B8=B0?=
=?UTF-8?q?=EC=97=90=20=ED=95=9C=20=EB=B2=88=EB=A7=8C=20=EB=90=98=EA=B2=8C?=
=?UTF-8?q?=EB=81=94=20=EC=88=98=EC=A0=95..=EC=BD=94=EB=93=9C=20=ED=95=9C?=
=?UTF-8?q?=20=EC=A4=84=20=EC=82=AD=EC=A0=9C=ED=95=98=EB=A9=B4=20=ED=95=B4?=
=?UTF-8?q?=EA=B2=B0=EB=90=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=EC=98=80?=
=?UTF-8?q?=EB=8B=A4=EB=8B=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/search/SearchViewModel.kt | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index 40ae74e..70d9bf7 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -37,7 +37,6 @@ class SearchViewModel @Inject constructor(
init {
_saveState.value = true
_isFlowVisible.value = false
- getSearchPostData()
}
fun updateCount() {
From b4efae7039483779101fb8f306e4b94376946c7f Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 00:37:34 +0900
Subject: [PATCH 054/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EA=B0=AF=EC=88=98=20=EA=B2=B0=EA=B3=BC=20visible=20=20?=
=?UTF-8?q?=ED=95=B4=EA=B2=B0=ED=95=98=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/search/SearchActivity.kt | 34 +------------------
app/src/main/res/layout/activity_search.xml | 1 -
2 files changed, 1 insertion(+), 34 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 66cae49..6548047 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -1,7 +1,6 @@
package com.release.keyneez.presentation.main.search
import android.os.Bundle
-import android.util.Log
import android.view.KeyEvent
import android.view.View
import android.view.inputmethod.EditorInfo
@@ -82,42 +81,11 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun initSearchBtnClickListener() {
binding.btnSearch.setOnSingleClickListener {
- Log.d("1", "제바루ㅜ")
viewModel.updateCount()
+ viewModel.getSearchPostData()
}
}
-// private fun debounce(): kotlinx.coroutines.flow.Flow = flow {
-// emit(1)
-// emit(2)
-// delay(500L)
-// emit(3)
-// emit(4)
-// delay(200L)
-// emit(5)
-// delay(700L)
-// emit(6)
-// }.debounce(300L)
-//
-// fun main() = runBlocking {
-// debounce().collect { }
-// }
-//
-// fun debounce(
-// timeMillis: Long = 300L,
-// coroutineScope: CoroutineScope,
-// block: (T) -> Unit
-// ): (T) -> Unit {
-// var debounceJob: Job? = null
-// return {
-// debounceJob?.cancel()
-// debounceJob = coroutineScope.launch {
-// delay(timeMillis)
-// block(it)
-// }
-// }
-// }
-
private fun initBackBtnClickListener() {
binding.btnSearchCancel.setOnSingleClickListener {
finish()
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index d2dfe50..3f95c71 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -26,7 +26,6 @@
android:layout_marginTop="36dp"
android:background="@null"
android:contentDescription="@string/search_contentdescription"
- android:onClick="@{()->vm.getSearchPostData()}"
android:padding="12dp"
android:src="@drawable/ic_search"
app:layout_constraintStart_toStartOf="parent"
From a7754552bb123b9c6c2f3e7569aa34f9b21dbcc9 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 01:29:36 +0900
Subject: [PATCH 055/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EA=B0=AF=EC=88=98=20=EA=B2=B0=EA=B3=BC=20=EA=B0=80=EC=9A=B4?=
=?UTF-8?q?=EB=8D=B0=20=EC=9C=84=EC=B9=98=20=EC=8B=9C=ED=82=A4=EB=8A=94=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/search/SearchActivity.kt | 3 -
app/src/main/res/layout/activity_search.xml | 62 +++++++++----------
2 files changed, 30 insertions(+), 35 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 6548047..aa5e460 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -2,7 +2,6 @@ package com.release.keyneez.presentation.main.search
import android.os.Bundle
import android.view.KeyEvent
-import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.TextView
import androidx.activity.viewModels
@@ -22,8 +21,6 @@ class SearchActivity : BindingActivity(R.layout.activity_
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
- binding.flowSearch.visibility = View.GONE
- binding.tvSearchEnd.visibility = View.GONE
initSearchBtnClickListener()
initSearchAdapter()
initBackBtnClickListener()
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index 3f95c71..14fad19 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -74,45 +74,43 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/et_search_content" />
-
-
-
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@id/view_search_baseline">
+
+
+
+
+
+
+
Date: Thu, 20 Jul 2023 21:16:51 +0900
Subject: [PATCH 056/109] =?UTF-8?q?[ADD/#33]=20=ED=83=90=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=EB=93=A4=20=EB=8B=A4=EC=8B=9C=20=EB=8F=8C=EC=95=84=20=EB=8F=8C?=
=?UTF-8?q?=EC=95=84=20=EC=98=A4=EB=A9=B4=20=EC=83=88=EB=A1=AD=EA=B2=8C=20?=
=?UTF-8?q?=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EB=90=98=EA=B2=8C?=
=?UTF-8?q?=EB=81=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularFragment.kt | 7 +++++++
.../presentation/main/explore/recent/RecentFragment.kt | 7 +++++++
2 files changed, 14 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 4c2988d..4993517 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -31,6 +31,13 @@ class PopularFragment :
super.onAttach(context)
}
+ override fun onResume() {
+ super.onResume()
+ if (!isInitialLoad) {
+ initCategoryBtnListener()
+ }
+ }
+
private fun initCategoryBtnListener() {
selectOnlyOneButton(binding.tvExplorePopularAll)
binding.tvExplorePopularAll.setOnClickListener {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 5c4ea07..6940914 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -30,6 +30,13 @@ class RecentFragment : BindingFragment(R.layout.fragment_
super.onAttach(context)
}
+ override fun onResume() {
+ super.onResume()
+ if (!isInitialLoad) {
+ initCategoryBtnListener()
+ }
+ }
+
private fun initCategoryBtnListener() {
selectOnlyOneButton(binding.tvExploreRecentAll)
binding.tvExploreRecentAll.setOnClickListener {
From a25ccbe51e3ec4bde8490aec5630e39f2a70ebcb Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 21:34:22 +0900
Subject: [PATCH 057/109] =?UTF-8?q?[DEL/#33]=20=EC=A4=91=EB=B3=B5=20?=
=?UTF-8?q?=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EC=97=86=EC=95=A0?=
=?UTF-8?q?=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularViewModel.kt | 1 -
.../keyneez/presentation/main/explore/recent/RecentViewModel.kt | 1 -
2 files changed, 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 83608f9..aebaa3b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -33,7 +33,6 @@ class PopularViewModel @Inject constructor(
init {
_saveState.value = true
- getPopularData()
}
fun setFilterValue(value: String) {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index ccf4e43..67f5325 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -33,7 +33,6 @@ class RecentViewModel @Inject constructor(
init {
_saveState.value = true
- getRecentData()
}
fun setFilterValue(value: String) {
From 456b6ad6c2ae69aa106aa067789e7f46473a76e7 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 21:37:13 +0900
Subject: [PATCH 058/109] =?UTF-8?q?[DEL/#33]=20=EB=B6=88=ED=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularFragment.kt | 2 --
1 file changed, 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 4993517..2cfe530 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -2,7 +2,6 @@ package com.release.keyneez.presentation.main.explore.popular
import android.content.Context
import android.os.Bundle
-import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
@@ -63,7 +62,6 @@ class PopularFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
if (isInitialLoad == false) {
- Log.d("1", "서버통신")
if (filterValue != binding.tvExplorePopularAll.text.toString()) {
viewModel.setFilterValue(filterValue)
viewModel.getPopularData()
From 0cab7f768fd92b22575c04ac71083a05dd01690c Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 21:40:51 +0900
Subject: [PATCH 059/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=ED=82=A4=EB=B3=B4=EB=93=9C=20=EC=88=A8=EA=B8=B0=EB=8A=94=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/search/SearchActivity.kt | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index aa5e460..9022800 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -25,7 +25,6 @@ class SearchActivity : BindingActivity(R.layout.activity_
initSearchAdapter()
initBackBtnClickListener()
initSearchBtnKeyListener()
- initHideKeyboard()
setupSearchState()
}
@@ -59,12 +58,6 @@ class SearchActivity : BindingActivity(R.layout.activity_
}
}
- private fun initHideKeyboard() {
- binding.layoutSearch.setOnSingleClickListener {
- hideKeyboard()
- }
- }
-
private fun initSearchBtnKeyListener() {
binding.etSearchContent.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
@@ -80,6 +73,7 @@ class SearchActivity : BindingActivity(R.layout.activity_
binding.btnSearch.setOnSingleClickListener {
viewModel.updateCount()
viewModel.getSearchPostData()
+ hideKeyboard()
}
}
From a3b2f78883c46678609c0bd72337283d2d21631c Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 20 Jul 2023 21:52:03 +0900
Subject: [PATCH 060/109] =?UTF-8?q?[MOD/#33]=20=EB=A6=B0=ED=8A=B8=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
---
app/src/main/res/layout/item_popular_content.xml | 4 ++--
app/src/main/res/layout/item_recent_content.xml | 4 ++--
app/src/main/res/layout/item_search_content.xml | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index 8352846..eb6803f 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -54,14 +54,14 @@
Date: Fri, 21 Jul 2023 14:30:25 +0900
Subject: [PATCH 061/109] =?UTF-8?q?[FEAT/#33]=20=EC=B5=9C=EC=8B=A0?=
=?UTF-8?q?=EB=B7=B0=EC=97=90=EC=84=9C=20=EC=A2=8B=EC=95=84=EC=9A=94=20?=
=?UTF-8?q?=EC=B7=A8=EC=86=8C=ED=95=98=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=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
---
.../main/explore/recent/RecentFragment.kt | 1 +
.../main/explore/recent/RecentViewModel.kt | 38 ++++++++++++++++---
.../main/res/layout/item_recent_content.xml | 4 +-
3 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 6940914..399db3c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -86,6 +86,7 @@ class RecentFragment : BindingFragment(R.layout.fragment_
isInitialLoad = false
list = recentList
recentAdapter?.submitList(recentList)
+ viewModel.updateSaveState(recentList.flatMap { it.Likes })
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 67f5325..0e2a5db 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -31,14 +31,26 @@ class RecentViewModel @Inject constructor(
val filter = MutableLiveData("")
- init {
- _saveState.value = true
- }
-
fun setFilterValue(value: String) {
filter.value = value
}
+ fun updateSaveState(list: List) {
+ if (list.isEmpty()) {
+ _saveState.value = false
+ } else {
+ _saveState.value = true
+ }
+ }
+
+ fun onSaveBtnClick(data: ResponseGetContentDto, saveState: Boolean) {
+ if (saveState) {
+ postUnLike(data.content)
+ } else {
+ postSave(data.content)
+ }
+ }
+
fun getRecentData() {
viewModelScope.launch {
contentRepository.getContent(filter.value.toString())
@@ -69,7 +81,7 @@ class RecentViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = false
+ _saveState.value = true
_stateMessage.value = UiState.Success
}
.onFailure {
@@ -79,6 +91,22 @@ class RecentViewModel @Inject constructor(
}
}
+ fun postUnLike(pk: Int) {
+ viewModelScope.launch {
+ contentRepository.postUnlike(pk)
+ .onSuccess { response ->
+ Timber.tag("POST UNLIKE STATE SUCCESS")
+ Timber.d("response : $response")
+ _saveState.value = false
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
+ }
+ }
+ }
+
companion object {
const val RECENT_DATA_NULL_CODE = 100
private const val successTag = "GET_RECENT_CONTENT_SUCCESS"
diff --git a/app/src/main/res/layout/item_recent_content.xml b/app/src/main/res/layout/item_recent_content.xml
index 8c9cccc..39ca4c8 100644
--- a/app/src/main/res/layout/item_recent_content.xml
+++ b/app/src/main/res/layout/item_recent_content.xml
@@ -60,9 +60,9 @@
android:layout_marginTop="5dp"
android:layout_marginEnd="3dp"
android:background="@null"
- android:onClick="@{()->vm.postSave(data.content)}"
+ android:onClick="@{()->vm.onSaveBtnClick(data, vm.saveState)}"
android:padding="12dp"
- android:src="@{data.Likes.isEmpty() || vm.saveState ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
+ android:src="@{vm.saveState ? @drawable/ic_heart_fill : @drawable/ic_heart_empty}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
From cc669f284450878017cbee67cc2a09e8265cef73 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 21 Jul 2023 14:36:36 +0900
Subject: [PATCH 062/109] =?UTF-8?q?[FEAT/#33]=20=EC=9D=B8=EA=B8=B0?=
=?UTF-8?q?=EB=B7=B0=EC=97=90=EC=84=9C=20=EC=A2=8B=EC=95=84=EC=9A=94=20?=
=?UTF-8?q?=EC=B7=A8=EC=86=8C=ED=95=98=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=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
---
.../main/explore/popular/PopularFragment.kt | 1 +
.../main/explore/popular/PopularViewModel.kt | 38 ++++++++++++++++---
.../main/res/layout/item_popular_content.xml | 4 +-
3 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 2cfe530..f7625bf 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -86,6 +86,7 @@ class PopularFragment :
isInitialLoad = false
list = popularList
popularAdapter?.submitList(popularList)
+ viewModel.updateSaveState(popularList.flatMap { it.Likes })
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index aebaa3b..da165b6 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -31,14 +31,26 @@ class PopularViewModel @Inject constructor(
val filter = MutableLiveData("")
- init {
- _saveState.value = true
- }
-
fun setFilterValue(value: String) {
filter.value = value
}
+ fun updateSaveState(list: List) {
+ if (list.isEmpty()) {
+ _saveState.value = false
+ } else {
+ _saveState.value = true
+ }
+ }
+
+ fun onSaveBtnClick(data: ResponseGetContentDto, saveState: Boolean) {
+ if (saveState) {
+ postUnLike(data.content)
+ } else {
+ postSave(data.content)
+ }
+ }
+
fun getPopularData() {
viewModelScope.launch {
contentRepository.getContent(filter.value.toString())
@@ -69,7 +81,7 @@ class PopularViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = false
+ _saveState.value = true
_stateMessage.value = UiState.Success
}
.onFailure {
@@ -79,6 +91,22 @@ class PopularViewModel @Inject constructor(
}
}
+ fun postUnLike(pk: Int) {
+ viewModelScope.launch {
+ contentRepository.postUnlike(pk)
+ .onSuccess { response ->
+ Timber.tag("POST UNLIKE STATE SUCCESS")
+ Timber.d("response : $response")
+ _saveState.value = false
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
+ }
+ }
+ }
+
companion object {
const val POPULAR_DATA_NULL_CODE = 100
private const val successTag = "GET_POPULAR_CONTENT_SUCCESS"
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index eb6803f..31455d3 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -60,9 +60,9 @@
android:layout_marginTop="5dp"
android:layout_marginEnd="3dp"
android:background="@null"
- android:onClick="@{()->vm.postSave(data.content)}"
+ android:onClick="@{()->vm.onSaveBtnClick(data, vm.saveState)}"
android:padding="12dp"
- android:src="@{data.Likes.isEmpty() || vm.saveState ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
+ android:src="@{vm.saveState ? @drawable/ic_heart_fill : @drawable/ic_heart_empty}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
From 614bd49fc4b11556df3ec6fa3fa3eb200fd135b2 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 21 Jul 2023 14:54:30 +0900
Subject: [PATCH 063/109] =?UTF-8?q?[FEAT/#33]=20=EA=B2=80=EC=83=89?=
=?UTF-8?q?=EB=B7=B0=EC=97=90=EC=84=9C=20=EC=A2=8B=EC=95=84=EC=9A=94=20?=
=?UTF-8?q?=EC=B7=A8=EC=86=8C=ED=95=98=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=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
---
.../main/search/SearchActivity.kt | 4 +--
.../main/search/SearchViewModel.kt | 36 +++++++++++++++++--
.../main/res/layout/item_search_content.xml | 4 +--
3 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 9022800..c381877 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -51,10 +51,10 @@ class SearchActivity : BindingActivity(R.layout.activity_
}
private fun setupSearchActivityList() {
- viewModel.searchList.observe(this) {
- val searchList = viewModel.searchList.value
+ viewModel.searchList.observe(this) { searchList ->
searchAdapter?.submitList(searchList)
binding.tvSearchCount.text = searchList?.size.toString()
+ viewModel.updateSaveState(searchList.flatMap { it.Likes })
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index 70d9bf7..d1c6604 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -24,6 +24,7 @@ class SearchViewModel @Inject constructor(
private val _stateMessage = MutableLiveData()
val stateMessage: LiveData
get() = _stateMessage
+
private val _isFlowVisible = MutableLiveData()
val isFlowVisible: LiveData
get() = _isFlowVisible
@@ -35,7 +36,6 @@ class SearchViewModel @Inject constructor(
val key = MutableLiveData("")
init {
- _saveState.value = true
_isFlowVisible.value = false
}
@@ -43,6 +43,22 @@ class SearchViewModel @Inject constructor(
_isFlowVisible.value = true
}
+ fun updateSaveState(list: List) {
+ if (list.isEmpty()) {
+ _saveState.value = false
+ } else {
+ _saveState.value = true
+ }
+ }
+
+ fun onSaveBtnClick(data: ResponseGetSearchResultDto, saveState: Boolean) {
+ if (saveState) {
+ postUnLike(data.content)
+ } else {
+ postSave(data.content)
+ }
+ }
+
fun getSearchPostData() {
viewModelScope.launch {
contentRepository.getSearch(key.value.toString()).onSuccess { response ->
@@ -79,7 +95,7 @@ class SearchViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = false
+ _saveState.value = true
_stateMessage.value = UiState.Success
}
.onFailure {
@@ -89,6 +105,22 @@ class SearchViewModel @Inject constructor(
}
}
+ fun postUnLike(pk: Int) {
+ viewModelScope.launch {
+ contentRepository.postUnlike(pk)
+ .onSuccess { response ->
+ Timber.tag("POST UNLIKE STATE SUCCES뷰S")
+ Timber.d("response : $response")
+ _saveState.value = false
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
+ }
+ }
+ }
+
companion object {
const val SEARCH_NULL_CODE = 100
const val SEARCH_NO_POST_CODE = 404
diff --git a/app/src/main/res/layout/item_search_content.xml b/app/src/main/res/layout/item_search_content.xml
index 43430e3..c1739b2 100644
--- a/app/src/main/res/layout/item_search_content.xml
+++ b/app/src/main/res/layout/item_search_content.xml
@@ -62,9 +62,9 @@
android:layout_marginEnd="3dp"
android:background="@null"
android:contentDescription="@string/search_heart_contentdescription"
- android:onClick="@{()->vm.postSave(data.content)}"
+ android:onClick="@{()->vm.onSaveBtnClick(data, vm.saveState)}"
android:padding="12dp"
- android:src="@{data.Likes.isEmpty() || vm.saveState ? @drawable/ic_heart_empty : @drawable/ic_heart_fill}"
+ android:src="@{vm.saveState ? @drawable/ic_heart_fill : @drawable/ic_heart_empty}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
From 8a2a8977aa7e8acc1fbc2f51f4dbfda27abeab68 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 22 Jul 2023 13:10:13 +0900
Subject: [PATCH 064/109] =?UTF-8?q?[DEL/#33]=20=EC=9D=B8=EA=B8=B0=EB=B7=B0?=
=?UTF-8?q?=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/res/layout/fragment_popular.xml | 8 --------
1 file changed, 8 deletions(-)
diff --git a/app/src/main/res/layout/fragment_popular.xml b/app/src/main/res/layout/fragment_popular.xml
index d215b05..c7aa42e 100644
--- a/app/src/main/res/layout/fragment_popular.xml
+++ b/app/src/main/res/layout/fragment_popular.xml
@@ -5,14 +5,6 @@
-
-
-
-
From 2102376489c88ef95f8973331a75704e437db474 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 22 Jul 2023 13:10:38 +0900
Subject: [PATCH 065/109] =?UTF-8?q?[DEL/#33]=20=EC=B5=9C=EC=8B=A0=EB=B7=B0?=
=?UTF-8?q?=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/res/layout/fragment_recent.xml | 8 --------
1 file changed, 8 deletions(-)
diff --git a/app/src/main/res/layout/fragment_recent.xml b/app/src/main/res/layout/fragment_recent.xml
index d2694a1..9ad6995 100644
--- a/app/src/main/res/layout/fragment_recent.xml
+++ b/app/src/main/res/layout/fragment_recent.xml
@@ -5,14 +5,6 @@
-
-
-
-
From 1d61a5e1c57bc91ca5167793ea752d7b7b86329a Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 22 Jul 2023 13:14:29 +0900
Subject: [PATCH 066/109] =?UTF-8?q?[DEL/#33]=20fragment=EC=97=90=20?=
=?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/explore/popular/PopularFragment.kt | 1 -
.../keyneez/presentation/main/explore/recent/RecentFragment.kt | 1 -
2 files changed, 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index f7625bf..064f86b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -20,7 +20,6 @@ class PopularFragment :
private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- binding.vm = viewModel
initPopularAdapter()
setupPopularActivityList()
initCategoryBtnListener()
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 399db3c..35aaa9b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -20,7 +20,6 @@ class RecentFragment : BindingFragment(R.layout.fragment_
private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- binding.vm = viewModel
initRecentAdapter()
setupRecentActivityList()
initCategoryBtnListener()
From ff165784e0d241d49c4d7f22cdef7d2d4631aa8f Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 22 Jul 2023 13:25:11 +0900
Subject: [PATCH 067/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EC=96=B4?=
=?UTF-8?q?=EA=B0=80=20=EC=9E=88=EC=9D=84=20=EB=95=8C=EB=A7=8C=20=EA=B2=80?=
=?UTF-8?q?=EC=83=89=EB=B2=84=ED=8A=BC=20=EB=88=8C=EB=9F=AC=EC=A7=80?=
=?UTF-8?q?=EA=B2=8C=20=ED=95=98=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/search/SearchActivity.kt | 9 ++++++---
app/src/main/res/values/strings.xml | 2 +-
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index c381877..43f98ac 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -71,9 +71,12 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun initSearchBtnClickListener() {
binding.btnSearch.setOnSingleClickListener {
- viewModel.updateCount()
- viewModel.getSearchPostData()
- hideKeyboard()
+ val searchKeyword = binding.etSearchContent.text.toString().trim()
+ if (searchKeyword.isNotEmpty()) {
+ viewModel.updateCount()
+ viewModel.getSearchPostData()
+ hideKeyboard()
+ }
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3891243..3b0bd89 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -61,7 +61,7 @@
검색결과가 없습니다.
네트워크 연결에 실패했습니다.
-
+ 검색을 완료해 주세요.
Hello blank fragment
From a4d00cd53e1831b29cc8868ef5fc78fa780b9d41 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 22 Jul 2023 13:25:31 +0900
Subject: [PATCH 068/109] =?UTF-8?q?[MOD/#33]=20=EB=A6=B0=ED=8A=B8=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
---
app/src/main/res/values/strings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3b0bd89..ee7de2f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -61,7 +61,7 @@
검색결과가 없습니다.
네트워크 연결에 실패했습니다.
- 검색을 완료해 주세요.
+ 검색을 완료해 주세요.
Hello blank fragment
From b8b85fb8978984a16e7243a002a46b67ea82f09b Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 23 Jul 2023 00:15:54 +0900
Subject: [PATCH 069/109] =?UTF-8?q?[MOD/#33]=20=EB=82=A0=EC=A7=9C=20?=
=?UTF-8?q?=ED=91=9C=EC=8B=9C=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/util/binding/BindingAdapter.kt | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt b/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
index 37fc0e5..f9b1e11 100644
--- a/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
@@ -44,15 +44,15 @@ object BindingAdapter {
@JvmStatic
@BindingAdapter("putStartDate", "putEndDate")
fun TextView.setDuration(start: String?, end: String?) {
- if (start == null || end == null) {
- this.text = "2023 -"
- return
- }
-
- val tempStart = "${end.substring(4, 6)}.${end.substring(6, 8)}"
- val tempEnd = "${end.substring(4, 6)}.${end.substring(6, 8)}"
+ if (start?.substring(0, 4) == "9999") {
+ this.text = "상시"
+ } else {
+ val tempStart =
+ "${start?.substring(0, 4)}.${start?.substring(4, 6)}.${start?.substring(6, 8)}"
+ val tempEnd = "${end?.substring(4, 6)}.${end?.substring(6, 8)}"
- this.text = "$tempStart - $tempEnd"
+ this.text = "$tempStart - $tempEnd"
+ }
}
@JvmStatic
From 9b561b940b36e04e2118bc315d11f10ebf8b5aee Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 23 Jul 2023 00:28:45 +0900
Subject: [PATCH 070/109] =?UTF-8?q?[MOD/#33]=20=EB=82=A0=EC=A7=9C=20?=
=?UTF-8?q?=ED=91=9C=EC=8B=9C=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=952?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/release/keyneez/util/binding/BindingAdapter.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt b/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
index f9b1e11..3d1c495 100644
--- a/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
@@ -44,7 +44,7 @@ object BindingAdapter {
@JvmStatic
@BindingAdapter("putStartDate", "putEndDate")
fun TextView.setDuration(start: String?, end: String?) {
- if (start?.substring(0, 4) == "9999") {
+ if (start?.substring(0, 4) == "9999" && end?.substring(0, 4) == "9999") {
this.text = "상시"
} else {
val tempStart =
From 912750fd1ded38f3e800fd6d29055610fd9dd35a Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 23 Jul 2023 17:37:49 +0900
Subject: [PATCH 071/109] =?UTF-8?q?[DEL/#33]=20=EB=B6=88=ED=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/release/keyneez/presentation/main/like/LikeFragment.kt | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 37ac082..c550f78 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -123,7 +123,6 @@ class LikeFragment :
binding.tvLikeNum.text = getString(R.string.like_select, selectedCount)
Log.d("1", "true일 때")
} else {
- // 서버 통신 때문에 제대로 출력 안되는 확률도 있기에 서버통신 되고 다시 살펴 보기
binding.tvLikeNum.text = getString(R.string.like_num, likeList.size)
Log.d("1", "false일 때")
}
From 7dec630701cb53ac5132cba9cb95278dbd7ae466 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 24 Jul 2023 14:14:21 +0900
Subject: [PATCH 072/109] =?UTF-8?q?[ADD/#33]=20=ED=86=A0=EC=8A=A4=ED=8A=B8?=
=?UTF-8?q?=20=EA=B4=80=EB=A0=A8=20string=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/search/SearchActivity.kt | 4 ++++
app/src/main/res/values/strings.xml | 1 +
2 files changed, 5 insertions(+)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 43f98ac..9d7f28c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.KeyEvent
import android.view.inputmethod.EditorInfo
import android.widget.TextView
+import android.widget.Toast
import androidx.activity.viewModels
import com.release.keyneez.R
import com.release.keyneez.databinding.ActivitySearchBinding
@@ -72,6 +73,9 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun initSearchBtnClickListener() {
binding.btnSearch.setOnSingleClickListener {
val searchKeyword = binding.etSearchContent.text.toString().trim()
+ if(searchKeyword.isEmpty()){
+ Toast.makeText(this, "", Toast.LENGTH_SHORT).show()
+ }
if (searchKeyword.isNotEmpty()) {
viewModel.updateCount()
viewModel.getSearchPostData()
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ee7de2f..0795df7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -31,6 +31,7 @@
리사이클러뷰
하트
콘텐츠
+ 검색어를 입력해 주세요.
탐색하기
From b488b1bf67f967d6944dc5cefb33f5678b2ec03a Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 24 Jul 2023 14:16:26 +0900
Subject: [PATCH 073/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EC=96=B4?=
=?UTF-8?q?=EA=B0=80=20=EC=97=86=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20toast=20?=
=?UTF-8?q?=EB=9D=84=EC=9B=8C=20=EC=A3=BC=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/search/SearchActivity.kt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 9d7f28c..1f1ece7 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -73,8 +73,8 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun initSearchBtnClickListener() {
binding.btnSearch.setOnSingleClickListener {
val searchKeyword = binding.etSearchContent.text.toString().trim()
- if(searchKeyword.isEmpty()){
- Toast.makeText(this, "", Toast.LENGTH_SHORT).show()
+ if (searchKeyword.isEmpty()) {
+ Toast.makeText(this, R.string.search_toast, Toast.LENGTH_SHORT).show()
}
if (searchKeyword.isNotEmpty()) {
viewModel.updateCount()
From 21db91c6c816a5f629f0e0f190fc85872c317010 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 24 Jul 2023 21:52:27 +0900
Subject: [PATCH 074/109] =?UTF-8?q?[ADD/#33]=20=EC=9D=B8=EA=B8=B0=20api=20?=
=?UTF-8?q?=EC=84=9C=EB=B2=84=20=EA=B8=B0=EC=B4=88=EC=84=B8=ED=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entity/response/ResponseGetPopularDto.kt | 30 +++++++++++++++++++
...tContentDto.kt => ResponseGetRecentDto.kt} | 2 +-
.../data/repository/ContentRepository.kt | 6 ++--
.../data/repository/ContentRepositoryImpl.kt | 10 +++++--
.../keyneez/data/service/ContentService.kt | 8 +++--
.../keyneez/data/source/ContentDataSource.kt | 11 +++++--
.../main/explore/popular/PopularAdapter.kt | 10 +++----
.../main/explore/popular/PopularFragment.kt | 4 +--
.../main/explore/popular/PopularViewModel.kt | 10 +++----
.../main/explore/recent/RecentAdapter.kt | 10 +++----
.../main/explore/recent/RecentFragment.kt | 4 +--
.../main/explore/recent/RecentViewModel.kt | 10 +++----
.../main/res/layout/item_popular_content.xml | 2 +-
.../main/res/layout/item_recent_content.xml | 2 +-
14 files changed, 82 insertions(+), 37 deletions(-)
create mode 100644 app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
rename app/src/main/java/com/release/keyneez/data/entity/response/{ResponseGetContentDto.kt => ResponseGetRecentDto.kt} (96%)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
new file mode 100644
index 0000000..701d469
--- /dev/null
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
@@ -0,0 +1,30 @@
+package com.release.keyneez.data.entity.response
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+data class ResponseGetPopularDto(
+ @SerialName("content_pk") val content: Int,
+ @SerialName("title") val title: String,
+ @SerialName("category") val category: String,
+ @SerialName("tag") val tag: String,
+ @SerialName("link") val link: String,
+ @SerialName("img") val img: String?,
+ @SerialName("place") val place: String,
+ @SerialName("introduction") val introduction: String,
+ @SerialName("inquiry") val inquiry: String?,
+ @SerialName("price") val price: String?,
+ @SerialName("benefit") val benefit: String?,
+ @SerialName("start_at") val start: String?,
+ @SerialName("end_at") val end: String?,
+ @SerialName("created_at") val created: String?,
+ @SerialName("updated_at") val updated: String?,
+ val Likes: List
+) {
+ @Serializable
+ data class Liked(
+ @SerialName("liked_pk") val liked: Int,
+ @SerialName("user") val user: Int,
+ @SerialName("content") val content: Int
+ )
+}
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
similarity index 96%
rename from app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
rename to app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
index bf8554b..0edd1ff 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetContentDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
@@ -4,7 +4,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
-data class ResponseGetContentDto(
+data class ResponseGetRecentDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
@SerialName("category") val category: String,
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
index 7c70402..fea2694 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
@@ -1,14 +1,16 @@
package com.release.keyneez.data.repository
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
interface ContentRepository {
- suspend fun getContent(filter: String): Result>>
+ suspend fun getRecent(filter: String): Result>>
+ suspend fun getPopular(filter: String): Result>>
suspend fun getLike(filter: String): Result>>
suspend fun getSearch(keyword: String): Result>>
suspend fun postLike(pk: Int): Result>
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
index adfc492..71a70fd 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
@@ -1,7 +1,8 @@
package com.release.keyneez.data.repository
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
@@ -12,8 +13,11 @@ class ContentRepositoryImpl @Inject constructor(
private val contentDataSource: ContentDataSource
) : ContentRepository {
- override suspend fun getContent(filter: String): Result>> =
- kotlin.runCatching { contentDataSource.getContent(filter) }
+ override suspend fun getRecent(filter: String): Result>> =
+ kotlin.runCatching { contentDataSource.getRecent(filter) }
+
+ override suspend fun getPopular(filter: String): Result>> =
+ kotlin.runCatching { contentDataSource.getPopular(filter) }
override suspend fun getLike(filter: String): Result>> =
kotlin.runCatching { contentDataSource.getLike(filter) }
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 8bce86d..fb77359 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -1,7 +1,8 @@
package com.release.keyneez.data.service
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
@@ -15,7 +16,10 @@ interface ContentService {
suspend fun getLike(@Query("filter") filter: String): BaseResponse>
@GET("contents/")
- suspend fun getContent(@Query("filter") filter: String): BaseResponse>
+ suspend fun getRecent(@Query("filter") filter: String): BaseResponse>
+
+ @GET("contents/")
+ suspend fun getPopular(@Query("filter") filter: String): BaseResponse>
@GET("contents/search")
suspend fun getSearch(
diff --git a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
index 95f0ac9..68d5a37 100644
--- a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
+++ b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
@@ -1,7 +1,8 @@
package com.release.keyneez.data.source
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
import com.release.keyneez.data.entity.response.ResponseGetLikeDto
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.data.entity.response.ResponsePostLikeDto
import com.release.keyneez.data.entity.response.wrapper.BaseResponse
@@ -11,8 +12,11 @@ import javax.inject.Inject
class ContentDataSource @Inject constructor(
private val contentService: ContentService
) {
- suspend fun getContent(filter: String): BaseResponse> =
- contentService.getContent(filter)
+ suspend fun getRecent(filter: String): BaseResponse> =
+ contentService.getRecent(filter)
+
+ suspend fun getPopular(filter: String): BaseResponse> =
+ contentService.getPopular(filter)
suspend fun getLike(filter: String): BaseResponse> =
contentService.getLike(filter)
@@ -22,6 +26,7 @@ class ContentDataSource @Inject constructor(
suspend fun postLike(pk: Int): BaseResponse =
contentService.postLike(pk)
+
suspend fun postUnlike(pk: Int): BaseResponse =
contentService.postUnlike(pk)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index bdfbe96..bd214dd 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -4,16 +4,16 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.databinding.ItemPopularContentBinding
import com.release.keyneez.util.DiffCallback
-class PopularAdapter : ListAdapter(diffUtil) {
- var data = listOf()
+class PopularAdapter : ListAdapter(diffUtil) {
+ var data = listOf()
class PopularViewHolder(private val binding: ItemPopularContentBinding) :
RecyclerView.ViewHolder(binding.root) {
- fun setPopularContent(popular: ResponseGetContentDto) {
+ fun setPopularContent(popular: ResponseGetRecentDto) {
binding.data = popular
// 여기도 누르면 상세뷰로 가는 코드짜기
}
@@ -35,7 +35,7 @@ class PopularAdapter : ListAdapter(
+ private val diffUtil = DiffCallback(
onItemsTheSame = { old, new -> old.content == new.content },
onContentsTheSame = { old, new -> old == new }
)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 064f86b..11cc725 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -6,7 +6,7 @@ import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.databinding.FragmentPopularBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -15,7 +15,7 @@ import dagger.hilt.android.AndroidEntryPoint
class PopularFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_popular) {
private val viewModel: PopularViewModel by viewModels()
- lateinit var list: List
+ lateinit var list: List
private var popularAdapter: PopularAdapter? = null
private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index da165b6..3763f17 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.repository.ContentRepository
import com.release.keyneez.util.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -17,8 +17,8 @@ import javax.inject.Inject
class PopularViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _popularList = MutableLiveData>(mutableListOf())
- val popularList: LiveData>
+ private val _popularList = MutableLiveData>(mutableListOf())
+ val popularList: LiveData>
get() = _popularList
private val _stateMessage = MutableLiveData()
@@ -35,7 +35,7 @@ class PopularViewModel @Inject constructor(
filter.value = value
}
- fun updateSaveState(list: List) {
+ fun updateSaveState(list: List) {
if (list.isEmpty()) {
_saveState.value = false
} else {
@@ -43,7 +43,7 @@ class PopularViewModel @Inject constructor(
}
}
- fun onSaveBtnClick(data: ResponseGetContentDto, saveState: Boolean) {
+ fun onSaveBtnClick(data: ResponseGetRecentDto, saveState: Boolean) {
if (saveState) {
postUnLike(data.content)
} else {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index a6f678e..27c4001 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -4,12 +4,12 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.databinding.ItemRecentContentBinding
import com.release.keyneez.util.DiffCallback
-class RecentAdapter : ListAdapter(diffUtil) {
- var data = listOf()
+class RecentAdapter : ListAdapter(diffUtil) {
+ var data = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return RecentViewHolder(
ItemRecentContentBinding.inflate(
@@ -26,14 +26,14 @@ class RecentAdapter : ListAdapter(
+ private val diffUtil = DiffCallback(
onItemsTheSame = { old, new -> old.content == new.content },
onContentsTheSame = { old, new -> old == new }
)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 35aaa9b..b63e90a 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -7,7 +7,7 @@ import android.widget.TextView
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
import com.release.keyneez.R
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.databinding.FragmentRecentBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -16,7 +16,7 @@ import dagger.hilt.android.AndroidEntryPoint
class RecentFragment : BindingFragment(R.layout.fragment_recent) {
private val viewModel: RecentViewModel by viewModels()
private var recentAdapter: RecentAdapter? = null
- lateinit var list: List
+ lateinit var list: List
private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 0e2a5db..454b5a5 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.release.keyneez.data.entity.response.ResponseGetContentDto
+import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.repository.ContentRepository
import com.release.keyneez.util.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -17,8 +17,8 @@ import javax.inject.Inject
class RecentViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _recentList = MutableLiveData>(mutableListOf())
- val recentList: LiveData>
+ private val _recentList = MutableLiveData>(mutableListOf())
+ val recentList: LiveData>
get() = _recentList
private val _stateMessage = MutableLiveData()
@@ -35,7 +35,7 @@ class RecentViewModel @Inject constructor(
filter.value = value
}
- fun updateSaveState(list: List) {
+ fun updateSaveState(list: List) {
if (list.isEmpty()) {
_saveState.value = false
} else {
@@ -43,7 +43,7 @@ class RecentViewModel @Inject constructor(
}
}
- fun onSaveBtnClick(data: ResponseGetContentDto, saveState: Boolean) {
+ fun onSaveBtnClick(data: ResponseGetRecentDto, saveState: Boolean) {
if (saveState) {
postUnLike(data.content)
} else {
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index 31455d3..b6abbd6 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -7,7 +7,7 @@
+ type="com.release.keyneez.data.entity.response.ResponseGetRecentDto" />
+ type="com.release.keyneez.data.entity.response.ResponseGetRecentDto" />
Date: Mon, 24 Jul 2023 22:00:45 +0900
Subject: [PATCH 075/109] =?UTF-8?q?[MOD/#33]=20=EC=9D=B8=EA=B8=B0=20?=
=?UTF-8?q?=EC=84=9C=EB=B2=84=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/release/keyneez/data/service/ContentService.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index fb77359..560e94a 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -18,7 +18,7 @@ interface ContentService {
@GET("contents/")
suspend fun getRecent(@Query("filter") filter: String): BaseResponse>
- @GET("contents/")
+ @GET("contents/popularity")
suspend fun getPopular(@Query("filter") filter: String): BaseResponse>
@GET("contents/search")
From 6598496dd5522e7bdd122eab5f8a6925ba8fde93 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 24 Jul 2023 22:04:22 +0900
Subject: [PATCH 076/109] =?UTF-8?q?[MOD/#33]=20=EC=9D=B8=EA=B8=B0=20api=20?=
=?UTF-8?q?=EC=B6=94=EA=B0=80=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularAdapter.kt | 10 +++++-----
.../main/explore/popular/PopularFragment.kt | 4 ++--
.../main/explore/popular/PopularViewModel.kt | 9 +++++----
app/src/main/res/layout/item_popular_content.xml | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index bd214dd..8ca8cd2 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -4,16 +4,16 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
-import com.release.keyneez.data.entity.response.ResponseGetRecentDto
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.databinding.ItemPopularContentBinding
import com.release.keyneez.util.DiffCallback
-class PopularAdapter : ListAdapter(diffUtil) {
- var data = listOf()
+class PopularAdapter : ListAdapter(diffUtil) {
+ var data = listOf()
class PopularViewHolder(private val binding: ItemPopularContentBinding) :
RecyclerView.ViewHolder(binding.root) {
- fun setPopularContent(popular: ResponseGetRecentDto) {
+ fun setPopularContent(popular: ResponseGetPopularDto) {
binding.data = popular
// 여기도 누르면 상세뷰로 가는 코드짜기
}
@@ -35,7 +35,7 @@ class PopularAdapter : ListAdapter(
+ private val diffUtil = DiffCallback(
onItemsTheSame = { old, new -> old.content == new.content },
onContentsTheSame = { old, new -> old == new }
)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 11cc725..094f19b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -6,7 +6,7 @@ import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
-import com.release.keyneez.data.entity.response.ResponseGetRecentDto
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.databinding.FragmentPopularBinding
import com.release.keyneez.util.binding.BindingFragment
import dagger.hilt.android.AndroidEntryPoint
@@ -15,7 +15,7 @@ import dagger.hilt.android.AndroidEntryPoint
class PopularFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_popular) {
private val viewModel: PopularViewModel by viewModels()
- lateinit var list: List
+ lateinit var list: List
private var popularAdapter: PopularAdapter? = null
private var isInitialLoad = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 3763f17..5c2eefe 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -4,6 +4,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
+import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.repository.ContentRepository
import com.release.keyneez.util.UiState
@@ -17,8 +18,8 @@ import javax.inject.Inject
class PopularViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _popularList = MutableLiveData>(mutableListOf())
- val popularList: LiveData>
+ private val _popularList = MutableLiveData>(mutableListOf())
+ val popularList: LiveData>
get() = _popularList
private val _stateMessage = MutableLiveData()
@@ -35,7 +36,7 @@ class PopularViewModel @Inject constructor(
filter.value = value
}
- fun updateSaveState(list: List) {
+ fun updateSaveState(list: List) {
if (list.isEmpty()) {
_saveState.value = false
} else {
@@ -53,7 +54,7 @@ class PopularViewModel @Inject constructor(
fun getPopularData() {
viewModelScope.launch {
- contentRepository.getContent(filter.value.toString())
+ contentRepository.getPopular(filter.value.toString())
.onSuccess { response ->
Timber.tag(successTag).d("response : $response")
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index b6abbd6..dbce1a3 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -7,7 +7,7 @@
+ type="com.release.keyneez.data.entity.response.ResponseGetPopularDto" />
Date: Mon, 24 Jul 2023 22:11:46 +0900
Subject: [PATCH 077/109] =?UTF-8?q?[MOD/#33]=20=EC=BD=94=EB=93=9C=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
---
.../presentation/main/explore/popular/PopularViewModel.kt | 3 +--
.../presentation/main/explore/recent/RecentViewModel.kt | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 5c2eefe..719f51d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -5,7 +5,6 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
-import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.data.repository.ContentRepository
import com.release.keyneez.util.UiState
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -44,7 +43,7 @@ class PopularViewModel @Inject constructor(
}
}
- fun onSaveBtnClick(data: ResponseGetRecentDto, saveState: Boolean) {
+ fun onSaveBtnClick(data: ResponseGetPopularDto, saveState: Boolean) {
if (saveState) {
postUnLike(data.content)
} else {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 454b5a5..b160e18 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -53,7 +53,7 @@ class RecentViewModel @Inject constructor(
fun getRecentData() {
viewModelScope.launch {
- contentRepository.getContent(filter.value.toString())
+ contentRepository.getRecent(filter.value.toString())
.onSuccess { response ->
Timber.tag(successTag).d("response : $response")
From 2643a894c2398ada02f5a665bccf4c450b7f5739 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 24 Jul 2023 22:35:21 +0900
Subject: [PATCH 078/109] =?UTF-8?q?[MOD/#33]=20=EC=BD=94=EB=93=9C=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
---
.../keyneez/data/entity/response/ResponseGetPopularDto.kt | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
index 701d469..3198a37 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
@@ -3,6 +3,7 @@ package com.release.keyneez.data.entity.response
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
+@Serializable
data class ResponseGetPopularDto(
@SerialName("content_pk") val content: Int,
@SerialName("title") val title: String,
From 9ddb9b6c63d50c4a774d12028a11a2af3360c86f Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Tue, 25 Jul 2023 16:32:44 +0900
Subject: [PATCH 079/109] =?UTF-8?q?[MOD/#33]=20=EC=8A=A4=EB=82=B5=EB=B0=94?=
=?UTF-8?q?=EB=A5=BC=20=ED=86=A0=EC=8A=A4=ED=8A=B8=EB=A1=9C=20=ED=86=B5?=
=?UTF-8?q?=EC=9D=BC=ED=95=98=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/search/SearchActivity.kt | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 1f1ece7..308f157 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -12,7 +12,6 @@ import com.release.keyneez.util.UiState
import com.release.keyneez.util.binding.BindingActivity
import com.release.keyneez.util.extension.hideKeyboard
import com.release.keyneez.util.extension.setOnSingleClickListener
-import com.release.keyneez.util.extension.showSnackbar
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
@@ -33,15 +32,14 @@ class SearchActivity : BindingActivity(R.layout.activity_
viewModel.stateMessage.observe(this) {
when (it) {
is UiState.Success -> setupSearchActivityList()
- is UiState.Failure -> showSnackbar(
- binding.root,
- getString(R.string.msg_search_null)
- )
+ is UiState.Failure ->
+ Toast.makeText(this, R.string.msg_search_null, Toast.LENGTH_SHORT).show()
- is UiState.Error -> showSnackbar(
- binding.root,
- getString(R.string.msg_server_error)
- )
+ is UiState.Error -> Toast.makeText(
+ this,
+ R.string.msg_server_error,
+ Toast.LENGTH_SHORT
+ ).show()
}
}
}
From df9cd7f0a017cda56919502c362ffe120b039206 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 27 Jul 2023 16:22:02 +0900
Subject: [PATCH 080/109] =?UTF-8?q?[MOD/#33]=20=EC=9D=B8=EA=B8=B0=EB=B7=B0?=
=?UTF-8?q?=20=EC=A2=8B=EC=95=84=EC=9A=94=EB=B6=80=EB=B6=84,=20=EB=B7=B0?=
=?UTF-8?q?=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=BD=94=EB=93=9C=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entity/response/ResponseGetPopularDto.kt | 2 +-
.../main/explore/popular/PopularAdapter.kt | 32 +++++++++++++++----
.../main/explore/popular/PopularFragment.kt | 18 ++++++++---
.../main/explore/popular/PopularViewModel.kt | 25 +++++++--------
.../main/explore/recent/RecentFragment.kt | 14 ++++----
.../main/res/layout/item_popular_content.xml | 8 ++---
6 files changed, 60 insertions(+), 39 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
index 3198a37..38dfd2c 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
@@ -20,7 +20,7 @@ data class ResponseGetPopularDto(
@SerialName("end_at") val end: String?,
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
- val Likes: List
+ var Likes: List
) {
@Serializable
data class Liked(
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index 8ca8cd2..80e4816 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -7,26 +7,44 @@ import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
import com.release.keyneez.databinding.ItemPopularContentBinding
import com.release.keyneez.util.DiffCallback
+import com.release.keyneez.util.extension.setOnSingleClickListener
-class PopularAdapter : ListAdapter(diffUtil) {
+class PopularAdapter(
+ private val clickLike: (Int, Boolean) -> Unit
+) : ListAdapter(diffUtil) {
var data = listOf()
- class PopularViewHolder(private val binding: ItemPopularContentBinding) :
+ class PopularViewHolder(
+ private val binding: ItemPopularContentBinding,
+ private val clickLike: (Int, Boolean) -> Unit
+ ) :
RecyclerView.ViewHolder(binding.root) {
fun setPopularContent(popular: ResponseGetPopularDto) {
binding.data = popular
+ binding.btnPopularLiked.setOnSingleClickListener {
+ clickLike(popular.content, popular.Likes.isNotEmpty())
+ if (popular.Likes.isNotEmpty()) {
+ popular.Likes = listOf()
+ // TODO : 객체 없애는 로직
+ return@setOnSingleClickListener
+ }
+ popular.Likes = listOf(ResponseGetPopularDto.Liked(0, 0, 0))
+ // TODO: 객체 집어 넣어주는 로직
+ }
// 여기도 누르면 상세뷰로 가는 코드짜기
}
}
override fun getItemCount(): Int = data.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+ val binding = ItemPopularContentBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
return PopularViewHolder(
- ItemPopularContentBinding.inflate(
- LayoutInflater.from(parent.context),
- parent,
- false
- )
+ binding,
+ clickLike
)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 094f19b..4aa9f14 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -23,6 +23,7 @@ class PopularFragment :
initPopularAdapter()
setupPopularActivityList()
initCategoryBtnListener()
+ initFirstBtnListener()
}
override fun onAttach(context: Context) {
@@ -32,12 +33,11 @@ class PopularFragment :
override fun onResume() {
super.onResume()
if (!isInitialLoad) {
- initCategoryBtnListener()
+ initFirstBtnListener()
}
}
private fun initCategoryBtnListener() {
- selectOnlyOneButton(binding.tvExplorePopularAll)
binding.tvExplorePopularAll.setOnClickListener {
selectOnlyOneButton(binding.tvExplorePopularAll)
}
@@ -52,6 +52,10 @@ class PopularFragment :
}
}
+ private fun initFirstBtnListener() {
+ selectOnlyOneButton(binding.tvExplorePopularAll)
+ }
+
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvExplorePopularAll.isSelected = false
binding.tvExplorePopularCareer.isSelected = false
@@ -60,7 +64,10 @@ class PopularFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (isInitialLoad == false) {
+ if (isInitialLoad) {
+ viewModel.setFilterValue("")
+ viewModel.getPopularData()
+ } else {
if (filterValue != binding.tvExplorePopularAll.text.toString()) {
viewModel.setFilterValue(filterValue)
viewModel.getPopularData()
@@ -72,7 +79,9 @@ class PopularFragment :
}
private fun initPopularAdapter() {
- popularAdapter = PopularAdapter()
+ popularAdapter = PopularAdapter(
+ clickLike = viewModel::clickLike
+ )
binding.rvExplorePopular.adapter = popularAdapter
val animator = binding.rvExplorePopular.itemAnimator
if (animator is SimpleItemAnimator) {
@@ -85,7 +94,6 @@ class PopularFragment :
isInitialLoad = false
list = popularList
popularAdapter?.submitList(popularList)
- viewModel.updateSaveState(popularList.flatMap { it.Likes })
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 719f51d..370da20 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -17,7 +17,7 @@ import javax.inject.Inject
class PopularViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _popularList = MutableLiveData>(mutableListOf())
+ private val _popularList = MutableLiveData>()
val popularList: LiveData>
get() = _popularList
@@ -25,8 +25,8 @@ class PopularViewModel @Inject constructor(
val stateMessage: LiveData
get() = _stateMessage
- private val _saveState = MutableLiveData()
- val saveState: LiveData
+ private val _saveState = MutableLiveData>()
+ val saveState: LiveData>
get() = _saveState
val filter = MutableLiveData("")
@@ -35,14 +35,6 @@ class PopularViewModel @Inject constructor(
filter.value = value
}
- fun updateSaveState(list: List) {
- if (list.isEmpty()) {
- _saveState.value = false
- } else {
- _saveState.value = true
- }
- }
-
fun onSaveBtnClick(data: ResponseGetPopularDto, saveState: Boolean) {
if (saveState) {
postUnLike(data.content)
@@ -74,6 +66,15 @@ class PopularViewModel @Inject constructor(
}
}
+ fun clickLike(index: Int, isSelected: Boolean) {
+ if (isSelected) {
+ postUnLike(index)
+ return
+ }
+
+ postSave(index)
+ }
+
fun postSave(pk: Int) {
viewModelScope.launch {
contentRepository.postLike(pk).onSuccess { response ->
@@ -81,7 +82,6 @@ class PopularViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = true
_stateMessage.value = UiState.Success
}
.onFailure {
@@ -97,7 +97,6 @@ class PopularViewModel @Inject constructor(
.onSuccess { response ->
Timber.tag("POST UNLIKE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = false
_stateMessage.value = UiState.Success
}
.onFailure {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index b63e90a..30ca52d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -60,14 +60,12 @@ class RecentFragment : BindingFragment(R.layout.fragment_
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (isInitialLoad == false) {
- if (filterValue != binding.tvExploreRecentAll.text.toString()) {
- viewModel.setFilterValue(filterValue)
- viewModel.getRecentData()
- } else {
- viewModel.setFilterValue("")
- viewModel.getRecentData()
- }
+ if (filterValue != binding.tvExploreRecentAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
+ viewModel.getRecentData()
+ } else {
+ viewModel.setFilterValue("")
+ viewModel.getRecentData()
}
}
diff --git a/app/src/main/res/layout/item_popular_content.xml b/app/src/main/res/layout/item_popular_content.xml
index dbce1a3..9d59415 100644
--- a/app/src/main/res/layout/item_popular_content.xml
+++ b/app/src/main/res/layout/item_popular_content.xml
@@ -10,8 +10,8 @@
type="com.release.keyneez.data.entity.response.ResponseGetPopularDto" />
+ name="index"
+ type="Integer" />
@@ -54,15 +54,13 @@
From e80adde1f28796109a858185bfa777a08e8a8501 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 27 Jul 2023 16:51:51 +0900
Subject: [PATCH 081/109] =?UTF-8?q?[MOD/#33]=20=EC=B5=9C=EC=8B=A0=EB=B7=B0?=
=?UTF-8?q?=20=EC=A2=8B=EC=95=84=EC=9A=94=EB=B6=80=EB=B6=84,=20=EB=B7=B0?=
=?UTF-8?q?=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=BD=94=EB=93=9C=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../entity/response/ResponseGetRecentDto.kt | 2 +-
.../main/explore/popular/PopularFragment.kt | 3 +-
.../main/explore/popular/PopularViewModel.kt | 9 +---
.../main/explore/recent/RecentAdapter.kt | 45 +++++++++++++------
.../main/explore/recent/RecentFragment.kt | 26 +++++++----
.../main/explore/recent/RecentViewModel.kt | 26 ++++-------
.../main/res/layout/item_recent_content.xml | 8 ++--
7 files changed, 66 insertions(+), 53 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
index 0edd1ff..1e76fe0 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
@@ -20,7 +20,7 @@ data class ResponseGetRecentDto(
@SerialName("end_at") val end: String?,
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
- val Likes: List
+ var Likes: List
) {
@Serializable
data class Liked(
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 4aa9f14..415fed0 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -23,6 +23,7 @@ class PopularFragment :
initPopularAdapter()
setupPopularActivityList()
initCategoryBtnListener()
+ // isInitialLoad가 false이든 아니든 기본적으로 호출
initFirstBtnListener()
}
@@ -33,7 +34,7 @@ class PopularFragment :
override fun onResume() {
super.onResume()
if (!isInitialLoad) {
- initFirstBtnListener()
+ initCategoryBtnListener()
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 370da20..7dde81a 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -35,14 +35,6 @@ class PopularViewModel @Inject constructor(
filter.value = value
}
- fun onSaveBtnClick(data: ResponseGetPopularDto, saveState: Boolean) {
- if (saveState) {
- postUnLike(data.content)
- } else {
- postSave(data.content)
- }
- }
-
fun getPopularData() {
viewModelScope.launch {
contentRepository.getPopular(filter.value.toString())
@@ -68,6 +60,7 @@ class PopularViewModel @Inject constructor(
fun clickLike(index: Int, isSelected: Boolean) {
if (isSelected) {
+ postUnLike(index)
postUnLike(index)
return
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index 27c4001..01973ac 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -7,16 +7,20 @@ import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
import com.release.keyneez.databinding.ItemRecentContentBinding
import com.release.keyneez.util.DiffCallback
+import com.release.keyneez.util.extension.setOnSingleClickListener
-class RecentAdapter : ListAdapter(diffUtil) {
+class RecentAdapter(private val clickLike: (Int, Boolean) -> Unit) :
+ ListAdapter(diffUtil) {
var data = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
- return RecentViewHolder(
- ItemRecentContentBinding.inflate(
- LayoutInflater.from(parent.context),
- parent,
- false
- )
+ val binding = ItemRecentContentBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ return RecentAdapter.RecentViewHolder(
+ binding,
+ clickLike
)
}
@@ -24,18 +28,33 @@ class RecentAdapter : ListAdapter
if (holder is RecentViewHolder) holder.setRecentContent(getItem(position))
}
- class RecentViewHolder(private val binding: ItemRecentContentBinding) :
- RecyclerView.ViewHolder(binding.root) {
+ class RecentViewHolder(
+ private val binding: ItemRecentContentBinding,
+ private val clickLike: (Int, Boolean) -> Unit
+ ) : RecyclerView.ViewHolder(binding.root) {
fun setRecentContent(recent: ResponseGetRecentDto) {
binding.data = recent
+ binding.btnRecentLiked.setOnSingleClickListener {
+ clickLike(recent.content, recent.Likes.isNotEmpty())
+ if (recent.Likes.isNotEmpty()) {
+ recent.Likes = listOf()
+ // TODO : 객체 없애는 로직
+ return@setOnSingleClickListener
+ }
+ recent.Likes = listOf(ResponseGetRecentDto.Liked(0, 0, 0))
+ // TODO: 객체 집어 넣어주는 로직
+ }
// 여기도 누르면 상세뷰로 가는 코드짜기
}
}
+ override fun getItemCount(): Int = data.size
+
companion object {
- private val diffUtil = DiffCallback(
- onItemsTheSame = { old, new -> old.content == new.content },
- onContentsTheSame = { old, new -> old == new }
- )
+ private val diffUtil =
+ DiffCallback(
+ onItemsTheSame = { old, new -> old.content == new.content },
+ onContentsTheSame = { old, new -> old == new }
+ )
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 30ca52d..16e6018 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -23,6 +23,7 @@ class RecentFragment : BindingFragment(R.layout.fragment_
initRecentAdapter()
setupRecentActivityList()
initCategoryBtnListener()
+ initFirstBtnListener()
}
override fun onAttach(context: Context) {
@@ -32,12 +33,11 @@ class RecentFragment : BindingFragment(R.layout.fragment_
override fun onResume() {
super.onResume()
if (!isInitialLoad) {
- initCategoryBtnListener()
+ initFirstBtnListener()
}
}
private fun initCategoryBtnListener() {
- selectOnlyOneButton(binding.tvExploreRecentAll)
binding.tvExploreRecentAll.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentAll)
}
@@ -52,6 +52,10 @@ class RecentFragment : BindingFragment(R.layout.fragment_
}
}
+ private fun initFirstBtnListener() {
+ selectOnlyOneButton(binding.tvExploreRecentAll)
+ }
+
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvExploreRecentAll.isSelected = false
binding.tvExploreRecentCareer.isSelected = false
@@ -60,17 +64,24 @@ class RecentFragment : BindingFragment(R.layout.fragment_
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (filterValue != binding.tvExploreRecentAll.text.toString()) {
- viewModel.setFilterValue(filterValue)
- viewModel.getRecentData()
- } else {
+ if (isInitialLoad) {
viewModel.setFilterValue("")
viewModel.getRecentData()
+ } else {
+ if (filterValue != binding.tvExploreRecentAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
+ viewModel.getRecentData()
+ } else {
+ viewModel.setFilterValue("")
+ viewModel.getRecentData()
+ }
}
}
private fun initRecentAdapter() {
- recentAdapter = RecentAdapter()
+ recentAdapter = RecentAdapter(
+ clickLike = viewModel::clickLike
+ )
binding.rvExploreRecent.adapter = recentAdapter
val animator = binding.rvExploreRecent.itemAnimator
if (animator is SimpleItemAnimator) {
@@ -83,7 +94,6 @@ class RecentFragment : BindingFragment(R.layout.fragment_
isInitialLoad = false
list = recentList
recentAdapter?.submitList(recentList)
- viewModel.updateSaveState(recentList.flatMap { it.Likes })
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index b160e18..54904ae 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -17,7 +17,7 @@ import javax.inject.Inject
class RecentViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _recentList = MutableLiveData>(mutableListOf())
+ private val _recentList = MutableLiveData>()
val recentList: LiveData>
get() = _recentList
@@ -25,8 +25,8 @@ class RecentViewModel @Inject constructor(
val stateMessage: LiveData
get() = _stateMessage
- private val _saveState = MutableLiveData()
- val saveState: LiveData
+ private val _saveState = MutableLiveData>()
+ val saveState: LiveData>
get() = _saveState
val filter = MutableLiveData("")
@@ -35,20 +35,14 @@ class RecentViewModel @Inject constructor(
filter.value = value
}
- fun updateSaveState(list: List) {
- if (list.isEmpty()) {
- _saveState.value = false
- } else {
- _saveState.value = true
+ fun clickLike(index: Int, isSelected: Boolean) {
+ if (isSelected) {
+ postUnLike(index)
+ postUnLike(index)
+ return
}
- }
- fun onSaveBtnClick(data: ResponseGetRecentDto, saveState: Boolean) {
- if (saveState) {
- postUnLike(data.content)
- } else {
- postSave(data.content)
- }
+ postSave(index)
}
fun getRecentData() {
@@ -81,7 +75,6 @@ class RecentViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = true
_stateMessage.value = UiState.Success
}
.onFailure {
@@ -97,7 +90,6 @@ class RecentViewModel @Inject constructor(
.onSuccess { response ->
Timber.tag("POST UNLIKE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = false
_stateMessage.value = UiState.Success
}
.onFailure {
diff --git a/app/src/main/res/layout/item_recent_content.xml b/app/src/main/res/layout/item_recent_content.xml
index 6a57782..b656e17 100644
--- a/app/src/main/res/layout/item_recent_content.xml
+++ b/app/src/main/res/layout/item_recent_content.xml
@@ -10,8 +10,8 @@
type="com.release.keyneez.data.entity.response.ResponseGetRecentDto" />
+ name="index"
+ type="Integer" />
@@ -54,15 +54,13 @@
From 26cad1935c119c18ce1578bad129d32af80213b3 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 27 Jul 2023 19:13:34 +0900
Subject: [PATCH 082/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EC=A2=8B=EC=95=84=EC=9A=94=EB=B6=80=EB=B6=84,=20=EB=B7=B0?=
=?UTF-8?q?=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=BD=94=EB=93=9C=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../response/ResponseGetSearchResultDto.kt | 2 +-
.../presentation/main/like/LikeViewModel.kt | 2 +-
.../main/search/SearchActivity.kt | 5 ++-
.../presentation/main/search/SearchAdapter.kt | 44 +++++++++++++------
.../main/search/SearchViewModel.kt | 26 ++++-------
.../main/res/layout/item_search_content.xml | 8 ++--
6 files changed, 47 insertions(+), 40 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
index de5f040..b3aeecb 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
@@ -20,7 +20,7 @@ data class ResponseGetSearchResultDto(
@SerialName("end_at") val end: String?,
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
- val Likes: List
+ var Likes: List
) {
@Serializable
data class Liked(
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 4827380..a25e1ac 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -17,7 +17,7 @@ import javax.inject.Inject
class LikeViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _likeList = MutableLiveData>(mutableListOf())
+ private val _likeList = MutableLiveData>()
private val _isEdit = MutableLiveData()
private val _isSelected = MutableLiveData()
private val _selectedIds = MutableLiveData>()
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 308f157..1fdb765 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -45,7 +45,9 @@ class SearchActivity : BindingActivity(R.layout.activity_
}
private fun initSearchAdapter() {
- searchAdapter = SearchAdapter()
+ searchAdapter = SearchAdapter(
+ clickLike = viewModel::clickLike
+ )
binding.rvSearchResultContent.adapter = searchAdapter
}
@@ -53,7 +55,6 @@ class SearchActivity : BindingActivity(R.layout.activity_
viewModel.searchList.observe(this) { searchList ->
searchAdapter?.submitList(searchList)
binding.tvSearchCount.text = searchList?.size.toString()
- viewModel.updateSaveState(searchList.flatMap { it.Likes })
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
index 652768f..3bc1942 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
@@ -7,17 +7,20 @@ import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
import com.release.keyneez.databinding.ItemSearchContentBinding
import com.release.keyneez.util.DiffCallback
+import com.release.keyneez.util.extension.setOnSingleClickListener
-class SearchAdapter :
+class SearchAdapter(private val clickLike: (Int, Boolean) -> Unit) :
ListAdapter(diffUtil) {
var data = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
- return SearchViewHolder(
- ItemSearchContentBinding.inflate(
- LayoutInflater.from(parent.context),
- parent,
- false
- )
+ val binding = ItemSearchContentBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ return SearchAdapter.SearchViewHolder(
+ binding,
+ clickLike
)
}
@@ -26,18 +29,31 @@ class SearchAdapter :
if (holder is SearchViewHolder) holder.setSearch(getItem(position))
}
- class SearchViewHolder(private val binding: ItemSearchContentBinding) :
- RecyclerView.ViewHolder(binding.root) {
+ class SearchViewHolder(
+ private val binding: ItemSearchContentBinding,
+ private val clickLike: (Int, Boolean) -> Unit
+ ) : RecyclerView.ViewHolder(binding.root) {
fun setSearch(search: ResponseGetSearchResultDto) {
binding.data = search
- // 여기 디테일뷰와 연결하는 코드 작성하기
+ binding.btnSearchLiked.setOnSingleClickListener {
+ clickLike(search.content, search.Likes.isNotEmpty())
+ if (search.Likes.isNotEmpty()) {
+ search.Likes = listOf()
+ // TODO : 객체 없애는 로직
+ return@setOnSingleClickListener
+ }
+ search.Likes = listOf(ResponseGetSearchResultDto.Liked(0, 0, 0))
+ // TODO: 객체 집어 넣어주는 로직
+ }
+ // 여기 상세뷰와 연결하는 코드 작성하기
}
}
companion object {
- private val diffUtil = DiffCallback(
- onItemsTheSame = { old, new -> old.content == new.content },
- onContentsTheSame = { old, new -> old == new }
- )
+ private val diffUtil =
+ DiffCallback(
+ onItemsTheSame = { old, new -> old.content == new.content },
+ onContentsTheSame = { old, new -> old == new }
+ )
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index d1c6604..a9c78aa 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -17,7 +17,7 @@ import javax.inject.Inject
class SearchViewModel @Inject constructor(
private val contentRepository: ContentRepository
) : ViewModel() {
- private val _searchList = MutableLiveData>(mutableListOf())
+ private val _searchList = MutableLiveData>()
val searchList: LiveData>
get() = _searchList
@@ -29,8 +29,8 @@ class SearchViewModel @Inject constructor(
val isFlowVisible: LiveData
get() = _isFlowVisible
- private val _saveState = MutableLiveData()
- val saveState: LiveData
+ private val _saveState = MutableLiveData>()
+ val saveState: LiveData>
get() = _saveState
val key = MutableLiveData("")
@@ -43,20 +43,14 @@ class SearchViewModel @Inject constructor(
_isFlowVisible.value = true
}
- fun updateSaveState(list: List) {
- if (list.isEmpty()) {
- _saveState.value = false
- } else {
- _saveState.value = true
+ fun clickLike(index: Int, isSelected: Boolean) {
+ if (isSelected) {
+ postUnLike(index)
+ postUnLike(index)
+ return
}
- }
- fun onSaveBtnClick(data: ResponseGetSearchResultDto, saveState: Boolean) {
- if (saveState) {
- postUnLike(data.content)
- } else {
- postSave(data.content)
- }
+ postSave(index)
}
fun getSearchPostData() {
@@ -95,7 +89,6 @@ class SearchViewModel @Inject constructor(
Timber.d("POST SAVE STATE SUCCESS")
Timber.d("response : $response")
- _saveState.value = true
_stateMessage.value = UiState.Success
}
.onFailure {
@@ -111,7 +104,6 @@ class SearchViewModel @Inject constructor(
.onSuccess { response ->
Timber.tag("POST UNLIKE STATE SUCCES뷰S")
Timber.d("response : $response")
- _saveState.value = false
_stateMessage.value = UiState.Success
}
.onFailure {
diff --git a/app/src/main/res/layout/item_search_content.xml b/app/src/main/res/layout/item_search_content.xml
index c1739b2..bccf237 100644
--- a/app/src/main/res/layout/item_search_content.xml
+++ b/app/src/main/res/layout/item_search_content.xml
@@ -10,8 +10,8 @@
type="com.release.keyneez.data.entity.response.ResponseGetSearchResultDto" />
+ name="index"
+ type="Integer" />
@@ -55,16 +55,14 @@
From 5ded7db6f43fab802d0b928b4cb189a004c9e339 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 27 Jul 2023 20:07:13 +0900
Subject: [PATCH 083/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EB=B7=B0=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/like/LikeFragment.kt | 19 +++++++++++++++++--
.../presentation/main/like/LikeViewModel.kt | 1 -
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index c550f78..ecaf24b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -29,6 +29,13 @@ class LikeFragment :
super.onAttach(context)
}
+ override fun onResume() {
+ super.onResume()
+ if (!isInitialLoad) {
+ initCategoryBtnListener()
+ }
+ }
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.vm = likeViewModel
@@ -36,6 +43,7 @@ class LikeFragment :
setupLikeData()
initEditBtnClickListener()
initCategoryBtnListener()
+ initFirstBtnListener()
initLikeEditBtnClickListener()
}
@@ -50,7 +58,6 @@ class LikeFragment :
}
private fun initCategoryBtnListener() {
- selectOnlyOneButton(binding.tvLikeAll)
binding.tvLikeAll.setOnClickListener {
selectOnlyOneButton(binding.tvLikeAll)
}
@@ -65,6 +72,10 @@ class LikeFragment :
}
}
+ private fun initFirstBtnListener() {
+ selectOnlyOneButton(binding.tvLikeAll)
+ }
+
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvLikeAll.isSelected = false
binding.tvLikeCareer.isSelected = false
@@ -73,8 +84,12 @@ class LikeFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (isInitialLoad == false) {
+ if (isInitialLoad) {
+ likeViewModel.setFilterValue("")
+ likeViewModel.getLikeData()
+ } else {
if (filterValue != binding.tvLikeAll.text.toString()) {
+ Log.d("1", "또 말썽")
likeViewModel.setFilterValue(filterValue)
likeViewModel.getLikeData()
} else {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index a25e1ac..afe3135 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -42,7 +42,6 @@ class LikeViewModel @Inject constructor(
val filter = MutableLiveData("")
init {
- getLikeData()
getSelectedIdsCount()
_isEdit.value = false
_isSelected.value = false
From 92f9f284d2a1fd9098c0f315240d7fcc6c84b9f5 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 28 Jul 2023 09:35:30 +0900
Subject: [PATCH 084/109] =?UTF-8?q?[MOD/#33]=20=EB=82=A0=EC=A7=9C=20?=
=?UTF-8?q?=EB=B0=9B=EC=95=84=EC=98=A4=EB=8A=94=20=EB=B6=80=EB=B6=84=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
---
.../com/release/keyneez/util/binding/BindingAdapter.kt | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt b/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
index 3d1c495..9818c7c 100644
--- a/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/util/binding/BindingAdapter.kt
@@ -46,11 +46,17 @@ object BindingAdapter {
fun TextView.setDuration(start: String?, end: String?) {
if (start?.substring(0, 4) == "9999" && end?.substring(0, 4) == "9999") {
this.text = "상시"
+ } else if (start?.substring(0, 4) == "9999") {
+ val tempEnd = "${end?.substring(0, 4)}.${end?.substring(4, 6)}.${end?.substring(6, 8)}"
+ this.text = "- $tempEnd"
+ } else if (end?.substring(0, 4) == "9999") {
+ val tempStart =
+ "${start?.substring(0, 4)}.${start?.substring(4, 6)}.${start?.substring(6, 8)}"
+ this.text = "$tempStart -"
} else {
val tempStart =
"${start?.substring(0, 4)}.${start?.substring(4, 6)}.${start?.substring(6, 8)}"
val tempEnd = "${end?.substring(4, 6)}.${end?.substring(6, 8)}"
-
this.text = "$tempStart - $tempEnd"
}
}
From ae7168bc876048d54cf0bbdd6ffcf3bb71499b82 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sat, 29 Jul 2023 20:47:40 +0900
Subject: [PATCH 085/109] =?UTF-8?q?[MOD/#33]=20=EC=A3=BC=EC=84=9D=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
---
.../presentation/main/explore/popular/PopularAdapter.kt | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index 80e4816..efb9e13 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -25,13 +25,11 @@ class PopularAdapter(
clickLike(popular.content, popular.Likes.isNotEmpty())
if (popular.Likes.isNotEmpty()) {
popular.Likes = listOf()
- // TODO : 객체 없애는 로직
return@setOnSingleClickListener
}
popular.Likes = listOf(ResponseGetPopularDto.Liked(0, 0, 0))
- // TODO: 객체 집어 넣어주는 로직
}
- // 여기도 누르면 상세뷰로 가는 코드짜기
+ // 상세뷰로 가는 코드짜기
}
}
From 97474bf48816a91e19ee8d8bb508ea8b8aec7164 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 3 Aug 2023 11:48:20 +0900
Subject: [PATCH 086/109] =?UTF-8?q?[MOD/#33]=20service=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/data/service/ContentService.kt | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 560e94a..518ffc1 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -12,23 +12,23 @@ import retrofit2.http.Path
import retrofit2.http.Query
interface ContentService {
- @GET("contents/liked")
+ @GET("api/contents/liked")
suspend fun getLike(@Query("filter") filter: String): BaseResponse>
- @GET("contents/")
+ @GET("api/contents/")
suspend fun getRecent(@Query("filter") filter: String): BaseResponse>
- @GET("contents/popularity")
+ @GET("api/contents/popularity")
suspend fun getPopular(@Query("filter") filter: String): BaseResponse>
- @GET("contents/search")
+ @GET("api/contents/search")
suspend fun getSearch(
@Query("keyword") keyword: String
): BaseResponse>
- @POST("contents/{pk}/like")
+ @POST("api/contents/{pk}/like")
suspend fun postLike(@Path("pk") pk: Int): BaseResponse
- @POST("contents/{pk}/unlike")
+ @POST("api/contents/{pk}/unlike")
suspend fun postUnlike(@Path("pk") pk: Int): BaseResponse
}
From 0e37893a7f65755d448ecccd16f66f503df29604 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 3 Aug 2023 22:34:55 +0900
Subject: [PATCH 087/109] =?UTF-8?q?[MOD/#33]=20api=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/data/service/ContentService.kt | 12 ++++++------
.../main/explore/popular/PopularFragment.kt | 2 ++
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 518ffc1..3ca6c39 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -12,23 +12,23 @@ import retrofit2.http.Path
import retrofit2.http.Query
interface ContentService {
- @GET("api/contents/liked")
+ @GET("api/v1/contents/liked")
suspend fun getLike(@Query("filter") filter: String): BaseResponse>
- @GET("api/contents/")
+ @GET("api/v1/contents/")
suspend fun getRecent(@Query("filter") filter: String): BaseResponse>
- @GET("api/contents/popularity")
+ @GET("api/v1/contents/popularity")
suspend fun getPopular(@Query("filter") filter: String): BaseResponse>
- @GET("api/contents/search")
+ @GET("api/v1/contents/search")
suspend fun getSearch(
@Query("keyword") keyword: String
): BaseResponse>
- @POST("api/contents/{pk}/like")
+ @POST("api/v1/contents/{pk}/like")
suspend fun postLike(@Path("pk") pk: Int): BaseResponse
- @POST("api/contents/{pk}/unlike")
+ @POST("api/v1/contents/{pk}/unlike")
suspend fun postUnlike(@Path("pk") pk: Int): BaseResponse
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 415fed0..3e9e2d5 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -2,6 +2,7 @@ package com.release.keyneez.presentation.main.explore.popular
import android.content.Context
import android.os.Bundle
+import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
@@ -55,6 +56,7 @@ class PopularFragment :
private fun initFirstBtnListener() {
selectOnlyOneButton(binding.tvExplorePopularAll)
+ Log.d("1", "hello")
}
private fun selectOnlyOneButton(selectedButton: TextView) {
From d1abae08b3398ad2120afb1bd4a3dc082ec543ff Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 4 Aug 2023 01:37:19 +0900
Subject: [PATCH 088/109] =?UTF-8?q?[MOD/#33]=20=EC=BD=94=EB=93=9C=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
---
app/build.gradle | 10 ------
app/src/main/AndroidManifest.xml | 33 ++++++++++++++++---
.../util/extension/SharedPreferenceManager.kt | 2 +-
3 files changed, 29 insertions(+), 16 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 8f1c2d2..fef962b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,8 +6,6 @@ plugins {
id 'org.jetbrains.kotlin.plugin.serialization' version '1.7.10'
id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
}
-apply plugin: 'kotlin-kapt'
-apply plugin: 'kotlin-parcelize'
android {
namespace 'com.release.keyneez'
@@ -64,15 +62,10 @@ dependencies {
// ktx
implementation 'androidx.core:core-ktx:1.10.1'
implementation "androidx.fragment:fragment-ktx:1.5.7"
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.0-alpha03"
- implementation "androidx.activity:activity-ktx:1.6.1"
// recyclerview
implementation "androidx.recyclerview:recyclerview:1.3.0"
- // kotlin serialization
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
-
// coroutine
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
@@ -114,9 +107,6 @@ dependencies {
// app compat
implementation 'androidx.appcompat:appcompat:1.6.1'
- // dot indicator
- implementation "com.tbuonomo:dotsindicator:4.3"
-
// material
implementation 'com.google.android.material:material:1.9.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index babcfe8..00b757a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,11 +3,12 @@
xmlns:tools="http://schemas.android.com/tools">
+
+ android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
+ android:exported="true">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt b/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt
index 3698165..eb71217 100644
--- a/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt
+++ b/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt
@@ -43,4 +43,4 @@ fun getUserJwt(context: Context): String {
val spf = context.getSharedPreferences("jwt", AppCompatActivity.MODE_PRIVATE)
return spf.getString("jwt", "")!!
-}
+}
\ No newline at end of file
From b800d921b94f2816c5ba2b5c1a93455b4660d3f8 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 4 Aug 2023 11:48:22 +0900
Subject: [PATCH 089/109] =?UTF-8?q?[MOD/#33]=20manifest=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 00b757a..cb702fd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,7 +29,7 @@
+ android:scheme="kakao0501023316109643f5aaf664f5af0eef" />
Date: Fri, 4 Aug 2023 22:42:07 +0900
Subject: [PATCH 090/109] =?UTF-8?q?[MOD/#33]=20=EB=8C=80=EA=B1=B0=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 33 +++----------------
.../entity/response/ResponseGetPopularDto.kt | 6 ++--
.../entity/response/ResponseGetRecentDto.kt | 6 ++--
.../response/ResponseGetSearchResultDto.kt | 6 ++--
.../data/repository/ContentRepository.kt | 3 ++
.../data/repository/ContentRepositoryImpl.kt | 9 +++++
.../keyneez/data/service/ContentService.kt | 9 +++++
.../keyneez/data/source/ContentDataSource.kt | 9 +++++
.../com/release/keyneez/di/RetrofitModule.kt | 22 ++++++++-----
.../main/explore/popular/PopularFragment.kt | 27 ++++-----------
.../main/explore/popular/PopularViewModel.kt | 22 +++++++++++++
.../main/explore/recent/RecentFragment.kt | 22 +++----------
.../main/explore/recent/RecentViewModel.kt | 24 +++++++++++++-
.../presentation/main/like/LikeFragment.kt | 24 ++++----------
.../presentation/main/like/LikeViewModel.kt | 23 +++++++++++++
.../util/extension/SharedPreferenceManager.kt | 2 +-
16 files changed, 143 insertions(+), 104 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cb702fd..babcfe8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,12 +3,11 @@
xmlns:tools="http://schemas.android.com/tools">
-
-
-
-
-
-
-
-
-
-
-
+ android:name=".presentation.main.MainActivity"
+ android:exported="true"
+ android:screenOrientation="portrait">
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
index 38dfd2c..1939bb8 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetPopularDto.kt
@@ -13,9 +13,9 @@ data class ResponseGetPopularDto(
@SerialName("img") val img: String?,
@SerialName("place") val place: String,
@SerialName("introduction") val introduction: String,
- @SerialName("inquiry") val inquiry: String?,
- @SerialName("price") val price: String?,
- @SerialName("benefit") val benefit: String?,
+ @SerialName("inquiry") val inquiry: List?,
+ @SerialName("price") val price: List?,
+ @SerialName("benefit") val benefit: List?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
@SerialName("created_at") val created: String?,
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
index 1e76fe0..fe29e97 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetRecentDto.kt
@@ -13,11 +13,11 @@ data class ResponseGetRecentDto(
@SerialName("img") val img: String?,
@SerialName("place") val place: String,
@SerialName("introduction") val introduction: String,
- @SerialName("inquiry") val inquiry: String?,
- @SerialName("price") val price: String?,
- @SerialName("benefit") val benefit: String?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
+ @SerialName("inquiry") val inquiry: List?,
+ @SerialName("price") val price: List?,
+ @SerialName("benefit") val benefit: List?,
@SerialName("created_at") val created: String?,
@SerialName("updated_at") val updated: String?,
var Likes: List
diff --git a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
index b3aeecb..a3bb059 100644
--- a/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
+++ b/app/src/main/java/com/release/keyneez/data/entity/response/ResponseGetSearchResultDto.kt
@@ -13,9 +13,9 @@ data class ResponseGetSearchResultDto(
@SerialName("img") val img: String?,
@SerialName("place") val place: String,
@SerialName("introduction") val introduction: String,
- @SerialName("inquiry") val inquiry: String?,
- @SerialName("price") val price: String?,
- @SerialName("benefit") val benefit: String?,
+ @SerialName("inquiry") val inquiry: List?,
+ @SerialName("price") val price: List?,
+ @SerialName("benefit") val benefit: List?,
@SerialName("start_at") val start: String?,
@SerialName("end_at") val end: String?,
@SerialName("created_at") val created: String?,
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
index fea2694..4ee9447 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
@@ -10,8 +10,11 @@ import com.release.keyneez.data.entity.response.wrapper.BaseResponse
interface ContentRepository {
suspend fun getRecent(filter: String): Result>>
+ suspend fun getAllRecent(): Result>>
suspend fun getPopular(filter: String): Result>>
+ suspend fun getAllPopular(): Result>>
suspend fun getLike(filter: String): Result>>
+ suspend fun getAllLike(): Result>>
suspend fun getSearch(keyword: String): Result>>
suspend fun postLike(pk: Int): Result>
suspend fun postUnlike(pk: Int): Result>
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
index 71a70fd..87bbf86 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
@@ -16,12 +16,21 @@ class ContentRepositoryImpl @Inject constructor(
override suspend fun getRecent(filter: String): Result>> =
kotlin.runCatching { contentDataSource.getRecent(filter) }
+ override suspend fun getAllRecent(): Result>> =
+ kotlin.runCatching { contentDataSource.getAllRecent() }
+
override suspend fun getPopular(filter: String): Result>> =
kotlin.runCatching { contentDataSource.getPopular(filter) }
+ override suspend fun getAllPopular(): Result>> =
+ kotlin.runCatching { contentDataSource.getAllPopular() }
+
override suspend fun getLike(filter: String): Result>> =
kotlin.runCatching { contentDataSource.getLike(filter) }
+ override suspend fun getAllLike(): Result>> =
+ kotlin.runCatching { contentDataSource.getAllLike() }
+
override suspend fun getSearch(keyword: String): Result>> =
kotlin.runCatching { contentDataSource.getSearch(keyword) }
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 3ca6c39..49cda60 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -15,12 +15,21 @@ interface ContentService {
@GET("api/v1/contents/liked")
suspend fun getLike(@Query("filter") filter: String): BaseResponse>
+ @GET("api/v1/contents/liked")
+ suspend fun getAllLike(): BaseResponse>
+
@GET("api/v1/contents/")
suspend fun getRecent(@Query("filter") filter: String): BaseResponse>
+ @GET("api/v1/contents/")
+ suspend fun getAllRecent(): BaseResponse>
+
@GET("api/v1/contents/popularity")
suspend fun getPopular(@Query("filter") filter: String): BaseResponse>
+ @GET("api/v1/contents/popularity")
+ suspend fun getAllPopular(): BaseResponse>
+
@GET("api/v1/contents/search")
suspend fun getSearch(
@Query("keyword") keyword: String
diff --git a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
index 68d5a37..40cedb5 100644
--- a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
+++ b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
@@ -15,12 +15,21 @@ class ContentDataSource @Inject constructor(
suspend fun getRecent(filter: String): BaseResponse> =
contentService.getRecent(filter)
+ suspend fun getAllRecent(): BaseResponse> =
+ contentService.getAllRecent()
+
suspend fun getPopular(filter: String): BaseResponse> =
contentService.getPopular(filter)
+ suspend fun getAllPopular(): BaseResponse> =
+ contentService.getAllPopular()
+
suspend fun getLike(filter: String): BaseResponse> =
contentService.getLike(filter)
+ suspend fun getAllLike(): BaseResponse> =
+ contentService.getAllLike()
+
suspend fun getSearch(keyword: String): BaseResponse> =
contentService.getSearch(keyword)
diff --git a/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt b/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
index 7bd2327..1155461 100644
--- a/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
+++ b/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
@@ -2,7 +2,6 @@ package com.release.keyneez.di
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import com.release.keyneez.BuildConfig.BASE_URL
-import com.release.keyneez.data.source.LocalPrefDataSource
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -22,18 +21,23 @@ object RetrofitModule {
private const val APPLICATION_JSON = "application/json"
private const val AUTHORIZATION = "Authorization"
+ // Json 빌더 설정에 'coerceInputValues = true'를 추가하여 null 값을 기본 값으로 변환
+ val jsonBuilder = Json {
+ coerceInputValues = true
+ }
+
@Provides
@Singleton
- fun providesKeyneezInterceptor(
- localPrefDataSource: LocalPrefDataSource
- ): Interceptor = Interceptor { chain ->
+ fun providesKeyneezInterceptor(): Interceptor = Interceptor { chain ->
with(chain) {
- proceed(
- request().newBuilder().addHeader(CONTENT_TYPE, APPLICATION_JSON).addHeader(
+ val requestBuilder = request().newBuilder()
+ .addHeader(CONTENT_TYPE, APPLICATION_JSON)
+ .addHeader(
AUTHORIZATION,
- requireNotNull(localPrefDataSource.getAccessToken())
- ).build()
- )
+ "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJLZWVuemUiLCJzdWIiOiIyIiwiaWF0IjoxNjkxMTQ3MjA3LCJleHAiOjE2OTExNTQ0MDd9.80aY7H3MdIMl8ir7selmL5esLJi1ISaLz7KRLWvRDv8"
+ ) // 엑세스 토큰 값을 직접 설정합니다.
+ .build()
+ proceed(requestBuilder)
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index 3e9e2d5..a05edce 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -2,7 +2,6 @@ package com.release.keyneez.presentation.main.explore.popular
import android.content.Context
import android.os.Bundle
-import android.util.Log
import android.view.View
import android.widget.TextView
import androidx.fragment.app.viewModels
@@ -19,13 +18,12 @@ class PopularFragment :
lateinit var list: List
private var popularAdapter: PopularAdapter? = null
private var isInitialLoad = true
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initPopularAdapter()
setupPopularActivityList()
initCategoryBtnListener()
- // isInitialLoad가 false이든 아니든 기본적으로 호출
- initFirstBtnListener()
}
override fun onAttach(context: Context) {
@@ -34,12 +32,11 @@ class PopularFragment :
override fun onResume() {
super.onResume()
- if (!isInitialLoad) {
- initCategoryBtnListener()
- }
+ initCategoryBtnListener()
}
private fun initCategoryBtnListener() {
+ selectOnlyOneButton(binding.tvExplorePopularAll)
binding.tvExplorePopularAll.setOnClickListener {
selectOnlyOneButton(binding.tvExplorePopularAll)
}
@@ -53,12 +50,6 @@ class PopularFragment :
selectOnlyOneButton(binding.tvExplorePopularOutside)
}
}
-
- private fun initFirstBtnListener() {
- selectOnlyOneButton(binding.tvExplorePopularAll)
- Log.d("1", "hello")
- }
-
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvExplorePopularAll.isSelected = false
binding.tvExplorePopularCareer.isSelected = false
@@ -67,17 +58,11 @@ class PopularFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (isInitialLoad) {
- viewModel.setFilterValue("")
+ if (filterValue != binding.tvExplorePopularAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
viewModel.getPopularData()
} else {
- if (filterValue != binding.tvExplorePopularAll.text.toString()) {
- viewModel.setFilterValue(filterValue)
- viewModel.getPopularData()
- } else {
- viewModel.setFilterValue("")
- viewModel.getPopularData()
- }
+ viewModel.getAllPopularData()
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 7dde81a..15adda0 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -35,6 +35,7 @@ class PopularViewModel @Inject constructor(
filter.value = value
}
+
fun getPopularData() {
viewModelScope.launch {
contentRepository.getPopular(filter.value.toString())
@@ -57,7 +58,28 @@ class PopularViewModel @Inject constructor(
}
}
}
+ fun getAllPopularData() {
+ viewModelScope.launch {
+ contentRepository.getAllPopular()
+ .onSuccess { response ->
+ Timber.tag(successTag).d("response : $response")
+ if (response.data == null) {
+ Timber.d("GET POPULAR CONTENT IS NULL")
+ _stateMessage.value = UiState.Failure(POPULAR_DATA_NULL_CODE)
+ }
+ _popularList.value = response.data!!
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.tag(failTag).e("throwable : $it")
+ if (it is HttpException) {
+ Timber.tag(failTag).e("code : ${it.code()}")
+ Timber.tag(failTag).e("message : ${it.message()}")
+ }
+ }
+ }
+ }
fun clickLike(index: Int, isSelected: Boolean) {
if (isSelected) {
postUnLike(index)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 16e6018..9dad473 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -23,7 +23,6 @@ class RecentFragment : BindingFragment(R.layout.fragment_
initRecentAdapter()
setupRecentActivityList()
initCategoryBtnListener()
- initFirstBtnListener()
}
override fun onAttach(context: Context) {
@@ -32,12 +31,11 @@ class RecentFragment : BindingFragment(R.layout.fragment_
override fun onResume() {
super.onResume()
- if (!isInitialLoad) {
- initFirstBtnListener()
- }
+ initCategoryBtnListener()
}
private fun initCategoryBtnListener() {
+ selectOnlyOneButton(binding.tvExploreRecentAll)
binding.tvExploreRecentAll.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentAll)
}
@@ -52,10 +50,6 @@ class RecentFragment : BindingFragment(R.layout.fragment_
}
}
- private fun initFirstBtnListener() {
- selectOnlyOneButton(binding.tvExploreRecentAll)
- }
-
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvExploreRecentAll.isSelected = false
binding.tvExploreRecentCareer.isSelected = false
@@ -64,17 +58,11 @@ class RecentFragment : BindingFragment(R.layout.fragment_
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (isInitialLoad) {
- viewModel.setFilterValue("")
+ if (filterValue != binding.tvExploreRecentAll.text.toString()) {
+ viewModel.setFilterValue(filterValue)
viewModel.getRecentData()
} else {
- if (filterValue != binding.tvExploreRecentAll.text.toString()) {
- viewModel.setFilterValue(filterValue)
- viewModel.getRecentData()
- } else {
- viewModel.setFilterValue("")
- viewModel.getRecentData()
- }
+ viewModel.getAllRecentData()
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 54904ae..272c4a3 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -31,7 +31,7 @@ class RecentViewModel @Inject constructor(
val filter = MutableLiveData("")
- fun setFilterValue(value: String) {
+ fun setFilterValue(value: String?) {
filter.value = value
}
@@ -67,6 +67,28 @@ class RecentViewModel @Inject constructor(
}
}
}
+ fun getAllRecentData() {
+ viewModelScope.launch {
+ contentRepository.getAllRecent()
+ .onSuccess { response ->
+ Timber.tag(successTag).d("response : $response")
+
+ if (response.data == null) {
+ Timber.d("GET RECENT CONTENT IS NULL")
+ _stateMessage.value = UiState.Failure(RECENT_DATA_NULL_CODE)
+ }
+ _recentList.value = response.data!!
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.tag(failTag).e("throwable : $it")
+ if (it is HttpException) {
+ Timber.tag(failTag).e("code : ${it.code()}")
+ Timber.tag(failTag).e("message : ${it.message()}")
+ }
+ }
+ }
+ }
fun postSave(pk: Int) {
viewModelScope.launch {
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index ecaf24b..12679a2 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -31,9 +31,7 @@ class LikeFragment :
override fun onResume() {
super.onResume()
- if (!isInitialLoad) {
- initCategoryBtnListener()
- }
+ initCategoryBtnListener()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -43,7 +41,6 @@ class LikeFragment :
setupLikeData()
initEditBtnClickListener()
initCategoryBtnListener()
- initFirstBtnListener()
initLikeEditBtnClickListener()
}
@@ -58,6 +55,7 @@ class LikeFragment :
}
private fun initCategoryBtnListener() {
+ selectOnlyOneButton(binding.tvLikeAll)
binding.tvLikeAll.setOnClickListener {
selectOnlyOneButton(binding.tvLikeAll)
}
@@ -72,10 +70,6 @@ class LikeFragment :
}
}
- private fun initFirstBtnListener() {
- selectOnlyOneButton(binding.tvLikeAll)
- }
-
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvLikeAll.isSelected = false
binding.tvLikeCareer.isSelected = false
@@ -84,18 +78,12 @@ class LikeFragment :
selectedButton.isSelected = true
val filterValue = selectedButton.text.toString()
- if (isInitialLoad) {
- likeViewModel.setFilterValue("")
+
+ if (filterValue != binding.tvLikeAll.text.toString()) {
+ likeViewModel.setFilterValue(filterValue)
likeViewModel.getLikeData()
} else {
- if (filterValue != binding.tvLikeAll.text.toString()) {
- Log.d("1", "또 말썽")
- likeViewModel.setFilterValue(filterValue)
- likeViewModel.getLikeData()
- } else {
- likeViewModel.setFilterValue("")
- likeViewModel.getLikeData()
- }
+ likeViewModel.getAllLikeData()
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index afe3135..2822357 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -145,6 +145,29 @@ class LikeViewModel @Inject constructor(
}
}
+ fun getAllLikeData() {
+ viewModelScope.launch {
+ contentRepository.getAllLike()
+ .onSuccess { response ->
+ Timber.tag(successTag).d("response : $response")
+
+ if (response.data == null) {
+ Timber.d("GET LIKE CONTENT IS NULL")
+ _stateMessage.value = UiState.Failure(LIKE_DATA_NULL_CODE)
+ }
+ _likeList.value = response.data!!
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.tag(failTag).e("throwable : $it")
+ if (it is HttpException) {
+ Timber.tag(failTag).e("code : ${it.code()}")
+ Timber.tag(failTag).e("message : ${it.message()}")
+ }
+ }
+ }
+ }
+
companion object {
const val LIKE_DATA_NULL_CODE = 100
private const val successTag = "GET_LIKE_CONTENT_SUCCESS"
diff --git a/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt b/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt
index eb71217..3698165 100644
--- a/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt
+++ b/app/src/main/java/com/release/keyneez/util/extension/SharedPreferenceManager.kt
@@ -43,4 +43,4 @@ fun getUserJwt(context: Context): String {
val spf = context.getSharedPreferences("jwt", AppCompatActivity.MODE_PRIVATE)
return spf.getString("jwt", "")!!
-}
\ No newline at end of file
+}
From e92ec9625a1c3972f1db77526d70b2e6a35d3f8c Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 4 Aug 2023 23:04:56 +0900
Subject: [PATCH 091/109] =?UTF-8?q?[MOD/#33]=20=EC=84=9C=EB=B2=84=ED=86=B5?=
=?UTF-8?q?=EC=8B=A0=20=EC=B4=88=EA=B8=B0=EC=97=90=20=ED=95=9C=20=EB=B2=88?=
=?UTF-8?q?=EB=A7=8C=20=ED=95=98=EA=B2=8C=EB=81=94=20=EC=9E=AC=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularFragment.kt | 7 ++++++-
.../presentation/main/explore/recent/RecentFragment.kt | 7 +++++--
.../release/keyneez/presentation/main/like/LikeFragment.kt | 7 +++++--
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
index a05edce..7fdc158 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularFragment.kt
@@ -24,6 +24,7 @@ class PopularFragment :
initPopularAdapter()
setupPopularActivityList()
initCategoryBtnListener()
+ selectOnlyOneButton(binding.tvExplorePopularAll)
}
override fun onAttach(context: Context) {
@@ -33,10 +34,13 @@ class PopularFragment :
override fun onResume() {
super.onResume()
initCategoryBtnListener()
+ if (!isInitialLoad) {
+ selectOnlyOneButton(binding.tvExplorePopularAll)
+ }
+ isInitialLoad = false
}
private fun initCategoryBtnListener() {
- selectOnlyOneButton(binding.tvExplorePopularAll)
binding.tvExplorePopularAll.setOnClickListener {
selectOnlyOneButton(binding.tvExplorePopularAll)
}
@@ -50,6 +54,7 @@ class PopularFragment :
selectOnlyOneButton(binding.tvExplorePopularOutside)
}
}
+
private fun selectOnlyOneButton(selectedButton: TextView) {
binding.tvExplorePopularAll.isSelected = false
binding.tvExplorePopularCareer.isSelected = false
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
index 9dad473..3d27085 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentFragment.kt
@@ -23,6 +23,7 @@ class RecentFragment : BindingFragment(R.layout.fragment_
initRecentAdapter()
setupRecentActivityList()
initCategoryBtnListener()
+ selectOnlyOneButton(binding.tvExploreRecentAll)
}
override fun onAttach(context: Context) {
@@ -31,11 +32,13 @@ class RecentFragment : BindingFragment(R.layout.fragment_
override fun onResume() {
super.onResume()
- initCategoryBtnListener()
+ if (!isInitialLoad) {
+ selectOnlyOneButton(binding.tvExploreRecentAll)
+ }
+ isInitialLoad = false
}
private fun initCategoryBtnListener() {
- selectOnlyOneButton(binding.tvExploreRecentAll)
binding.tvExploreRecentAll.setOnClickListener {
selectOnlyOneButton(binding.tvExploreRecentAll)
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 12679a2..1e20cf0 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -31,7 +31,10 @@ class LikeFragment :
override fun onResume() {
super.onResume()
- initCategoryBtnListener()
+ if (!isInitialLoad) {
+ selectOnlyOneButton(binding.tvLikeAll)
+ }
+ isInitialLoad = false
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -42,6 +45,7 @@ class LikeFragment :
initEditBtnClickListener()
initCategoryBtnListener()
initLikeEditBtnClickListener()
+ selectOnlyOneButton(binding.tvLikeAll)
}
private fun initLikeEditBtnClickListener() {
@@ -55,7 +59,6 @@ class LikeFragment :
}
private fun initCategoryBtnListener() {
- selectOnlyOneButton(binding.tvLikeAll)
binding.tvLikeAll.setOnClickListener {
selectOnlyOneButton(binding.tvLikeAll)
}
From acabfc53acaf0fe410766be3bf9fc8076c8bf976 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Fri, 4 Aug 2023 23:09:35 +0900
Subject: [PATCH 092/109] =?UTF-8?q?[DEL/#33]=EC=BD=94=EB=93=9C=20=EC=82=AD?=
=?UTF-8?q?=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/java/com/release/keyneez/di/RetrofitModule.kt | 5 -----
1 file changed, 5 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt b/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
index 1155461..4a9ffc2 100644
--- a/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
+++ b/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
@@ -21,11 +21,6 @@ object RetrofitModule {
private const val APPLICATION_JSON = "application/json"
private const val AUTHORIZATION = "Authorization"
- // Json 빌더 설정에 'coerceInputValues = true'를 추가하여 null 값을 기본 값으로 변환
- val jsonBuilder = Json {
- coerceInputValues = true
- }
-
@Provides
@Singleton
fun providesKeyneezInterceptor(): Interceptor = Interceptor { chain ->
From 907b299e608154e037517fa986bb80a57b98eefa Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 6 Aug 2023 18:56:47 +0900
Subject: [PATCH 093/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=20=EC=B7=A8=EC=86=8C=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/data/repository/ContentRepository.kt | 2 +-
.../presentation/main/explore/popular/PopularViewModel.kt | 6 +++---
.../presentation/main/explore/recent/RecentViewModel.kt | 4 ++--
.../keyneez/presentation/main/search/SearchViewModel.kt | 3 +--
4 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
index 4ee9447..063b4c7 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepository.kt
@@ -17,5 +17,5 @@ interface ContentRepository {
suspend fun getAllLike(): Result>>
suspend fun getSearch(keyword: String): Result>>
suspend fun postLike(pk: Int): Result>
- suspend fun postUnlike(pk: Int): Result>
+ suspend fun postUnlike(pk: List): Result>
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
index 15adda0..e2a28ca 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularViewModel.kt
@@ -35,7 +35,6 @@ class PopularViewModel @Inject constructor(
filter.value = value
}
-
fun getPopularData() {
viewModelScope.launch {
contentRepository.getPopular(filter.value.toString())
@@ -58,6 +57,7 @@ class PopularViewModel @Inject constructor(
}
}
}
+
fun getAllPopularData() {
viewModelScope.launch {
contentRepository.getAllPopular()
@@ -80,9 +80,9 @@ class PopularViewModel @Inject constructor(
}
}
}
+
fun clickLike(index: Int, isSelected: Boolean) {
if (isSelected) {
- postUnLike(index)
postUnLike(index)
return
}
@@ -108,7 +108,7 @@ class PopularViewModel @Inject constructor(
fun postUnLike(pk: Int) {
viewModelScope.launch {
- contentRepository.postUnlike(pk)
+ contentRepository.postUnlike(listOf(pk))
.onSuccess { response ->
Timber.tag("POST UNLIKE STATE SUCCESS")
Timber.d("response : $response")
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
index 272c4a3..0b27fbd 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentViewModel.kt
@@ -37,7 +37,6 @@ class RecentViewModel @Inject constructor(
fun clickLike(index: Int, isSelected: Boolean) {
if (isSelected) {
- postUnLike(index)
postUnLike(index)
return
}
@@ -67,6 +66,7 @@ class RecentViewModel @Inject constructor(
}
}
}
+
fun getAllRecentData() {
viewModelScope.launch {
contentRepository.getAllRecent()
@@ -108,7 +108,7 @@ class RecentViewModel @Inject constructor(
fun postUnLike(pk: Int) {
viewModelScope.launch {
- contentRepository.postUnlike(pk)
+ contentRepository.postUnlike(listOf(pk))
.onSuccess { response ->
Timber.tag("POST UNLIKE STATE SUCCESS")
Timber.d("response : $response")
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
index a9c78aa..39cce5b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchViewModel.kt
@@ -45,7 +45,6 @@ class SearchViewModel @Inject constructor(
fun clickLike(index: Int, isSelected: Boolean) {
if (isSelected) {
- postUnLike(index)
postUnLike(index)
return
}
@@ -100,7 +99,7 @@ class SearchViewModel @Inject constructor(
fun postUnLike(pk: Int) {
viewModelScope.launch {
- contentRepository.postUnlike(pk)
+ contentRepository.postUnlike(listOf(pk))
.onSuccess { response ->
Timber.tag("POST UNLIKE STATE SUCCES뷰S")
Timber.d("response : $response")
From 18e14dafff5f062ba13e744600c7f4d27deec004 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 6 Aug 2023 21:36:18 +0900
Subject: [PATCH 094/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EC=A2=8B=EC=95=84=EC=9A=94=20=EC=B7=A8=EC=86=8C=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/like/LikeViewModel.kt | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 2822357..5bf5090 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -108,16 +108,16 @@ class LikeViewModel @Inject constructor(
_likeList.value = updatedList.toList()
// 서버 통신을 위해 선택된 아이템의 ID를 서버로 전송하여 좋아요 해제
viewModelScope.launch {
- for (selectedId in selectedIdsList) {
- try {
- contentRepository.postUnlike(selectedId)
- // 성공적으로 좋아요를 해제한 경우
- Timber.d("Unlike item with ID: $selectedId success")
- } catch (e: Exception) {
- // 좋아요 해제 실패 또는 예외 발생한 경우
- Timber.e(e, "Failed to unlike item with ID: $selectedId")
+ contentRepository.postUnlike(selectedIdsList)
+ .onSuccess { response ->
+ Timber.tag("POST UNLIKE STATE SUCCESS")
+ Timber.d("response : $response")
+ _stateMessage.value = UiState.Success
+ }
+ .onFailure {
+ Timber.d("throwable : $it")
+ _stateMessage.value = UiState.Error
}
- }
}
}
}
From 29860563c0646825d4ee27998b88dffb091bafe4 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Sun, 6 Aug 2023 21:48:20 +0900
Subject: [PATCH 095/109] =?UTF-8?q?[MOD/#33]=20=EA=B2=80=EC=83=89=EB=B7=B0?=
=?UTF-8?q?=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20size=20null=EC=97=90=20?=
=?UTF-8?q?=EB=8C=80=ED=95=9C=20=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/search/SearchActivity.kt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
index 1fdb765..8fcebc4 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchActivity.kt
@@ -54,7 +54,8 @@ class SearchActivity : BindingActivity(R.layout.activity_
private fun setupSearchActivityList() {
viewModel.searchList.observe(this) { searchList ->
searchAdapter?.submitList(searchList)
- binding.tvSearchCount.text = searchList?.size.toString()
+ val itemCount = searchList?.size ?: 0
+ binding.tvSearchCount.text = itemCount.toString()
}
}
From 0e833fa27abb7fc0ee13424fccb397eb9966a408 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 7 Aug 2023 11:14:22 +0900
Subject: [PATCH 096/109] =?UTF-8?q?[MOD/#33]=20=EC=84=9C=EB=B2=84=ED=86=B5?=
=?UTF-8?q?=EC=8B=A0=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=20List?=
=?UTF-8?q?=EB=A1=9C=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/data/repository/ContentRepositoryImpl.kt | 2 +-
.../java/com/release/keyneez/data/service/ContentService.kt | 2 +-
.../java/com/release/keyneez/data/source/ContentDataSource.kt | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
index 87bbf86..501c8e7 100644
--- a/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
+++ b/app/src/main/java/com/release/keyneez/data/repository/ContentRepositoryImpl.kt
@@ -37,6 +37,6 @@ class ContentRepositoryImpl @Inject constructor(
override suspend fun postLike(pk: Int): Result> =
kotlin.runCatching { contentDataSource.postLike(pk) }
- override suspend fun postUnlike(pk: Int): Result> =
+ override suspend fun postUnlike(pk: List): Result> =
kotlin.runCatching { contentDataSource.postUnlike(pk) }
}
diff --git a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
index 49cda60..dbc16d3 100644
--- a/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
+++ b/app/src/main/java/com/release/keyneez/data/service/ContentService.kt
@@ -39,5 +39,5 @@ interface ContentService {
suspend fun postLike(@Path("pk") pk: Int): BaseResponse
@POST("api/v1/contents/{pk}/unlike")
- suspend fun postUnlike(@Path("pk") pk: Int): BaseResponse
+ suspend fun postUnlike(@Path("pk") pk: List): BaseResponse
}
diff --git a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
index 40cedb5..75130f6 100644
--- a/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
+++ b/app/src/main/java/com/release/keyneez/data/source/ContentDataSource.kt
@@ -36,6 +36,6 @@ class ContentDataSource @Inject constructor(
suspend fun postLike(pk: Int): BaseResponse =
contentService.postLike(pk)
- suspend fun postUnlike(pk: Int): BaseResponse =
+ suspend fun postUnlike(pk: List): BaseResponse =
contentService.postUnlike(pk)
}
From 39af3b621017964e527060adef18203f5c0b17e5 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 7 Aug 2023 12:10:17 +0900
Subject: [PATCH 097/109] =?UTF-8?q?[MOD/#33]=20=EC=BD=94=EB=93=9C=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
---
.../com/release/keyneez/presentation/main/like/LikeViewModel.kt | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
index 5bf5090..acd7d37 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeViewModel.kt
@@ -106,7 +106,6 @@ class LikeViewModel @Inject constructor(
}
_likeList.value = updatedList.toList()
- // 서버 통신을 위해 선택된 아이템의 ID를 서버로 전송하여 좋아요 해제
viewModelScope.launch {
contentRepository.postUnlike(selectedIdsList)
.onSuccess { response ->
From bd61f6e028ad9cf01b8d6723656150c83824b928 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Tue, 8 Aug 2023 14:46:11 +0900
Subject: [PATCH 098/109] =?UTF-8?q?[DEL/#33]=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EA=B0=84=EC=86=8C=ED=99=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../release/keyneez/presentation/main/like/LikeFragment.kt | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 1e20cf0..48aee5c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -9,7 +9,6 @@ import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.SimpleItemAnimator
import com.release.keyneez.R
-import com.release.keyneez.data.entity.response.ResponseGetLikeDto
import com.release.keyneez.databinding.FragmentLikeBinding
import com.release.keyneez.presentation.main.MainViewModel
import com.release.keyneez.util.binding.BindingFragment
@@ -21,7 +20,6 @@ import dagger.hilt.android.AndroidEntryPoint
class LikeFragment :
BindingFragment(com.release.keyneez.R.layout.fragment_like) {
private var likeAdapter: LikeAdapter? = null
- lateinit var likeList: List
private val likeViewModel by viewModels()
private val mainViewModel by activityViewModels()
private var isInitialLoad = true
@@ -119,10 +117,9 @@ class LikeFragment :
}
private fun setupLikeData() {
- likeViewModel.likeList.observe(viewLifecycleOwner) { activityList ->
+ likeViewModel.likeList.observe(viewLifecycleOwner) { likeList ->
isInitialLoad = false
- likeList = activityList
- likeAdapter?.submitList(activityList)
+ likeAdapter?.submitList(likeList)
likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
if (isEdit) {
val selectedCount = likeViewModel.getSelectedIdsCount().toString()
From 9debebeb1ba111119a52d36a8479a084041fb3ce Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Tue, 8 Aug 2023 14:54:41 +0900
Subject: [PATCH 099/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/release/keyneez/presentation/main/like/LikeFragment.kt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 48aee5c..5a08515 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -120,13 +120,14 @@ class LikeFragment :
likeViewModel.likeList.observe(viewLifecycleOwner) { likeList ->
isInitialLoad = false
likeAdapter?.submitList(likeList)
+ val itemCount = likeList?.size ?: 0
likeViewModel.isEdit.observe(viewLifecycleOwner) { isEdit ->
if (isEdit) {
val selectedCount = likeViewModel.getSelectedIdsCount().toString()
binding.tvLikeNum.text = getString(R.string.like_select, selectedCount)
Log.d("1", "true일 때")
} else {
- binding.tvLikeNum.text = getString(R.string.like_num, likeList.size)
+ binding.tvLikeNum.text = getString(R.string.like_num, itemCount.toString())
Log.d("1", "false일 때")
}
}
From 017789787fedb73831d773f8d7932fe732248601 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Tue, 8 Aug 2023 16:00:10 +0900
Subject: [PATCH 100/109] =?UTF-8?q?[DEL/#33]=20=EC=A3=BC=EC=84=9D=20?=
=?UTF-8?q?=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 2 +-
.../main/explore/recent/RecentAdapter.kt | 2 -
.../presentation/main/search/SearchAdapter.kt | 2 -
workspace.xml | 189 ++++++++++++++++++
4 files changed, 190 insertions(+), 5 deletions(-)
create mode 100644 workspace.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index babcfe8..f9209da 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,8 +6,8 @@
Unit) :
clickLike(recent.content, recent.Likes.isNotEmpty())
if (recent.Likes.isNotEmpty()) {
recent.Likes = listOf()
- // TODO : 객체 없애는 로직
return@setOnSingleClickListener
}
recent.Likes = listOf(ResponseGetRecentDto.Liked(0, 0, 0))
- // TODO: 객체 집어 넣어주는 로직
}
// 여기도 누르면 상세뷰로 가는 코드짜기
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
index 3bc1942..b786184 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
@@ -39,11 +39,9 @@ class SearchAdapter(private val clickLike: (Int, Boolean) -> Unit) :
clickLike(search.content, search.Likes.isNotEmpty())
if (search.Likes.isNotEmpty()) {
search.Likes = listOf()
- // TODO : 객체 없애는 로직
return@setOnSingleClickListener
}
search.Likes = listOf(ResponseGetSearchResultDto.Liked(0, 0, 0))
- // TODO: 객체 집어 넣어주는 로직
}
// 여기 상세뷰와 연결하는 코드 작성하기
}
diff --git a/workspace.xml b/workspace.xml
new file mode 100644
index 0000000..b42f765
--- /dev/null
+++ b/workspace.xml
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "keyToString": {
+ "PROJECT_TRUSTED_KEY": "true",
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.cidr.known.project.marker": "true",
+ "android-custom-view/Users/jieun/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.3.0/f4de7876e10ff121102f131b26d4a98b1613a012/recyclerview-1.3.0-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED": "RecyclerView",
+ "android-custom-view/Users/jieun/.gradle/caches/modules-2/files-2.1/com.google.android.material/material/1.9.0/8ad443d2a33a5bbdf4210e3964cf79cc5021f12a/material-1.9.0-sources.jar!/com/google/android/material/navigation/NavigationBarView.java_SELECTED": "NavigationBarView",
+ "android-custom-view/Users/jieun/Library/Android/sdk/sources/android-33/android/view/View.java_SELECTED": "View",
+ "cidr.known.project.marker": "true",
+ "com.google.services.firebase.aqiPopupShown": "true",
+ "com.intellij.openapi.externalSystem.service.settings.ExternalSystemGroupConfigurable": "ALL",
+ "last_opened_file_path": "/Users/jieun/Desktop/Keyneez-AOS-Release",
+ "memory.settings.postsync.last.time.stamp": "1687690558117",
+ "project.structure.last.edited": "Project",
+ "project.structure.proportion": "0.17",
+ "project.structure.side.proportion": "0.2",
+ "settings.editor.selected.configurable": "reference.settingsdialog.project.gradle"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1679491315134
+
+
+ 1679491315134
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 9ec062f88ee492a37b580b48bbbdadbf306efa65 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 9 Aug 2023 15:45:39 +0900
Subject: [PATCH 101/109] =?UTF-8?q?[ADD/#33]=20=EB=94=94=ED=85=8C=EC=9D=BC?=
=?UTF-8?q?=EB=B7=B0=EC=99=80=20=EC=97=B0=EA=B2=B0=ED=95=98=EB=8A=94=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/recent/RecentAdapter.kt | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index 8a52be2..4ab2b9d 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -1,7 +1,9 @@
package com.release.keyneez.presentation.main.explore.recent
+import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
@@ -42,7 +44,11 @@ class RecentAdapter(private val clickLike: (Int, Boolean) -> Unit) :
}
recent.Likes = listOf(ResponseGetRecentDto.Liked(0, 0, 0))
}
- // 여기도 누르면 상세뷰로 가는 코드짜기
+ binding.root.setOnClickListener {
+ val intent = Intent(binding.root.context, DetailActivity::class.java)
+ intent.putExtra("contentId", recent.content)
+ ContextCompat.startActivity(binding.root.context, intent, null)
+ }
}
}
From 82209bf52996e6542cf206de7de3833471c5fdac Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 9 Aug 2023 15:46:38 +0900
Subject: [PATCH 102/109] =?UTF-8?q?[ADD/#33]=20=EB=94=94=ED=85=8C=EC=9D=BC?=
=?UTF-8?q?=EB=B7=B0=EC=99=80=20=EC=97=B0=EA=B2=B0=ED=95=98=EB=8A=94=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=802?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/explore/popular/PopularAdapter.kt | 8 +++++++-
.../presentation/main/explore/recent/RecentAdapter.kt | 10 +++++-----
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index efb9e13..c60fbca 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -1,7 +1,9 @@
package com.release.keyneez.presentation.main.explore.popular
+import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
@@ -29,7 +31,11 @@ class PopularAdapter(
}
popular.Likes = listOf(ResponseGetPopularDto.Liked(0, 0, 0))
}
- // 상세뷰로 가는 코드짜기
+ binding.root.setOnClickListener {
+ val intent = Intent(binding.root.context, DetailActivity::class.java)
+ intent.putExtra("contentId", popular.content)
+ ContextCompat.startActivity(binding.root.context, intent, null)
+// }
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index 4ab2b9d..863384b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -44,11 +44,11 @@ class RecentAdapter(private val clickLike: (Int, Boolean) -> Unit) :
}
recent.Likes = listOf(ResponseGetRecentDto.Liked(0, 0, 0))
}
- binding.root.setOnClickListener {
- val intent = Intent(binding.root.context, DetailActivity::class.java)
- intent.putExtra("contentId", recent.content)
- ContextCompat.startActivity(binding.root.context, intent, null)
- }
+// binding.root.setOnClickListener {
+// val intent = Intent(binding.root.context, DetailActivity::class.java)
+// intent.putExtra("contentId", recent.content)
+// ContextCompat.startActivity(binding.root.context, intent, null)
+// }
}
}
From f87c1f42eafeab0cca08656077199839e9424200 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 9 Aug 2023 15:50:08 +0900
Subject: [PATCH 103/109] =?UTF-8?q?[ADD/#33]=20=EB=94=94=ED=85=8C=EC=9D=BC?=
=?UTF-8?q?=EB=B7=B0=EC=99=80=20=EC=97=B0=EA=B2=B0=ED=95=98=EB=8A=94=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=803?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../presentation/main/explore/popular/PopularAdapter.kt | 8 ++++----
.../release/keyneez/presentation/main/like/LikeAdapter.kt | 7 +++++++
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index c60fbca..be20fe5 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -31,10 +31,10 @@ class PopularAdapter(
}
popular.Likes = listOf(ResponseGetPopularDto.Liked(0, 0, 0))
}
- binding.root.setOnClickListener {
- val intent = Intent(binding.root.context, DetailActivity::class.java)
- intent.putExtra("contentId", popular.content)
- ContextCompat.startActivity(binding.root.context, intent, null)
+// binding.root.setOnClickListener {
+// val intent = Intent(binding.root.context, DetailActivity::class.java)
+// intent.putExtra("contentId", popular.content)
+// ContextCompat.startActivity(binding.root.context, intent, null)
// }
}
}
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
index 9ef5dc4..d4ea667 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
@@ -1,8 +1,10 @@
package com.release.keyneez.presentation.main.like
+import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.core.content.ContextCompat
import androidx.lifecycle.LiveData
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
@@ -38,6 +40,11 @@ class LikeAdapter(
}
}
}
+ binding.root.setOnClickListener {
+ val intent = Intent(binding.root.context, DetailActivity::class.java)
+ intent.putExtra("contentId", item.content)
+ ContextCompat.startActivity(binding.root.context, intent, null)
+ }
isEdit.observeForever { isEdit ->
if (isEdit == false) {
item.isSelected = false
From a2ae50b9f97c549a052ae56b0fe1ade0918825a7 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Wed, 9 Aug 2023 15:55:27 +0900
Subject: [PATCH 104/109] =?UTF-8?q?[ADD/#33]=20=EB=94=94=ED=85=8C=EC=9D=BC?=
=?UTF-8?q?=EB=B7=B0=EC=99=80=20=EC=97=B0=EA=B2=B0=ED=95=98=EB=8A=94=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=804?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/like/LikeAdapter.kt | 10 +++++-----
.../keyneez/presentation/main/search/SearchAdapter.kt | 8 +++++++-
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
index d4ea667..a054c9c 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
@@ -40,11 +40,11 @@ class LikeAdapter(
}
}
}
- binding.root.setOnClickListener {
- val intent = Intent(binding.root.context, DetailActivity::class.java)
- intent.putExtra("contentId", item.content)
- ContextCompat.startActivity(binding.root.context, intent, null)
- }
+// binding.root.setOnClickListener {
+// val intent = Intent(binding.root.context, DetailActivity::class.java)
+// intent.putExtra("contentId", item.content)
+// ContextCompat.startActivity(binding.root.context, intent, null)
+// }
isEdit.observeForever { isEdit ->
if (isEdit == false) {
item.isSelected = false
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
index b786184..eff734f 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
@@ -1,7 +1,9 @@
package com.release.keyneez.presentation.main.search
+import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto
@@ -43,7 +45,11 @@ class SearchAdapter(private val clickLike: (Int, Boolean) -> Unit) :
}
search.Likes = listOf(ResponseGetSearchResultDto.Liked(0, 0, 0))
}
- // 여기 상세뷰와 연결하는 코드 작성하기
+// binding.root.setOnClickListener {
+// val intent = Intent(binding.root.context, DetailActivity::class.java)
+// intent.putExtra("contentId", search.content)
+// ContextCompat.startActivity(binding.root.context, intent, null)
+// }
}
}
From b45228ea15661b4a6cdb2010f8e06b38dd566ca3 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Mon, 14 Aug 2023 22:09:04 +0900
Subject: [PATCH 105/109] =?UTF-8?q?[MOD/#33]=20=EB=A6=B0=ED=8A=B8=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
---
.../com/release/keyneez/presentation/main/like/LikeAdapter.kt | 2 --
1 file changed, 2 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
index a054c9c..af5157b 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeAdapter.kt
@@ -1,10 +1,8 @@
package com.release.keyneez.presentation.main.like
-import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.core.content.ContextCompat
import androidx.lifecycle.LiveData
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
From cac7941abb952fe1b4fc25aa014e981a51218d40 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 17 Aug 2023 12:17:11 +0900
Subject: [PATCH 106/109] =?UTF-8?q?[MOD/#33]=20=EC=A2=8B=EC=95=84=EC=9A=94?=
=?UTF-8?q?=EB=B7=B0=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/release/keyneez/presentation/main/like/LikeFragment.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
index 5a08515..036bcd0 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/like/LikeFragment.kt
@@ -132,7 +132,7 @@ class LikeFragment :
}
}
}
-// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty() -> 이게 문제였음....와우
+// binding.btnLikeEdit.isEnabled = likeList.isNotEmpty()
}
override fun onDestroyView() {
From faa7a0b79bdf36f10974cd56f8c78fc3616347d2 Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 17 Aug 2023 12:19:42 +0900
Subject: [PATCH 107/109] =?UTF-8?q?[MOD/#33]=20androidManifest=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f9209da..00b757a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,9 @@
xmlns:tools="http://schemas.android.com/tools">
+
+ android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
+ android:exported="true">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 035f3efdb162c4dfc246f7636ea2606afcd6032d Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 17 Aug 2023 12:29:15 +0900
Subject: [PATCH 108/109] =?UTF-8?q?[MOD/#33]=20retrofit=20module=20?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/release/keyneez/di/RetrofitModule.kt | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt b/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
index 4a9ffc2..7bd2327 100644
--- a/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
+++ b/app/src/main/java/com/release/keyneez/di/RetrofitModule.kt
@@ -2,6 +2,7 @@ package com.release.keyneez.di
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import com.release.keyneez.BuildConfig.BASE_URL
+import com.release.keyneez.data.source.LocalPrefDataSource
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -23,16 +24,16 @@ object RetrofitModule {
@Provides
@Singleton
- fun providesKeyneezInterceptor(): Interceptor = Interceptor { chain ->
+ fun providesKeyneezInterceptor(
+ localPrefDataSource: LocalPrefDataSource
+ ): Interceptor = Interceptor { chain ->
with(chain) {
- val requestBuilder = request().newBuilder()
- .addHeader(CONTENT_TYPE, APPLICATION_JSON)
- .addHeader(
+ proceed(
+ request().newBuilder().addHeader(CONTENT_TYPE, APPLICATION_JSON).addHeader(
AUTHORIZATION,
- "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJLZWVuemUiLCJzdWIiOiIyIiwiaWF0IjoxNjkxMTQ3MjA3LCJleHAiOjE2OTExNTQ0MDd9.80aY7H3MdIMl8ir7selmL5esLJi1ISaLz7KRLWvRDv8"
- ) // 엑세스 토큰 값을 직접 설정합니다.
- .build()
- proceed(requestBuilder)
+ requireNotNull(localPrefDataSource.getAccessToken())
+ ).build()
+ )
}
}
From 1fb8bd6b68b1705aa1889ed248b9cf6fd5ffb9bc Mon Sep 17 00:00:00 2001
From: 0zlrlo <99941493+0zlrlo@users.noreply.github.com>
Date: Thu, 17 Aug 2023 12:31:23 +0900
Subject: [PATCH 109/109] =?UTF-8?q?[MOD/#33]=20adapter=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../keyneez/presentation/main/explore/popular/PopularAdapter.kt | 2 --
.../keyneez/presentation/main/explore/recent/RecentAdapter.kt | 2 --
.../release/keyneez/presentation/main/search/SearchAdapter.kt | 2 --
3 files changed, 6 deletions(-)
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
index be20fe5..3a34150 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/popular/PopularAdapter.kt
@@ -1,9 +1,7 @@
package com.release.keyneez.presentation.main.explore.popular
-import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
-import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetPopularDto
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
index 863384b..9e42394 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/explore/recent/RecentAdapter.kt
@@ -1,9 +1,7 @@
package com.release.keyneez.presentation.main.explore.recent
-import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
-import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetRecentDto
diff --git a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
index eff734f..a9d8d60 100644
--- a/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
+++ b/app/src/main/java/com/release/keyneez/presentation/main/search/SearchAdapter.kt
@@ -1,9 +1,7 @@
package com.release.keyneez.presentation.main.search
-import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
-import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.release.keyneez.data.entity.response.ResponseGetSearchResultDto