From 084c306159d011d2e3e4a60aca7e94a8a357c533 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 20 Sep 2024 12:11:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=A6=88=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20-=20=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=ED=8C=94=EB=A1=9C=EC=9A=B0=EC=99=80=20=EC=95=8C=EB=A6=BC?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20-=20=ED=8C=94=EB=A1=9C=EC=9E=89=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EC=97=90=EC=84=9C=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EC=BC=9C=EA=B8=B0/=EB=81=84=EA=B8=B0=20=EC=83=81=ED=83=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 --- .../series/detail/SeriesDetailActivity.kt | 66 +++++++++++++++---- .../series/detail/SeriesDetailViewModel.kt | 42 +++--------- 2 files changed, 61 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt index fdcea8c..2c7af9d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailActivity.kt @@ -20,6 +20,7 @@ import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.databinding.ActivitySeriesDetailBinding +import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment import kr.co.vividnext.sodalive.extensions.dpToPx import org.koin.android.ext.android.inject @@ -170,29 +171,68 @@ class SeriesDetailActivity : BaseActivity( if (SharedPreferenceManager.userId != creator.creatorId) { binding.ivFollow.visibility = View.VISIBLE - binding.ivFollow.setImageResource( - if (creator.isFollow) { - R.drawable.btn_following_big - } else { - R.drawable.btn_follow_big - } - ) + + if (creator.isFollow) { + binding.ivFollow.setImageResource( + if (creator.isNotify) { + R.drawable.btn_following_big + } else { + R.drawable.btn_following_no_alarm_big + } + ) + } else { + binding.ivFollow.setImageResource(R.drawable.btn_follow_big) + } } else { binding.ivFollow.visibility = View.GONE } binding.ivFollow.setOnClickListener { if (creator.isFollow) { - viewModel.unFollow(creator.creatorId) { - creator.isFollow = false - binding.ivFollow.setImageResource(R.drawable.btn_follow_big) - } + val notifyFragment = CreatorFollowNotifyFragment( + onClickNotifyAll = { + viewModel.follow( + creatorId = creator.creatorId, + follow = true, + notify = true + ) { + creator.isFollow = true + creator.isNotify = true + binding.ivFollow.setImageResource(R.drawable.btn_following_big) + } + }, + onClickNotifyNone = { + viewModel.follow( + creatorId = creator.creatorId, + follow = true, + notify = false + ) { + creator.isFollow = true + creator.isNotify = false + binding.ivFollow.setImageResource(R.drawable.btn_following_no_alarm_big) + } + }, + onClickUnFollow = { + viewModel.follow( + creatorId = creator.creatorId, + follow = false, + notify = false + ) { + creator.isFollow = false + creator.isNotify = false + binding.ivFollow.setImageResource(R.drawable.btn_follow_big) + } + } + ) + + if (notifyFragment.isAdded) return@setOnClickListener + notifyFragment.show(supportFragmentManager, notifyFragment.tag) } else { - viewModel.follow(creator.creatorId) { + viewModel.follow(creatorId = creator.creatorId) { creator.isFollow = true + creator.isNotify = true binding.ivFollow.setImageResource(R.drawable.btn_following_big) } - } } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt index 2963214..4f2407b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt @@ -63,11 +63,18 @@ class SeriesDetailViewModel( ) } - fun follow(creatorId: Long, onSuccess: () -> Unit) { + fun follow( + creatorId: Long, + follow: Boolean = true, + notify: Boolean = true, + onSuccess: () -> Unit + ) { _isLoading.value = true compositeDisposable.add( userRepository.creatorFollow( creatorId = creatorId, + follow, + notify, token = "Bearer ${SharedPreferenceManager.token}" ) .subscribeOn(Schedulers.io()) @@ -95,37 +102,4 @@ class SeriesDetailViewModel( ) ) } - - fun unFollow(creatorId: Long, onSuccess: () -> Unit) { - _isLoading.value = true - compositeDisposable.add( - userRepository.creatorUnFollow( - creatorId, - "Bearer ${SharedPreferenceManager.token}" - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - { - if (it.success && it.data != null) { - onSuccess() - } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } - } - _isLoading.value = false - }, - { - _isLoading.value = false - it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") - } - ) - ) - } }