From b209d348f8cebca9dea480537bbd45f97af1d1ae Mon Sep 17 00:00:00 2001 From: Adrian Kumpf <8999358+adriankumpf@users.noreply.github.com> Date: Sun, 20 Feb 2022 14:16:12 +0100 Subject: [PATCH] Restart stream process if token expired Addresses #2450 --- lib/tesla_api/stream.ex | 5 +++++ lib/teslamate/vehicles/vehicle.ex | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/tesla_api/stream.ex b/lib/tesla_api/stream.ex index cd10bf07..195cc729 100644 --- a/lib/tesla_api/stream.ex +++ b/lib/tesla_api/stream.ex @@ -161,6 +161,11 @@ defmodule TeslaApi.Stream do Logger.warn("Streaming API Client Error: #{error}") {:close, state} + %{"value" => "Can't validate token" <> _} -> + Logger.warn("Streaming API: Tokens expired") + state.receiver.(:tokens_expired) + {:ok, state} + _ -> raise "Client Error: #{inspect(msg)}" end diff --git a/lib/teslamate/vehicles/vehicle.ex b/lib/teslamate/vehicles/vehicle.ex index c10c997e..8d189330 100644 --- a/lib/teslamate/vehicles/vehicle.ex +++ b/lib/teslamate/vehicles/vehicle.ex @@ -489,7 +489,8 @@ defmodule TeslaMate.Vehicles.Vehicle do #### Rest - def handle_event(:info, {:stream, :too_many_disconnects}, _state, data) do + def handle_event(:info, {:stream, msg}, _state, data) + when msg in [:too_many_disconnects, :tokens_expired] do Logger.info("Creating new connection … ", car_id: data.car.id) ref = Process.monitor(data.stream_pid)