fix(settings): 로그아웃 시 로컬 채팅 메시지 전체 삭제 연동
- SettingsViewModel에 ChatRepository 주입 및 삭제 로직 처리 - DI(Koin) 수정으로 SettingsViewModel에 ChatRepository 바인딩 - 삭제 실패 시에도 사용자 로그아웃 흐름 유지
This commit is contained in:
		@@ -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()) }
 | 
			
		||||
 
 | 
			
		||||
@@ -191,7 +191,7 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>(ActivitySettingsB
 | 
			
		||||
            alarmViewModel.truncate()
 | 
			
		||||
            recentContentViewModel.truncate()
 | 
			
		||||
 | 
			
		||||
             finishAffinity()
 | 
			
		||||
            finishAffinity()
 | 
			
		||||
            startActivity(Intent(applicationContext, SplashActivity::class.java))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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<String?>()
 | 
			
		||||
    val toastLiveData: LiveData<String?>
 | 
			
		||||
        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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user