package kr.co.vividnext.sodalive.audio_content.main.new_content_upload_creator

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.audio_content.AudioContentRepository
import kr.co.vividnext.sodalive.audio_content.main.GetNewContentUploadCreator
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager

class AudioContentMainNewContentCreatorViewModel(
    private val repository: AudioContentRepository
) : BaseViewModel() {
    private val _toastLiveData = MutableLiveData<String?>()
    val toastLiveData: LiveData<String?>
        get() = _toastLiveData

    private var _newContentUploadCreatorListLiveData =
        MutableLiveData<List<GetNewContentUploadCreator>>()
    val newContentUploadCreatorListLiveData: LiveData<List<GetNewContentUploadCreator>>
        get() = _newContentUploadCreatorListLiveData

    fun getNewContentUploadCreatorList() {
        compositeDisposable.add(
            repository.getNewContentUploadCreatorList(
                token = "Bearer ${SharedPreferenceManager.token}"
            )
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(
                    {
                        if (it.success && it.data != null) {
                            _newContentUploadCreatorListLiveData.postValue(it.data!!)
                        } else {
                            if (it.message != null) {
                                _toastLiveData.postValue(it.message)
                            } else {
                                _toastLiveData.postValue(
                                    "크리에이터 리스트를 불러오지 못했습니다. 다시 시도해 주세요.\n" +
                                        "계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
                                )
                            }
                        }
                    },
                    {
                        it.message?.let { message -> Logger.e(message) }
                        _toastLiveData.postValue(
                            "크리에이터 리스트를 불러오지 못했습니다. 다시 시도해 주세요.\n" +
                                "계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
                        )
                    }
                )
        )
    }
}
