parent
29aca74651
commit
d5956c024d
|
@ -182,7 +182,18 @@ class SeriesDetailActivity : BaseActivity<ActivitySeriesDetailBinding>(
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.ivFollow.setOnClickListener {
|
binding.ivFollow.setOnClickListener {
|
||||||
|
if (creator.isFollow) {
|
||||||
|
viewModel.unFollow(creator.creatorId) {
|
||||||
|
creator.isFollow = false
|
||||||
|
binding.ivFollow.setImageResource(R.drawable.btn_follow_big)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
viewModel.follow(creator.creatorId) {
|
||||||
|
creator.isFollow = true
|
||||||
|
binding.ivFollow.setImageResource(R.drawable.btn_following_big)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,12 @@ import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
import kr.co.vividnext.sodalive.audio_content.series.SeriesRepository
|
import kr.co.vividnext.sodalive.audio_content.series.SeriesRepository
|
||||||
import kr.co.vividnext.sodalive.base.BaseViewModel
|
import kr.co.vividnext.sodalive.base.BaseViewModel
|
||||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||||
|
import kr.co.vividnext.sodalive.user.UserRepository
|
||||||
|
|
||||||
class SeriesDetailViewModel(private val repository: SeriesRepository) : BaseViewModel() {
|
class SeriesDetailViewModel(
|
||||||
|
private val repository: SeriesRepository,
|
||||||
|
private val userRepository: UserRepository
|
||||||
|
) : BaseViewModel() {
|
||||||
private val _toastLiveData = MutableLiveData<String?>()
|
private val _toastLiveData = MutableLiveData<String?>()
|
||||||
val toastLiveData: LiveData<String?>
|
val toastLiveData: LiveData<String?>
|
||||||
get() = _toastLiveData
|
get() = _toastLiveData
|
||||||
|
@ -58,4 +62,70 @@ class SeriesDetailViewModel(private val repository: SeriesRepository) : BaseView
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun follow(creatorId: Long, onSuccess: () -> Unit) {
|
||||||
|
_isLoading.value = true
|
||||||
|
compositeDisposable.add(
|
||||||
|
userRepository.creatorFollow(
|
||||||
|
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("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
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("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -209,7 +209,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
||||||
viewModel { EventViewModel(get()) }
|
viewModel { EventViewModel(get()) }
|
||||||
viewModel { NotificationSettingsViewModel(get()) }
|
viewModel { NotificationSettingsViewModel(get()) }
|
||||||
viewModel { SettingsViewModel(get()) }
|
viewModel { SettingsViewModel(get()) }
|
||||||
viewModel { SeriesDetailViewModel(get()) }
|
viewModel { SeriesDetailViewModel(get(), get()) }
|
||||||
viewModel { SeriesListAllViewModel(get()) }
|
viewModel { SeriesListAllViewModel(get()) }
|
||||||
viewModel { SeriesContentAllViewModel(get()) }
|
viewModel { SeriesContentAllViewModel(get()) }
|
||||||
viewModel { SignOutViewModel(get()) }
|
viewModel { SignOutViewModel(get()) }
|
||||||
|
|
Loading…
Reference in New Issue