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.

feat: Closes #437

+118
+6
src/Core/UI.elm
··· 436 436 AssistWithSelectingPlaylist -> 437 437 Playlists.assistWithSelectingPlaylist 438 438 439 + ConvertCollectionToPlaylist a -> 440 + Playlists.convertCollectionToPlaylist a 441 + 442 + ConvertPlaylistToCollection a -> 443 + Playlists.convertPlaylistToCollection a 444 + 439 445 CreateCollection -> 440 446 Playlists.createCollection 441 447
+20
src/Core/UI/Commands/Alfred.elm
··· 215 215 |> UI.TracksMsg 216 216 |> Command 217 217 } 218 + 219 + -- 220 + , { icon = Just (Icons.waves 16) 221 + , title = 222 + if playlist.collection then 223 + "Convert to playlist" 224 + 225 + else 226 + "Convert to collection" 227 + , value = 228 + if playlist.collection then 229 + { name = playlist.name } 230 + |> UI.ConvertCollectionToPlaylist 231 + |> Command 232 + 233 + else 234 + { name = playlist.name } 235 + |> UI.ConvertPlaylistToCollection 236 + |> Command 237 + } 218 238 ] 219 239 220 240 Nothing ->
+22
src/Core/UI/Playlists/ContextMenu.elm
··· 72 72 , removePlaylist menuMsg confirmation playlist 73 73 , renamePlaylist playlist 74 74 , storeInCache tracksFromPlaylist 75 + , convert playlist 75 76 ] 76 77 coordinates 77 78 ··· 88 89 { inFront = False, tracks = identifiedTracks } 89 90 |> Queue.AddTracks 90 91 |> QueueMsg 92 + 93 + -- 94 + , active = False 95 + } 96 + 97 + 98 + convert playlist = 99 + Item 100 + { icon = Icons.waves 101 + , label = 102 + if playlist.collection then 103 + "Convert to playlist" 104 + 105 + else 106 + "Convert to collection" 107 + , msg = 108 + if playlist.collection then 109 + ConvertCollectionToPlaylist { name = playlist.name } 110 + 111 + else 112 + ConvertPlaylistToCollection { name = playlist.name } 91 113 92 114 -- 93 115 , active = False
+68
src/Core/UI/Playlists/State.elm
··· 179 179 |> (\a -> Alfred.assign a model) 180 180 181 181 182 + convertCollectionToPlaylist : { name : String } -> Manager 183 + convertCollectionToPlaylist { name } model = 184 + case 185 + List.findIndex 186 + (\p -> Maybe.isNothing p.autoGenerated && p.name == name) 187 + model.playlists 188 + of 189 + Just playlistIndex -> 190 + model.playlists 191 + |> List.updateAt 192 + playlistIndex 193 + (\p -> { p | collection = False }) 194 + |> (\newInventory -> 195 + { model 196 + | playlists = newInventory 197 + , selectedPlaylist = 198 + Maybe.map 199 + (\p -> 200 + if p.name == name then 201 + { p | collection = False } 202 + 203 + else 204 + p 205 + ) 206 + model.selectedPlaylist 207 + } 208 + ) 209 + |> Return.singleton 210 + |> andThen User.savePlaylists 211 + 212 + Nothing -> 213 + Return.singleton model 214 + 215 + 216 + convertPlaylistToCollection : { name : String } -> Manager 217 + convertPlaylistToCollection { name } model = 218 + case 219 + List.findIndex 220 + (\p -> Maybe.isNothing p.autoGenerated && p.name == name) 221 + model.playlists 222 + of 223 + Just playlistIndex -> 224 + model.playlists 225 + |> List.updateAt 226 + playlistIndex 227 + (\p -> { p | collection = True }) 228 + |> (\newInventory -> 229 + { model 230 + | playlists = newInventory 231 + , selectedPlaylist = 232 + Maybe.map 233 + (\p -> 234 + if p.name == name then 235 + { p | collection = True } 236 + 237 + else 238 + p 239 + ) 240 + model.selectedPlaylist 241 + } 242 + ) 243 + |> Return.singleton 244 + |> andThen User.savePlaylists 245 + 246 + Nothing -> 247 + Return.singleton model 248 + 249 + 182 250 create : { collection : Bool } -> Manager 183 251 create { collection } model = 184 252 case model.newPlaylistContext of
+2
src/Core/UI/Types.elm
··· 260 260 | AssistWithAddingTracksToCollection (List IdentifiedTrack) 261 261 | AssistWithAddingTracksToPlaylist (List IdentifiedTrack) 262 262 | AssistWithSelectingPlaylist 263 + | ConvertCollectionToPlaylist { name : String } 264 + | ConvertPlaylistToCollection { name : String } 263 265 | CreateCollection 264 266 | CreatePlaylist 265 267 | DeactivatePlaylist