오디션

- 오디션 알림 받기 설정 추가
This commit is contained in:
2025-01-08 22:11:49 +09:00
parent 4180736065
commit 273ddb8b97
11 changed files with 85 additions and 5 deletions

View File

@@ -5,16 +5,21 @@ import android.graphics.Rect
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.media3.common.util.UnstableApi
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audition.detail.AuditionDetailActivity
import kr.co.vividnext.sodalive.base.BaseFragment
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.FragmentAuditionBinding
import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.main.MainActivity
import org.koin.android.ext.android.inject
@UnstableApi
class AuditionFragment : BaseFragment<FragmentAuditionBinding>(
FragmentAuditionBinding::inflate
) {
@@ -32,6 +37,12 @@ class AuditionFragment : BaseFragment<FragmentAuditionBinding>(
viewModel.getAuditionList()
}
override fun onResume() {
super.onResume()
setAuditionNotification(SharedPreferenceManager.isAuditionNotification)
}
private fun setupView() {
loadingDialog = LoadingDialog(requireActivity(), layoutInflater)
@@ -79,6 +90,12 @@ class AuditionFragment : BaseFragment<FragmentAuditionBinding>(
})
recyclerView.adapter = adapter
binding.ivNotification.setOnClickListener {
viewModel.updateNotificationSettings {
setAuditionNotification(it)
}
}
}
private fun bindData() {
@@ -98,4 +115,14 @@ class AuditionFragment : BaseFragment<FragmentAuditionBinding>(
adapter.addGroupedList(it)
}
}
private fun setAuditionNotification(isAuditionNotification: Boolean) {
binding.ivNotification.setImageResource(
if (isAuditionNotification) {
R.drawable.btn_audition_notification_selected
} else {
R.drawable.btn_audition_notification_normal
}
)
}
}

View File

@@ -7,8 +7,13 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.settings.notification.UpdateNotificationSettingRequest
import kr.co.vividnext.sodalive.user.UserRepository
class AuditionViewModel(private val repository: AuditionRepository) : BaseViewModel() {
class AuditionViewModel(
private val repository: AuditionRepository,
private val userRepository: UserRepository
) : BaseViewModel() {
private val _toastLiveData = MutableLiveData<String?>()
val toastLiveData: LiveData<String?>
get() = _toastLiveData
@@ -65,4 +70,30 @@ class AuditionViewModel(private val repository: AuditionRepository) : BaseViewMo
)
}
}
fun updateNotificationSettings(onSuccess: (Boolean) -> Unit) {
val isActiveNotification = !SharedPreferenceManager.isAuditionNotification
compositeDisposable.add(
userRepository.updateNotificationSettings(
request = UpdateNotificationSettingRequest(
audition = isActiveNotification
),
token = "Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
if (it.success) {
SharedPreferenceManager.isAuditionNotification = isActiveNotification
onSuccess(isActiveNotification)
} else {
onSuccess(!isActiveNotification)
}
},
{}
)
)
}
}