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 128 lines 3.9 kB view raw
1module Brain.User.Hypaethral exposing (..) 2 3import Alien 4import Brain.Task.Ports 5import Json.Decode 6import Json.Encode 7import Task exposing (Task) 8import TaskPort 9import TaskPort.Extra as TaskPort 10import User.Layer exposing (..) 11 12 13 14-- RETRIEVAL 15 16 17retrieveDropbox : String -> HypaethralBit -> Task String (Maybe Json.Decode.Value) 18retrieveDropbox accessToken bit = 19 [ ( "fileName", fileName bit ) 20 , ( "token", Json.Encode.string accessToken ) 21 ] 22 |> TaskPort.call 23 { function = "fromDropbox" 24 , valueDecoder = Json.Decode.maybe Json.Decode.value 25 , argsEncoder = Json.Encode.object 26 } 27 |> Task.mapError TaskPort.errorToStringCustom 28 29 30retrieveIpfs : String -> HypaethralBit -> Task String (Maybe Json.Decode.Value) 31retrieveIpfs apiOrigin bit = 32 [ ( "fileName", fileName bit ) 33 , ( "apiOrigin", Json.Encode.string apiOrigin ) 34 ] 35 |> TaskPort.call 36 { function = "fromIpfs" 37 , valueDecoder = Json.Decode.maybe Json.Decode.value 38 , argsEncoder = Json.Encode.object 39 } 40 |> Task.mapError TaskPort.errorToStringCustom 41 42 43retrieveRemoteStorage : { token : String, userAddress : String } -> HypaethralBit -> Task String (Maybe Json.Decode.Value) 44retrieveRemoteStorage { token, userAddress } bit = 45 [ ( "fileName", fileName bit ) 46 , ( "token", Json.Encode.string token ) 47 , ( "userAddress", Json.Encode.string userAddress ) 48 ] 49 |> TaskPort.call 50 { function = "fromRemoteStorage" 51 , valueDecoder = Json.Decode.maybe Json.Decode.value 52 , argsEncoder = Json.Encode.object 53 } 54 |> Task.mapError TaskPort.errorToStringCustom 55 56 57retrieveLocal : HypaethralBit -> Task String (Maybe Json.Decode.Value) 58retrieveLocal bit = 59 Json.Decode.value 60 |> Brain.Task.Ports.fromCacheWithSuffix 61 Alien.SyncLocal 62 (hypaethralBitFileName bit) 63 |> Task.mapError TaskPort.errorToStringCustom 64 65 66 67-- STORAGE 68 69 70saveDropbox : String -> HypaethralBit -> Json.Decode.Value -> Task String () 71saveDropbox accessToken bit data = 72 [ ( "fileName", fileName bit ) 73 , ( "data", data ) 74 , ( "token", Json.Encode.string accessToken ) 75 ] 76 |> TaskPort.call 77 { function = "toDropbox" 78 , valueDecoder = TaskPort.ignoreValue 79 , argsEncoder = Json.Encode.object 80 } 81 |> Task.mapError TaskPort.errorToStringCustom 82 83 84saveIpfs : String -> HypaethralBit -> Json.Decode.Value -> Task String () 85saveIpfs apiOrigin bit data = 86 [ ( "apiOrigin", Json.Encode.string apiOrigin ) 87 , ( "fileName", fileName bit ) 88 , ( "data", data ) 89 ] 90 |> TaskPort.call 91 { function = "toIpfs" 92 , valueDecoder = TaskPort.ignoreValue 93 , argsEncoder = Json.Encode.object 94 } 95 |> Task.mapError TaskPort.errorToStringCustom 96 97 98saveRemoteStorage : { token : String, userAddress : String } -> HypaethralBit -> Json.Decode.Value -> Task String () 99saveRemoteStorage { token, userAddress } bit data = 100 [ ( "fileName", fileName bit ) 101 , ( "data", data ) 102 , ( "token", Json.Encode.string token ) 103 , ( "userAddress", Json.Encode.string userAddress ) 104 ] 105 |> TaskPort.call 106 { function = "toRemoteStorage" 107 , valueDecoder = TaskPort.ignoreValue 108 , argsEncoder = Json.Encode.object 109 } 110 |> Task.mapError TaskPort.errorToStringCustom 111 112 113saveLocal : HypaethralBit -> Json.Decode.Value -> Task String () 114saveLocal bit data = 115 data 116 |> Brain.Task.Ports.toCacheWithSuffix 117 Alien.SyncLocal 118 (hypaethralBitFileName bit) 119 |> Task.mapError TaskPort.errorToStringCustom 120 121 122 123-- 🛠 124 125 126fileName : HypaethralBit -> Json.Decode.Value 127fileName = 128 Json.Encode.string << hypaethralBitFileName