diff --git a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt index 0e95a4e3..40267cc0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt @@ -288,7 +288,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) { viewModel { EventViewModel(get()) } viewModel { NotificationSettingsViewModel(get()) } viewModel { ContentSettingsViewModel() } - viewModel { SettingsViewModel(get()) } + viewModel { SettingsViewModel(get(), get()) } viewModel { SeriesDetailViewModel(get(), get()) } viewModel { SeriesListAllViewModel(get()) } viewModel { SeriesContentAllViewModel(get()) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt index 7fe190dc..7afc82a2 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsActivity.kt @@ -191,7 +191,7 @@ class SettingsActivity : BaseActivity(ActivitySettingsB alarmViewModel.truncate() recentContentViewModel.truncate() - finishAffinity() + finishAffinity() startActivity(Intent(applicationContext, SplashActivity::class.java)) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt index f98a3b6e..cc4cd913 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/SettingsViewModel.kt @@ -6,10 +6,14 @@ import com.orhanobut.logger.Logger 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.chat.talk.room.ChatRepository import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.user.UserRepository -class SettingsViewModel(private val userRepository: UserRepository) : BaseViewModel() { +class SettingsViewModel( + private val userRepository: UserRepository, + private val chatRepository: ChatRepository +) : BaseViewModel() { private val _toastLiveData = MutableLiveData() val toastLiveData: LiveData get() = _toastLiveData @@ -26,7 +30,18 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo .subscribe( { if (it.success) { - onSuccess() + // ViewModel 레이어에서 로컬 채팅 메시지 삭제 후 onSuccess 호출 + chatRepository.clearAllMessagesOnLogout() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + onSuccess() + }, { err -> + // 실패하더라도 UX를 위해 동일 흐름 진행 + err.message?.let { msg -> Logger.w(msg) } + onSuccess() + }) + .let { disposable -> compositeDisposable.add(disposable) } } else { if (it.message != null) { _toastLiveData.postValue(it.message) @@ -53,7 +68,16 @@ class SettingsViewModel(private val userRepository: UserRepository) : BaseViewMo .subscribe( { if (it.success) { - onSuccess() + chatRepository.clearAllMessagesOnLogout() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + onSuccess() + }, { err -> + err.message?.let { msg -> Logger.w(msg) } + onSuccess() + }) + .let { disposable -> compositeDisposable.add(disposable) } } else { if (it.message != null) { _toastLiveData.postValue(it.message)