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)