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

Configure Feed

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

Even more authentication options

+147 -14
+12
src/Applications/UI.elm
··· 37 37 import Time 38 38 import Tracks.Encoding 39 39 import UI.Authentication as Authentication 40 + import UI.Authentication.ContextMenu 40 41 import UI.Backdrop as Backdrop 41 42 import UI.Console 42 43 import UI.ContextMenu ··· 213 214 Core.ExternalAuth _ _ -> 214 215 R2.withNoCmd model 215 216 217 + Core.ShowMoreAuthenticationOptions coordinates -> 218 + coordinates 219 + |> UI.Authentication.ContextMenu.moreOptionsMenu 220 + |> Just 221 + |> (\c -> { model | contextMenu = c }) 222 + |> R2.withNoCmd 223 + 216 224 ----------------------------------------- 217 225 -- Brain 218 226 ----------------------------------------- ··· 588 596 Reply.ShowErrorNotification string -> 589 597 ShowNotification (Notifications.stickyError string) 590 598 599 + Reply.ShowMoreAuthenticationOptions coordinates -> 600 + Core.ShowMoreAuthenticationOptions coordinates 601 + 591 602 Reply.ShowSuccessNotification string -> 592 603 ShowNotification (Notifications.success string) 593 604 ··· 911 922 -- Bits & Pieces 912 923 ----------------------------------------- 913 924 , Css.Global.selector ".lh-0" [ Css.lineHeight Css.zero ] 925 + , Css.Global.selector ".pointer-events-none" [ Css.pointerEvents Css.none ] 914 926 ] 915 927 916 928
+41 -11
src/Applications/UI/Authentication.elm
··· 4 4 import Authentication exposing (Method(..)) 5 5 import Base64 6 6 import Chunky exposing (..) 7 + import Classes as C 7 8 import Color exposing (Color) 8 9 import Color.Ext as Color 9 10 import Common exposing (Switch(..)) 10 11 import Conditional exposing (..) 12 + import Coordinates 11 13 import Crypto.Hash 12 14 import Css exposing (pct, px, solid, transparent) 15 + import Html.Events.Extra.Mouse as Mouse 13 16 import Html.Styled as Html exposing (Html, a, button, div, em, fromUnstyled, img, span, text) 14 - import Html.Styled.Attributes exposing (attribute, css, href, placeholder, src, style, type_, value, width) 17 + import Html.Styled.Attributes as Attributes exposing (attribute, css, href, placeholder, src, style, title, type_, value, width) 15 18 import Html.Styled.Events exposing (onClick, onSubmit) 16 19 import Json.Decode as Json 17 20 import Json.Encode 18 21 import Material.Icons.Av as Icons 22 + import Material.Icons.Navigation as Icons 19 23 import Replying exposing (R3D3, andThen3) 20 24 import Return2 as R2 21 25 import Return3 as R3 ··· 105 109 type Msg 106 110 = Bypass 107 111 | Cancel 112 + | ShowMoreOptions Mouse.Event 108 113 | SignIn Method 109 114 | SignInWithPassphrase Method String 110 115 | SignedIn Method ··· 145 150 146 151 Unauthenticated -> 147 152 R3.withNothing Unauthenticated 153 + 154 + ShowMoreOptions mouseEvent -> 155 + ( model 156 + , Cmd.none 157 + , ( mouseEvent.clientPos 158 + , mouseEvent.offsetPos 159 + ) 160 + |> (\( ( a, b ), ( c, d ) ) -> 161 + { x = a - c + 15 162 + , y = b - d + 12 163 + } 164 + ) 165 + |> ShowMoreAuthenticationOptions 166 + |> List.singleton 167 + |> Just 168 + ) 148 169 149 170 SignIn method -> 150 171 ( Unauthenticated ··· 393 414 , outOfOrder = True 394 415 } 395 416 , choiceButton 396 - { action = ShowNewEncryptionKeyScreen Authentication.Ipfs 397 - , icon = \_ _ -> Svg.map never UI.Svg.Elements.ipfsLogo 398 - , isLast = False 399 - , label = "IPFS" 400 - , outOfOrder = False 401 - } 402 - , choiceButton 403 417 { action = 404 418 AskForInput 405 419 (Authentication.RemoteStorage { userAddress = "", token = "" }) ··· 413 427 } 414 428 , choiceButton 415 429 { action = Bypass 416 - , icon = \_ _ -> Svg.map never UI.Svg.Elements.solidLogo 417 - , isLast = True 418 - , label = "Solid" 430 + , icon = \_ _ -> Svg.map never UI.Svg.Elements.textileLogo 431 + , isLast = False 432 + , label = "Textile" 419 433 , outOfOrder = True 420 434 } 435 + 436 + -- More options 437 + --------------- 438 + , chunk 439 + [ T.pb1, T.pt3, T.tc ] 440 + [ slab 441 + Html.span 442 + [ title "More options" 443 + , Attributes.fromUnstyled (Mouse.onClick ShowMoreOptions) 444 + ] 445 + [ T.dib, T.ph1, T.pointer, C.lh_0 ] 446 + [ chunk 447 + [ C.pointer_events_none ] 448 + [ fromUnstyled (Icons.more_horiz UI.Kit.colors.text 22) ] 449 + ] 450 + ] 421 451 ] 422 452 423 453
+29
src/Applications/UI/Authentication/ContextMenu.elm
··· 1 + module UI.Authentication.ContextMenu exposing (moreOptionsMenu) 2 + 3 + import Authentication 4 + import ContextMenu exposing (..) 5 + import Coordinates exposing (Coordinates) 6 + import Material.Icons.Action as Icons 7 + import Svg 8 + import UI.Authentication as Authentication 9 + import UI.Core exposing (Msg(..)) 10 + import UI.Svg.Elements 11 + 12 + 13 + 14 + -- 🔱 15 + 16 + 17 + moreOptionsMenu : Coordinates -> ContextMenu Msg 18 + moreOptionsMenu = 19 + ContextMenu 20 + [ ( \_ _ -> Svg.map never UI.Svg.Elements.ipfsLogo 21 + , "IPFS" 22 + , AuthenticationMsg (Authentication.ShowNewEncryptionKeyScreen Authentication.Ipfs) 23 + ) 24 + 25 + -- , ( \_ _ -> Svg.map never UI.Svg.Elements.solidLogo 26 + -- , "Solid" 27 + -- , AuthenticationMsg (Authentication.ShowNewEncryptionKeyScreen Authentication.Ipfs) 28 + -- ) 29 + ]
+1
src/Applications/UI/Core.elm
··· 98 98 -- Authentication 99 99 ----------------------------------------- 100 100 | ExternalAuth Authentication.Method String 101 + | ShowMoreAuthenticationOptions Coordinates 101 102 ----------------------------------------- 102 103 -- Brain 103 104 -----------------------------------------
+1
src/Applications/UI/Reply.elm
··· 35 35 | SaveSources 36 36 | SaveTracks 37 37 | ShowErrorNotification String 38 + | ShowMoreAuthenticationOptions Coordinates 38 39 | ShowSuccessNotification String 39 40 | ShowWarningNotification String 40 41 | ShowTracksContextMenu Coordinates (List IdentifiedTrack)
+45 -1
src/Applications/UI/Svg/Elements.elm
··· 1 - module UI.Svg.Elements exposing (blockstackLogo, ipfsLogo, loading, remoteStorageLogo, solidLogo) 1 + module UI.Svg.Elements exposing (blockstackLogo, ipfsLogo, loading, remoteStorageLogo, solidLogo, textileLogo) 2 2 3 3 import Color 4 4 import Svg exposing (..) ··· 161 161 ] 162 162 [] 163 163 ] 164 + 165 + 166 + 167 + -- TEXTILE 168 + 169 + 170 + textileLogo : Svg Never 171 + textileLogo = 172 + svg 173 + [ fill (Color.toCssString UI.Kit.colors.text) 174 + , height "16" 175 + , viewBox "0 0 4030 4050" 176 + , width "16" 177 + ] 178 + [ g 179 + [ fillOpacity "1", stroke "none" ] 180 + [ Svg.path [ d "M305 3150 l-280 -280 288 0 287 0 0 280 c0 154 -3 280 -8 280 -4 0 -133 -126 -287 -280z" ] [] 181 + , Svg.path [ d "M1160 3150 l0 -280 282 0 283 0 -280 280 c-154 154 -281 280 -282 280 -2 0 -3 -126 -3 -280z" ] [] 182 + , Svg.path [ d "M2575 2580 l-280 -280 283 0 282 0 0 280 c0 154 -1 280 -3 280 -1 0 -128 -126 -282 -280z" ] [] 183 + , Svg.path [ d "M1155 1735 l-570 -564 573 -1 572 0 0 565 c0 311 -1 565 -2 565 -2 -1 -259 -255 -573 -565z" ] [] 184 + , Svg.path [ d "M2575 1460 l280 -280 -280 -2 -280 -3 -3 -282 c-1 -156 1 -283 5 -283 5 0 133 125 286 278 l277 277 0 288 0 287 -282 0 -283 0 280 -280z" ] [] 185 + ] 186 + , g 187 + [ fillOpacity "0.5", stroke "none" ] 188 + [ Svg.path [ d "M870 3715 l-285 -285 575 0 575 0 -285 285 c-157 157 -287 285 -290 285 -3 0 -133 -128 -290 -285z" ] [] 189 + , Svg.path [ d "M30 2862 c0 -6 373 -380 923 -922 l207 -205 0 568 0 567 -565 0 c-311 0 -565 -3 -565 -8z" ] [] 190 + , Svg.path [ d "M2007 2582 l-277 -277 0 -568 0 -567 148 0 c81 0 333 3 560 7 l414 6 -276 276 -276 276 0 563 c0 309 -3 562 -8 562 -4 0 -132 -125 -285 -278z" ] [] 191 + , Svg.path [ d "M2860 1733 l0 -568 565 565 c311 311 565 566 565 567 0 2 -254 3 -565 3 l-565 0 0 -567z" ] [] 192 + , Svg.path [ d "M1443 323 l287 -288 287 288 288 287 -575 0 -575 0 288 -287z" ] [] 193 + ] 194 + , g 195 + [ fillOpacity "1", stroke "none" ] 196 + [ Svg.path [ d "M2860 2865 l0 -565 565 0 c311 0 565 3 565 8 0 9 -1113 1122 -1123 1122 -4 0 -7 -254 -7 -565z" ] [] 197 + , Svg.path [ d "M1160 2310 c0 -308 3 -560 8 -560 4 0 259 252 567 560 l560 560 -568 0 -567 0 0 -560z" ] [] 198 + , Svg.path [ d "M1440 895 c151 -151 278 -275 282 -275 5 0 8 124 8 275 l0 275 -282 0 -283 0 275 -275z" ] [] 199 + ] 200 + , g 201 + [ fillOpacity "0.75", stroke "none" ] 202 + [ Svg.path [ d "M2576 3161 l-279 -280 -281 274 -281 274 -285 1 -285 0 280 -280 280 -280 285 -2 285 -3 5 -278 5 -277 277 277 278 278 2 288 c2 158 1 287 -2 287 -3 0 -131 -126 -284 -279z" ] [] 203 + , Svg.path [ d "M600 3150 l0 -280 280 0 280 0 0 280 0 280 -280 0 -280 0 0 -280z" ] [] 204 + , Svg.path [ d "M2300 2020 l0 -280 280 0 280 0 0 280 0 280 -280 0 -280 0 0 -280z" ] [] 205 + , Svg.path [ d "M875 890 l280 -280 567 0 568 0 0 280 0 280 -280 0 -280 0 0 -275 c0 -151 -3 -275 -8 -275 -4 0 -131 124 -282 275 l-275 275 -285 0 -285 0 280 -280z" ] [] 206 + ] 207 + ]
+6 -1
src/Library/Classes.elm
··· 1 - module Classes exposing (lh_0) 1 + module Classes exposing (lh_0, pointer_events_none) 2 2 3 3 {-| Some class names used for global css. 4 4 ··· 10 10 lh_0 : String 11 11 lh_0 = 12 12 "lh-0" 13 + 14 + 15 + pointer_events_none : String 16 + pointer_events_none = 17 + "pointer-events-none"
+12 -1
src/Library/Coordinates.elm
··· 1 - module Coordinates exposing (Coordinates) 1 + module Coordinates exposing (Coordinates, fromTuple) 2 2 3 3 -- 🌳 4 4 5 5 6 6 type alias Coordinates = 7 7 { x : Float, y : Float } 8 + 9 + 10 + 11 + -- 🔱 12 + 13 + 14 + fromTuple : ( Float, Float ) -> Coordinates 15 + fromTuple ( x, y ) = 16 + { x = x 17 + , y = y 18 + }