Update new users in history responses.

This commit is contained in:
2018-12-20 16:39:10 -08:00
parent 437039bcc4
commit 2cdfc45a93
3 changed files with 35 additions and 18 deletions

View File

@@ -62,6 +62,9 @@ roomUrl s = Url.Builder.absolute [ "room", s ] []
loginUrl : String
loginUrl = Url.Builder.absolute [ "login" ] []
newUsers : Model -> List Username -> List Username
newUsers m lus = List.filter (\u -> not <| Dict.member u m.userData) lus
currentRoom : Model -> Maybe JoinedRoom
currentRoom m =
let

View File

@@ -448,9 +448,9 @@ roomStateEvents jr =
, prevContent = Nothing
, stateKey = ""
}
allEvents = uniqueBy .eventId (stateEvents ++ (List.map roomToStateEvent timelineEvents))
allStateEvents = uniqueBy .eventId (stateEvents ++ (List.map roomToStateEvent timelineEvents))
in
allEvents
allStateEvents
roomAccountData : JoinedRoom -> String -> Maybe Decode.Value
roomAccountData jr et =
@@ -495,16 +495,21 @@ roomTypingUsers jr = Maybe.withDefault []
<| Maybe.andThen (findLast (((==) "m.typing") << .type_))
<| Maybe.andThen .events jr.ephemeral
roomsUsers : SyncResponse -> List Username
roomsUsers s =
allRoomDictEvents : Dict String { a | timeline : Maybe Timeline } -> List RoomEvent
allRoomDictEvents dict = List.concatMap (Maybe.withDefault [] << .events)
<| List.filterMap .timeline
<| Dict.values dict
allEvents : SyncResponse -> List RoomEvent
allEvents s =
let
users dict =
List.map .sender
<| (List.concatMap <| Maybe.withDefault [] << .events)
<| (List.filterMap .timeline)
<| Dict.values dict
usersFor f = Maybe.withDefault [] <| Maybe.map users <| Maybe.andThen f s.rooms
joinedUsers = usersFor .join
leftUsers = usersFor .leave
eventsFor f = Maybe.withDefault []
<| Maybe.map allRoomDictEvents
<| Maybe.andThen f s.rooms
joinedEvents = eventsFor .join
leftEvents = eventsFor .leave
in
uniqueBy (\u -> u) <| leftUsers ++ joinedUsers
uniqueBy .eventId <| leftEvents ++ joinedEvents
allUsers : SyncResponse -> List Username
allUsers s = uniqueBy (\u -> u) <| List.map .sender <| allEvents s