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.

at main 96 lines 2.4 kB view raw
1module UI.Other.State exposing (..) 2 3import Alien 4import Common exposing (ServiceWorkerStatus(..)) 5import Dict 6import Notifications 7import Return exposing (return) 8import Time 9import UI.Common.State as Common 10import UI.Ports as Ports 11import UI.Types exposing (..) 12 13 14 15-- 🔱 16 17 18installedServiceWorker : Manager 19installedServiceWorker model = 20 case model.serviceWorkerStatus of 21 InstallingNew -> 22 Return.singleton { model | serviceWorkerStatus = WaitingForActivation } 23 24 _ -> 25 Return.singleton { model | serviceWorkerStatus = Activated } 26 27 28installingServiceWorker : Manager 29installingServiceWorker model = 30 Return.singleton { model | serviceWorkerStatus = InstallingNew } 31 32 33redirectToBrain : Alien.Event -> Manager 34redirectToBrain event model = 35 return model (Ports.toBrain event) 36 37 38reloadApp : Manager 39reloadApp model = 40 return model (Ports.reloadApp ()) 41 42 43setIsOnline : Bool -> Manager 44setIsOnline bool model = 45 { model | isOnline = bool } 46 |> Return.singleton 47 |> Return.command 48 (case model.nowPlaying of 49 Just { isPlaying, item } -> 50 let 51 trackId = 52 (Tuple.second item.identifiedTrack).id 53 in 54 Ports.reloadAudioNodeIfNeeded 55 { play = isPlaying 56 , progress = 57 if model.rememberProgress then 58 Dict.get trackId model.progress 59 60 else 61 Nothing 62 , trackId = trackId 63 } 64 65 Nothing -> 66 Cmd.none 67 ) 68 |> Return.andThen 69 (case ( model.isOnline, bool ) of 70 ( False, True ) -> 71 syncHypaethralData 72 73 _ -> 74 Return.singleton 75 ) 76 77 78setCurrentTime : Time.Posix -> Manager 79setCurrentTime time model = 80 Return.singleton { model | currentTime = time } 81 82 83setCurrentTimeZone : Time.Zone -> Manager 84setCurrentTimeZone zone model = 85 Return.singleton { model | currentTimeZone = zone } 86 87 88 89-- ⚗️ 90 91 92syncHypaethralData : Manager 93syncHypaethralData model = 94 model 95 |> Common.showNotification (Notifications.casual "Syncing") 96 |> Return.command (Ports.toBrain <| Alien.trigger Alien.SyncHypaethralData)