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("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") - } - ) - ) - } }