Retrieve user display names on initial log in.
This commit is contained in:
parent
996da079e2
commit
b25e5d77af
16
src/Main.elm
16
src/Main.elm
|
@ -6,6 +6,7 @@ import Scylla.Model exposing (..)
|
||||||
import Scylla.Http exposing (..)
|
import Scylla.Http exposing (..)
|
||||||
import Scylla.Views exposing (viewFull)
|
import Scylla.Views exposing (viewFull)
|
||||||
import Scylla.Route exposing (Route(..))
|
import Scylla.Route exposing (Route(..))
|
||||||
|
import Scylla.UserData exposing (..)
|
||||||
import Url exposing (Url)
|
import Url exposing (Url)
|
||||||
import Url.Parser exposing (parse)
|
import Url.Parser exposing (parse)
|
||||||
import Url.Builder
|
import Url.Builder
|
||||||
|
@ -61,11 +62,16 @@ update msg model = case msg of
|
||||||
ReceiveLoginResponse r -> updateLoginResponse model r
|
ReceiveLoginResponse r -> updateLoginResponse model r
|
||||||
ReceiveFirstSyncResponse r -> updateSyncResponse model r False
|
ReceiveFirstSyncResponse r -> updateSyncResponse model r False
|
||||||
ReceiveSyncResponse r -> updateSyncResponse model r True
|
ReceiveSyncResponse r -> updateSyncResponse model r True
|
||||||
ReceiveUserData s r -> (model, Cmd.none)
|
ReceiveUserData s r -> updateUserData model s r
|
||||||
ChangeRoomText r t -> ({ model | roomText = Dict.insert r t model.roomText}, Cmd.none)
|
ChangeRoomText r t -> ({ model | roomText = Dict.insert r t model.roomText}, Cmd.none)
|
||||||
SendRoomText r -> updateSendRoomText model r
|
SendRoomText r -> updateSendRoomText model r
|
||||||
SendRoomTextResponse r -> (model, Cmd.none)
|
SendRoomTextResponse r -> (model, Cmd.none)
|
||||||
|
|
||||||
|
updateUserData : Model -> String -> Result Http.Error UserData -> (Model, Cmd Msg)
|
||||||
|
updateUserData m s r = case r of
|
||||||
|
Ok ud -> ({ m | userData = Dict.insert s ud m.userData }, Cmd.none)
|
||||||
|
Err e -> (m, userData m.apiUrl (Maybe.withDefault "" m.token) s)
|
||||||
|
|
||||||
updateSendRoomText : Model -> String -> (Model, Cmd Msg)
|
updateSendRoomText : Model -> String -> (Model, Cmd Msg)
|
||||||
updateSendRoomText m r =
|
updateSendRoomText m r =
|
||||||
let
|
let
|
||||||
|
@ -96,11 +102,13 @@ updateSyncResponse model r notify =
|
||||||
token = Maybe.withDefault "" model.token
|
token = Maybe.withDefault "" model.token
|
||||||
nextBatch = Result.withDefault model.sync.nextBatch
|
nextBatch = Result.withDefault model.sync.nextBatch
|
||||||
<| Result.map .nextBatch r
|
<| Result.map .nextBatch r
|
||||||
cmd = sync nextBatch model.apiUrl token
|
syncCmd = sync nextBatch model.apiUrl token
|
||||||
|
newUsers sr = List.filter (\s -> not <| Dict.member s model.userData) <| roomsUsers sr
|
||||||
|
newUserCommands sr = Cmd.batch <| List.map (userData model.apiUrl <| Maybe.withDefault "" model.token) <| newUsers sr
|
||||||
in
|
in
|
||||||
case r of
|
case r of
|
||||||
Ok sr -> ({ model | sync = mergeSyncResponse model.sync sr }, cmd)
|
Ok sr -> ({ model | sync = mergeSyncResponse model.sync sr }, Cmd.batch [ syncCmd, newUserCommands sr ])
|
||||||
_ -> (model, cmd)
|
_ -> (model, syncCmd)
|
||||||
|
|
||||||
subscriptions : Model -> Sub Msg
|
subscriptions : Model -> Sub Msg
|
||||||
subscriptions m = Sub.none
|
subscriptions m = Sub.none
|
||||||
|
|
|
@ -399,4 +399,4 @@ roomsUsers s =
|
||||||
joinedUsers = usersFor .join
|
joinedUsers = usersFor .join
|
||||||
leftUsers = usersFor .leave
|
leftUsers = usersFor .leave
|
||||||
in
|
in
|
||||||
leftUsers ++ joinedUsers
|
uniqueBy (\u -> u) <| leftUsers ++ joinedUsers
|
||||||
|
|
|
@ -119,16 +119,19 @@ eventView m re =
|
||||||
"m.room.message" -> Just messageView
|
"m.room.message" -> Just messageView
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
createRow mhtml = tr []
|
createRow mhtml = tr []
|
||||||
[ td [] [ eventSenderView re.sender ]
|
[ td [] [ eventSenderView m re.sender ]
|
||||||
, td [] [ mhtml ]
|
, td [] [ mhtml ]
|
||||||
]
|
]
|
||||||
in
|
in
|
||||||
Maybe.map createRow
|
Maybe.map createRow
|
||||||
<| Maybe.andThen (\f -> f m re) viewFunction
|
<| Maybe.andThen (\f -> f m re) viewFunction
|
||||||
|
|
||||||
eventSenderView : String -> Html Msg
|
eventSenderView : Model -> String -> Html Msg
|
||||||
eventSenderView s =
|
eventSenderView m s =
|
||||||
span [ style "background-color" <| stringColor s, class "sender-wrapper" ] [ text <| senderName s ]
|
let
|
||||||
|
displayName = Maybe.withDefault (senderName s) <| Maybe.andThen .displayName <| Dict.get s m.userData
|
||||||
|
in
|
||||||
|
span [ style "background-color" <| stringColor s, class "sender-wrapper" ] [ text displayName ]
|
||||||
|
|
||||||
messageView : Model -> RoomEvent -> Maybe (Html Msg)
|
messageView : Model -> RoomEvent -> Maybe (Html Msg)
|
||||||
messageView m re =
|
messageView m re =
|
||||||
|
|
Loading…
Reference in New Issue
Block a user