From da78d1b8357145844e8001e3406057d5bd481a6e Mon Sep 17 00:00:00 2001 From: Shinokuni <shinokuni@openserver.fr> Date: Tue, 26 Mar 2024 14:30:29 +0100 Subject: [PATCH] Improve state reset for some dialogs in FeedTab --- .../app/compose/feeds/FeedScreenModel.kt | 45 +++++++++---------- .../com/readrops/app/compose/feeds/FeedTab.kt | 9 ++-- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedScreenModel.kt b/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedScreenModel.kt index 7fd210fe..28cc76ac 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedScreenModel.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedScreenModel.kt @@ -94,7 +94,25 @@ class FeedScreenModel( fun setFolderExpandState(isExpanded: Boolean) = _feedState.update { it.copy(areFoldersExpanded = isExpanded) } - fun closeDialog() = _feedState.update { it.copy(dialog = null) } + fun closeDialog(dialog: DialogState? = null) { + if (dialog is DialogState.AddFeed) { + _addFeedDialogState.update { + it.copy( + url = "", + error = null, + ) + } + } else if (dialog is DialogState.AddFolder || dialog is DialogState.UpdateFolder) { + _folderState.update { + it.copy( + folder = Folder(), + nameError = null, + ) + } + } + + _feedState.update { it.copy(dialog = null) } + } fun openDialog(state: DialogState) { if (state is DialogState.UpdateFeed) { @@ -172,8 +190,7 @@ class FeedScreenModel( // TODO add support for all account types repository?.insertNewFeeds(listOf(url)) - closeDialog() - resetAddFeedDialogState() + closeDialog(DialogState.AddFeed) } else { val rssUrls = HtmlParser.getFeedLink(url, get()) @@ -185,8 +202,7 @@ class FeedScreenModel( // TODO add support for all account types repository?.insertNewFeeds(rssUrls.map { it.url }) - closeDialog() - resetAddFeedDialogState() + closeDialog(DialogState.AddFeed) } } } catch (e: Exception) { @@ -199,15 +215,6 @@ class FeedScreenModel( } } - fun resetAddFeedDialogState() { - _addFeedDialogState.update { - it.copy( - url = "", - error = null, - ) - } - } - // add feed // update feed @@ -298,13 +305,6 @@ class FeedScreenModel( ) } - fun resetFolderState() = _folderState.update { - it.copy( - folder = Folder(), - nameError = null, - ) - } - fun folderValidate(updateFolder: Boolean = false) { val name = _folderState.value.name.orEmpty() @@ -323,8 +323,7 @@ class FeedScreenModel( }) } - closeDialog() - resetFolderState() + closeDialog(DialogState.AddFolder) } } diff --git a/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedTab.kt b/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedTab.kt index 4ab4589b..433cfbc7 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedTab.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/feeds/FeedTab.kt @@ -69,8 +69,7 @@ object FeedTab : Tab { AddFeedDialog( viewModel = viewModel, onDismiss = { - viewModel.closeDialog() - viewModel.resetAddFeedDialogState() + viewModel.closeDialog(DialogState.AddFeed) }, ) } @@ -123,8 +122,7 @@ object FeedTab : Tab { FolderDialog( viewModel = viewModel, onDismiss = { - viewModel.closeDialog() - viewModel.resetFolderState() + viewModel.closeDialog(DialogState.AddFolder) }, onValidate = { viewModel.folderValidate() @@ -152,8 +150,7 @@ object FeedTab : Tab { updateFolder = true, viewModel = viewModel, onDismiss = { - viewModel.closeDialog() - viewModel.resetFolderState() + viewModel.closeDialog(DialogState.UpdateFolder(dialog.folder)) }, onValidate = { viewModel.folderValidate(updateFolder = true)