🛠️ Fix issue with screen reset

This commit is contained in:
Acclorite 2024-12-29 14:53:43 +02:00
parent d3b537d733
commit 551e52731b
2 changed files with 10 additions and 2 deletions

View file

@ -62,6 +62,7 @@ class BookInfoModel @Inject constructor(
val state = _state.asStateFlow() val state = _state.asStateFlow()
private var eventJob = SupervisorJob() private var eventJob = SupervisorJob()
private var resetJob: Job? = null
private var updateJob: Job? = null private var updateJob: Job? = null
private var snackBarJob: Job? = null private var snackBarJob: Job? = null
@ -785,7 +786,9 @@ class BookInfoModel @Inject constructor(
} }
eventJob.cancel() eventJob.cancel()
resetJob?.cancel()
eventJob.join() eventJob.join()
resetJob?.join()
eventJob = SupervisorJob() eventJob = SupervisorJob()
_state.update { _state.update {
@ -807,10 +810,11 @@ class BookInfoModel @Inject constructor(
} }
fun resetScreen() { fun resetScreen() {
viewModelScope.launch(Dispatchers.Main) { resetJob = viewModelScope.launch(Dispatchers.Main) {
eventJob.cancel() eventJob.cancel()
eventJob = SupervisorJob() eventJob = SupervisorJob()
yield()
_state.update { BookInfoState() } _state.update { BookInfoState() }
} }
} }

View file

@ -61,6 +61,7 @@ class ReaderModel @Inject constructor(
val state = _state.asStateFlow() val state = _state.asStateFlow()
private var eventJob = SupervisorJob() private var eventJob = SupervisorJob()
private var resetJob: Job? = null
private var scrollJob: Job? = null private var scrollJob: Job? = null
private var updateJob: Job? = null private var updateJob: Job? = null
@ -564,7 +565,9 @@ class ReaderModel @Inject constructor(
} }
eventJob.cancel() eventJob.cancel()
resetJob?.cancel()
eventJob.join() eventJob.join()
resetJob?.join()
eventJob = SupervisorJob() eventJob = SupervisorJob()
_state.update { _state.update {
@ -687,10 +690,11 @@ class ReaderModel @Inject constructor(
} }
fun resetScreen() { fun resetScreen() {
viewModelScope.launch(Dispatchers.Main) { resetJob = viewModelScope.launch(Dispatchers.Main) {
eventJob.cancel() eventJob.cancel()
eventJob = SupervisorJob() eventJob = SupervisorJob()
yield()
_state.update { ReaderState() } _state.update { ReaderState() }
} }
} }