A music player that connects to your cloud/distributed storage.
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Closes #337

+28 -23
+1
elm.json
··· 28 28 "elm/time": "1.0.0", 29 29 "elm/url": "1.0.0", 30 30 "elm/virtual-dom": "1.0.2", 31 + "elm-community/dict-extra": "2.4.0", 31 32 "elm-community/html-extra": "3.4.0", 32 33 "elm-community/list-extra": "8.5.2", 33 34 "elm-community/maybe-extra": "5.3.0",
+27 -23
src/Applications/UI/Playlists/Alfred.elm
··· 1 1 module UI.Playlists.Alfred exposing (create, select) 2 2 3 3 import Alfred exposing (..) 4 + import Conditional exposing (ifThenElse) 5 + import Dict 6 + import Dict.Extra as Dict 4 7 import List.Extra as List 5 8 import Material.Icons.Round as Icons 6 9 import Playlists exposing (..) ··· 15 18 create : List IdentifiedTrack -> List Playlist -> Alfred UI.Msg 16 19 create tracks playlists = 17 20 let 18 - playlistNames = 19 - playlists 20 - |> List.map .name 21 - |> List.sortBy String.toLower 22 - 23 21 index = 24 - makeIndex playlistNames 22 + makeIndex playlists 25 23 in 26 24 Alfred.create 27 25 { action = createAction tracks ··· 80 78 select : List Playlist -> Alfred UI.Msg 81 79 select playlists = 82 80 let 83 - playlistNames = 84 - playlists 85 - |> List.map .name 86 - |> List.sortBy String.toLower 87 - 88 81 index = 89 - makeIndex playlistNames 82 + makeIndex playlists 90 83 in 91 84 Alfred.create 92 85 { action = selectAction playlists ··· 110 103 -- ㊙️ 111 104 112 105 113 - makeIndex playlistNames = 114 - playlistNames 106 + makeIndex playlists = 107 + playlists 108 + |> Dict.groupBy 109 + (\p -> ifThenElse p.autoGenerated "AutoGenerated Directory Playlists" "Your Playlists") 110 + |> Dict.toList 111 + |> List.reverse 115 112 |> List.map 116 - (\name -> 117 - { icon = Just (Icons.queue_music 16) 118 - , title = name 119 - , value = Alfred.StringValue name 120 - } 113 + (\( k, v ) -> 114 + ( k 115 + , v 116 + |> List.map 117 + (\playlist -> 118 + { icon = Just (Icons.queue_music 16) 119 + , title = playlist.name 120 + , value = Alfred.StringValue playlist.name 121 + } 122 + ) 123 + |> List.sortBy (.title >> String.toLower) 124 + ) 125 + ) 126 + |> List.map 127 + (\( k, v ) -> 128 + { name = Just k, items = v } 121 129 ) 122 - |> (\items -> 123 - { name = Nothing, items = items } 124 - ) 125 - |> List.singleton