77 lines
2.6 KiB
Elm
77 lines
2.6 KiB
Elm
|
module View.AccountSelector exposing (accountSelectorView)
|
||
|
|
||
|
import Html exposing (..)
|
||
|
import Html.Attributes exposing (..)
|
||
|
import Html.Events exposing (..)
|
||
|
import Mastodon.Helper exposing (..)
|
||
|
import Mastodon.Model exposing (..)
|
||
|
import String.Extra exposing (replace)
|
||
|
import Types exposing (..)
|
||
|
import View.Auth exposing (authForm)
|
||
|
import View.Common exposing (..)
|
||
|
|
||
|
|
||
|
type alias CurrentUser =
|
||
|
Maybe Account
|
||
|
|
||
|
|
||
|
accountIdentityView : CurrentUser -> Client -> Html Msg
|
||
|
accountIdentityView currentUser client =
|
||
|
case client.account of
|
||
|
Just account ->
|
||
|
let
|
||
|
( isCurrentUser, entryClass ) =
|
||
|
case currentUser of
|
||
|
Just currentUser ->
|
||
|
if sameAccount account currentUser then
|
||
|
( True, "active" )
|
||
|
else
|
||
|
( False, "" )
|
||
|
|
||
|
Nothing ->
|
||
|
( False, "" )
|
||
|
in
|
||
|
li [ class <| "list-group-item account-selector-item " ++ entryClass ]
|
||
|
[ accountAvatar "" account
|
||
|
, span []
|
||
|
[ strong []
|
||
|
[ text <|
|
||
|
if account.display_name /= "" then
|
||
|
account.display_name
|
||
|
else
|
||
|
account.username
|
||
|
]
|
||
|
, br [] []
|
||
|
, account.url
|
||
|
|> replace "https://" "@"
|
||
|
|> replace "/@" "@"
|
||
|
|> text
|
||
|
]
|
||
|
, if isCurrentUser then
|
||
|
text ""
|
||
|
else
|
||
|
button
|
||
|
[ class "btn btn-default"
|
||
|
, onClick <| SwitchClient client
|
||
|
]
|
||
|
[ text "Use" ]
|
||
|
]
|
||
|
|
||
|
Nothing ->
|
||
|
text ""
|
||
|
|
||
|
|
||
|
accountSelectorView : Model -> Html Msg
|
||
|
accountSelectorView model =
|
||
|
div [ class "col-md-3 column" ]
|
||
|
[ div [ class "panel panel-default" ]
|
||
|
[ closeablePanelheading "account-selector" "user" "Account selector" CloseAccountSelector
|
||
|
, ul [ class "list-group " ] <|
|
||
|
List.map (accountIdentityView model.currentUser) model.clients
|
||
|
, div [ class "panel-body" ]
|
||
|
[ h3 [] [ text "Add an account" ]
|
||
|
, authForm model
|
||
|
]
|
||
|
]
|
||
|
]
|