From 551e52731bf7ded3b5156fa219a3cc9c702456d1 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Sun, 29 Dec 2024 14:53:43 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fix=20issue=20with=20sc?= =?UTF-8?q?reen=20reset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ua/acclorite/book_story/ui/book_info/BookInfoModel.kt | 6 +++++- .../java/ua/acclorite/book_story/ui/reader/ReaderModel.kt | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt index 5696142c..ebefc78e 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/book_info/BookInfoModel.kt @@ -62,6 +62,7 @@ class BookInfoModel @Inject constructor( val state = _state.asStateFlow() private var eventJob = SupervisorJob() + private var resetJob: Job? = null private var updateJob: Job? = null private var snackBarJob: Job? = null @@ -785,7 +786,9 @@ class BookInfoModel @Inject constructor( } eventJob.cancel() + resetJob?.cancel() eventJob.join() + resetJob?.join() eventJob = SupervisorJob() _state.update { @@ -807,10 +810,11 @@ class BookInfoModel @Inject constructor( } fun resetScreen() { - viewModelScope.launch(Dispatchers.Main) { + resetJob = viewModelScope.launch(Dispatchers.Main) { eventJob.cancel() eventJob = SupervisorJob() + yield() _state.update { BookInfoState() } } } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt index e410948d..d2e0d43c 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderModel.kt @@ -61,6 +61,7 @@ class ReaderModel @Inject constructor( val state = _state.asStateFlow() private var eventJob = SupervisorJob() + private var resetJob: Job? = null private var scrollJob: Job? = null private var updateJob: Job? = null @@ -564,7 +565,9 @@ class ReaderModel @Inject constructor( } eventJob.cancel() + resetJob?.cancel() eventJob.join() + resetJob?.join() eventJob = SupervisorJob() _state.update { @@ -687,10 +690,11 @@ class ReaderModel @Inject constructor( } fun resetScreen() { - viewModelScope.launch(Dispatchers.Main) { + resetJob = viewModelScope.launch(Dispatchers.Main) { eventJob.cancel() eventJob = SupervisorJob() + yield() _state.update { ReaderState() } } }