From b1ef0c55af1de4e20ea48521a9aed7c2f77d6d8b Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Sat, 8 Aug 2020 14:16:13 +0200
Subject: [PATCH] Show only visible folders in search menu

---
 modules/webapp/src/main/elm/Comp/SearchMenu.elm |  7 ++++++-
 modules/webapp/src/main/elm/Util/Folder.elm     | 11 +++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/modules/webapp/src/main/elm/Comp/SearchMenu.elm b/modules/webapp/src/main/elm/Comp/SearchMenu.elm
index fb7aeb67..af14a7c7 100644
--- a/modules/webapp/src/main/elm/Comp/SearchMenu.elm
+++ b/modules/webapp/src/main/elm/Comp/SearchMenu.elm
@@ -32,6 +32,7 @@ import Html exposing (..)
 import Html.Attributes exposing (..)
 import Html.Events exposing (onCheck, onClick, onInput)
 import Http
+import Util.Folder
 import Util.Html exposing (KeyCode(..))
 import Util.ItemDragDrop as DD
 import Util.Maybe
@@ -567,7 +568,11 @@ updateDrop ddm flags settings msg model =
         GetFolderResp (Ok fs) ->
             let
                 model_ =
-                    { model | folderList = Comp.FolderSelect.init fs.items }
+                    { model
+                        | folderList =
+                            Util.Folder.onlyVisible flags fs.items
+                                |> Comp.FolderSelect.init
+                    }
             in
             { model = model_
             , cmd = Cmd.none
diff --git a/modules/webapp/src/main/elm/Util/Folder.elm b/modules/webapp/src/main/elm/Util/Folder.elm
index 64ea2572..ba32bb67 100644
--- a/modules/webapp/src/main/elm/Util/Folder.elm
+++ b/modules/webapp/src/main/elm/Util/Folder.elm
@@ -1,6 +1,7 @@
 module Util.Folder exposing
     ( isFolderMember
     , mkFolderOption
+    , onlyVisible
     )
 
 import Api.Model.FolderItem exposing (FolderItem)
@@ -51,3 +52,13 @@ isFolderMember allFolders selected =
     in
     Maybe.map .isMember folder
         |> Maybe.withDefault True
+
+
+onlyVisible : Flags -> List FolderItem -> List FolderItem
+onlyVisible flags folders =
+    let
+        isVisible folder =
+            folder.isMember
+                || (Maybe.map .user flags.account == Just folder.owner.name)
+    in
+    List.filter isVisible folders