2020-07-14 20:38:11 +00:00
|
|
|
module Util.Folder exposing
|
|
|
|
( isFolderMember
|
|
|
|
, mkFolderOption
|
2020-08-08 12:16:13 +00:00
|
|
|
, onlyVisible
|
2020-07-14 20:38:11 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
import Api.Model.FolderItem exposing (FolderItem)
|
|
|
|
import Api.Model.IdName exposing (IdName)
|
|
|
|
import Comp.Dropdown
|
|
|
|
import Data.Flags exposing (Flags)
|
|
|
|
|
|
|
|
|
|
|
|
mkFolderOption : Flags -> List FolderItem -> IdName -> Comp.Dropdown.Option
|
|
|
|
mkFolderOption flags allFolders idref =
|
|
|
|
let
|
|
|
|
folder =
|
|
|
|
List.filter (\e -> e.id == idref.id) allFolders
|
|
|
|
|> List.head
|
|
|
|
|
|
|
|
isMember =
|
|
|
|
folder
|
|
|
|
|> Maybe.map .isMember
|
|
|
|
|> Maybe.withDefault False
|
|
|
|
|
|
|
|
isOwner =
|
|
|
|
Maybe.map .owner folder
|
|
|
|
|> Maybe.map .name
|
|
|
|
|> (==) (Maybe.map .user flags.account)
|
|
|
|
|
|
|
|
adds =
|
|
|
|
if isOwner then
|
|
|
|
"owner"
|
|
|
|
|
|
|
|
else if isMember then
|
|
|
|
"member"
|
|
|
|
|
|
|
|
else
|
|
|
|
""
|
|
|
|
in
|
2021-04-02 13:54:02 +00:00
|
|
|
{ text = idref.name, additional = adds }
|
2020-07-14 20:38:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
isFolderMember : List FolderItem -> Maybe String -> Bool
|
|
|
|
isFolderMember allFolders selected =
|
|
|
|
let
|
|
|
|
findFolder id =
|
|
|
|
List.filter (\e -> e.id == id) allFolders
|
|
|
|
|> List.head
|
|
|
|
|
|
|
|
folder =
|
|
|
|
Maybe.andThen findFolder selected
|
|
|
|
in
|
|
|
|
Maybe.map .isMember folder
|
|
|
|
|> Maybe.withDefault True
|
2020-08-08 12:16:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
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
|