···29293030retrieveFission : HypaethralBit -> Task String (Maybe Json.Decode.Value)
3131retrieveFission bit =
3232+ let
3333+ includePublicData =
3434+ bit == Playlists
3535+ in
3236 [ ( "fileName", fileName bit )
3737+ , ( "includePublicData", Json.Encode.bool includePublicData )
3338 ]
3439 |> TaskPort.call
3540 { function = "fromFission"
···9510096101saveFission : HypaethralBit -> Json.Decode.Value -> Task String ()
97102saveFission bit data =
103103+ let
104104+ _ =
105105+ Debug.log "saveFission" bit
106106+107107+ savePublicData =
108108+ bit == Playlists
109109+ in
98110 [ ( "fileName", fileName bit )
99111 , ( "data", data )
112112+ , ( "savePublicData", Json.Encode.bool savePublicData )
100113 ]
101114 |> TaskPort.call
102115 { function = "toFission"
···137150138151saveLocal : HypaethralBit -> Json.Decode.Value -> Task String ()
139152saveLocal bit data =
153153+ let
154154+ _ =
155155+ Debug.log "saveLocal" bit
156156+ in
140157 data
141158 |> Brain.Task.Ports.toCacheWithSuffix
142159 Alien.SyncLocal
143160 (hypaethralBitFileName bit)
161161+ |> Task.andThen
162162+ (\_ ->
163163+ let
164164+ _ =
165165+ Debug.log "saveLocal succeeded" ()
166166+ in
167167+ Task.succeed ()
168168+ )
144169 |> Task.mapError TaskPort.errorToStringCustom
145170146171
+37-20
src/Applications/Brain/User/State.elm
···418418419419saveHypaethralDataBitsTask : List HypaethralBit -> HypaethralData -> (HypaethralBit -> Json.Value -> Task String ()) -> Task String ()
420420saveHypaethralDataBitsTask bits userData saveFn =
421421- bits
422422- |> List.map
423423- (\bit ->
424424- let
425425- value =
426426- encodeHypaethralBit bit userData
427427- in
428428- Task.andThen
429429- (\_ -> saveFn bit value)
430430- (Hypaethral.saveLocal bit value)
431431- )
432432- |> Task.sequence
433433- |> Task.map (always ())
421421+ [ --------
422422+ -- LOCAL
423423+ --------
424424+ List.map
425425+ (\bit ->
426426+ Hypaethral.saveLocal bit (encodeHypaethralBit bit userData)
427427+ )
428428+ bits
429429+ , ---------
430430+ -- REMOTE
431431+ ---------
432432+ List.map
433433+ (\bit ->
434434+ saveFn bit (encodeHypaethralBit bit userData)
435435+ )
436436+ bits
437437+ ]
438438+ |> List.concat
439439+ |> List.foldl
440440+ (\nextTask -> Task.andThen (\_ -> nextTask))
441441+ (Task.succeed ())
434442435443436444{-| Save different parts of hypaethral data,
···452460 { model | hypaethralUserData = updatedUserData }
453461454462 save saveFn =
455455- saveFn
456456- |> saveHypaethralDataBitsTask bits updatedUserData
463463+ Time.now
464464+ |> Task.andThen
465465+ (\currentTime ->
466466+ saveHypaethralDataBitsTask
467467+ bits
468468+ { updatedUserData | modifiedAt = Just currentTime }
469469+ saveFn
470470+ )
457471 |> Common.attemptTask (always Brain.Bypass)
458472 |> return updatedModel
459473 in
···470484 model.currentTime
471485 (SaveHypaethralDataBits bits)
472486 (Task.succeed ())
473473- |> return updatedModel
487487+ |> return model
474488475489 else
476490 save (Hypaethral.saveDropbox accessToken)
···507521 |> Maybe.withDefault []
508522 |> EverySet.fromList
509523 |> EverySet.toList
524524+ |> Debug.log "Save bits"
510525 in
511526 c
512527 |> Cmd.map (SaveHypaethralDataSlowly >> UserMsg)
···649664 Alien.SecretKey
650665 |> Brain.Task.Ports.removeCache
651666 |> Task.mapError TaskPort.errorToStringCustom
667667+ |> Task.andThen (\_ -> Time.now)
652668 |> Task.andThen
653653- (\_ ->
669669+ (\currentTime ->
654670 case model.userSyncMethod of
655671 Just method ->
656672 let
657673 data =
658674 model.hypaethralUserData
659675 in
660660- saveAllHypaethralDataTask { data | modifiedAt = Just model.currentTime } method
676676+ saveAllHypaethralDataTask { data | modifiedAt = Just currentTime } method
661677662678 Nothing ->
663679 Task.succeed ()
···673689 passphrase
674690 |> Brain.Task.Ports.fabricateSecretKey
675691 |> Task.mapError TaskPort.errorToStringCustom
692692+ |> Task.andThen (\_ -> Time.now)
676693 |> Task.andThen
677677- (\_ ->
694694+ (\currentTime ->
678695 case model.userSyncMethod of
679696 Just method ->
680697 let
681698 data =
682699 model.hypaethralUserData
683700 in
684684- saveAllHypaethralDataTask { data | modifiedAt = Just model.currentTime } method
701701+ saveAllHypaethralDataTask { data | modifiedAt = Just currentTime } method
685702686703 Nothing ->
687704 Task.succeed ()
+3
src/Applications/UI.elm
···433433 ShowPlaylistListMenu a b ->
434434 Playlists.showListMenu a b
435435436436+ TogglePlaylistVisibility a ->
437437+ Playlists.toggleVisibility a
438438+436439 -----------------------------------------
437440 -- Routing
438441 -----------------------------------------
+23-14
src/Applications/UI/Playlists/State.elm
···7979 |> (\s -> s ++ " to the __" ++ properPlaylistName ++ "__ playlist")
8080 |> Notifications.success
8181 |> Common.showNotificationWithModel newModel
8282- |> andThen save
8282+ |> andThen User.savePlaylists
838384848585assistWithAddingTracksToPlaylist : List IdentifiedTrack -> Manager
···125125 , newPlaylistContext = Nothing
126126 , playlists = playlist :: model.playlists
127127 }
128128- |> save
128128+ |> User.savePlaylists
129129 |> andThen redirectToPlaylistIndexPage
130130131131 Nothing ->
···180180 else
181181 Return.singleton
182182 )
183183- |> andThen save
183183+ |> andThen User.savePlaylists
184184185185186186modify : Manager
···219219 , lastModifiedPlaylist = Just properName
220220 , playlists = newCollection ++ autoGenerated
221221 }
222222- |> save
222222+ |> User.savePlaylists
223223 |> andThen redirectToPlaylistIndexPage
224224225225 else
···284284 |> andThen User.savePlaylists
285285286286287287-save : Manager
288288-save model =
289289- model.playlists
290290- |> List.filterNot .autoGenerated
291291- |> Json.Encode.list Playlists.encode
292292- |> Alien.broadcast Alien.SavePlaylists
293293- |> Ports.toBrain
294294- |> return model
295295-296296-297287select : Playlist -> Manager
298288select playlist model =
299289 { model | page = Page.Index, selectedPlaylist = Just playlist }
···331321 coordinates
332322 in
333323 Return.singleton { model | contextMenu = Just contextMenu }
324324+325325+326326+toggleVisibility : Playlist -> Manager
327327+toggleVisibility playlist model =
328328+ let
329329+ updatedPlaylist =
330330+ { playlist | public = not playlist.public }
331331+ in
332332+ model.playlists
333333+ |> List.map
334334+ (\p ->
335335+ if p.name == playlist.name then
336336+ updatedPlaylist
337337+338338+ else
339339+ p
340340+ )
341341+ |> (\c -> { model | playlists = c })
342342+ |> User.savePlaylists
334343335344336345
+2-1
src/Applications/UI/Playlists/View.elm
···79798080 else
8181 Icons.public_off
8282- , msg = Nothing
8282+ , msg =
8383+ Just (\_ -> TogglePlaylistVisibility playlist)
8384 , title =
8485 if playlist.public then
8586 "Make private"