From 05be91ce3849151f69edaa6013acf159bb6d724a Mon Sep 17 00:00:00 2001 From: "Shuqian Hon (SQ)" Date: Thu, 1 Oct 2020 11:33:33 +1000 Subject: [PATCH] Handle :window_size message (#46) --- lib/nerves_hub_link/console_channel.ex | 5 +++++ test/nerves_hub_link/console_channel_test.exs | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/nerves_hub_link/console_channel.ex b/lib/nerves_hub_link/console_channel.ex index 3c8606a..76eb29d 100644 --- a/lib/nerves_hub_link/console_channel.ex +++ b/lib/nerves_hub_link/console_channel.ex @@ -94,6 +94,11 @@ defmodule NervesHubLink.ConsoleChannel do {:noreply, state, iex_timeout()} end + def handle_info(%Message{event: "window_size", payload: %{"height" => height, "width" => width}}, state) do + ExTTY.window_change(state.iex_pid, width, height) + {:noreply, state} + end + def handle_info(%Message{event: event, payload: payload}, state) when event in ["phx_error", "phx_close"] do reason = Map.get(payload, :reason, "unknown") diff --git a/test/nerves_hub_link/console_channel_test.exs b/test/nerves_hub_link/console_channel_test.exs index 4a775d9..4392009 100644 --- a/test/nerves_hub_link/console_channel_test.exs +++ b/test/nerves_hub_link/console_channel_test.exs @@ -22,6 +22,14 @@ defmodule NervesHubLink.ConsoleChannelTest do assert new_state.iex_pid != state.iex_pid end + test "window_size - sets width & height of ExTTY", %{state: state} do + {:ok, iex_pid} = ExTTY.start_link(handler: self(), type: :elixir) + state = %{state | iex_pid: iex_pid} + msg = %Message{event: "window_size", payload: %{"height" => 200, "width" => 300}} + + assert {:noreply, state} == ConsoleChannel.handle_info(msg, state) + end + test "dn - sends text to ExTTY", %{state: state} do {:ok, iex_pid} = ExTTY.start_link(handler: self(), type: :elixir) state = %{state | iex_pid: iex_pid}