diff options
author | Hubert Chathi <hubert@uhoreg.ca> | 2021-02-20 14:55:48 +0000 |
---|---|---|
committer | Hubert Chathi <hubert@uhoreg.ca> | 2021-02-20 14:55:48 +0000 |
commit | b7192d97b0c428ec52cf3c8dd8ed2ea7bfa7341e (patch) | |
tree | 92895ec3228fef5a6d80626fc9ccab7a16ec5b42 /lib/polyjuice/client/sync.ex | |
parent | Merge branch 'profile_function' into 'master' (diff) | |
parent | Handle ephemeral events (e.g. for typing indicator) (diff) |
Merge branch 'feature/ephemeral-events' into 'master'
Handle ephemeral events
See merge request uhoreg/polyjuice_client!8
Diffstat (limited to 'lib/polyjuice/client/sync.ex')
-rw-r--r-- | lib/polyjuice/client/sync.ex | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/lib/polyjuice/client/sync.ex b/lib/polyjuice/client/sync.ex index c315e90..7b995b4 100644 --- a/lib/polyjuice/client/sync.ex +++ b/lib/polyjuice/client/sync.ex @@ -414,37 +414,31 @@ defmodule Polyjuice.Client.Sync do room |> Map.get("state", %{}) |> Map.get("events", []) - |> Enum.each(&process_event(&1, roomname, state)) + |> Enum.each(&process_event(&1, roomname, nil, state)) - timeline + room + |> Map.get("ephemeral", %{}) |> Map.get("events", []) - |> Enum.each(&process_event(&1, roomname, state)) - end + |> Enum.each(&process_event(&1, roomname, :ephemeral, state)) - defp process_event( - %{ - "state_key" => _state_key - } = event, - roomname, - state - ) do - Polyjuice.Client.Handler.handle(state.handler, :state, {roomname, event}) - - state + timeline + |> Map.get("events", []) + |> Enum.each(&process_event(&1, roomname, nil, state)) end - defp process_event( - %{} = event, - roomname, - state - ) do - Polyjuice.Client.Handler.handle(state.handler, :message, {roomname, event}) + defp process_event(%{} = event, roomname, type, state) do + type = + type || + case event do + %{"state_key" => _} -> :state + _ -> :message + end - state + Polyjuice.Client.Handler.handle(state.handler, type, {roomname, event}) end - defp process_event(_, _, state) do - state + defp process_event(_, _, _, _state) do + :ok end defp process_invite(roomname, room, state) do |