Added popup handler
This commit is contained in:
@ -7,17 +7,19 @@
|
|||||||
#include <esp_log.h>
|
#include <esp_log.h>
|
||||||
|
|
||||||
// 3rdparty lib includes
|
// 3rdparty lib includes
|
||||||
#include <espwifistack.h>
|
#include <ArduinoJson.h>
|
||||||
#include <esphttpdutils.h>
|
#include <esphttpdutils.h>
|
||||||
|
#include <espwifistack.h>
|
||||||
#include <fmt/core.h>
|
#include <fmt/core.h>
|
||||||
|
#include <tftinstance.h>
|
||||||
#include <tickchrono.h>
|
#include <tickchrono.h>
|
||||||
#include <wrappers/websocket_client.h>
|
#include <wrappers/websocket_client.h>
|
||||||
#include <tftinstance.h>
|
|
||||||
|
|
||||||
// local includes
|
// local includes
|
||||||
|
#include "bobbyerrorhandler.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "utils.h"
|
|
||||||
#include "newsettings.h"
|
#include "newsettings.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
@ -328,6 +330,39 @@ void createCloud()
|
|||||||
hasAnnouncedItself = false;
|
hasAnnouncedItself = false;
|
||||||
}, nullptr);
|
}, nullptr);
|
||||||
|
|
||||||
|
cloudClient.register_events(WEBSOCKET_EVENT_DATA, [](void* event_handler_arg, esp_event_base_t event_base, int32_t event_id, void* event_data){
|
||||||
|
using namespace ArduinoJson;
|
||||||
|
auto data = static_cast<esp_websocket_event_data_t*>(event_data);
|
||||||
|
|
||||||
|
if (data->op_code != 1) // text
|
||||||
|
return;
|
||||||
|
|
||||||
|
StaticJsonDocument<768> doc;
|
||||||
|
if (const auto err = deserializeJson(doc, data->data_ptr, data->data_len); err)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "deserializeJson() failed with %s", err.c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string type = doc["type"];
|
||||||
|
if (type == "popup")
|
||||||
|
{
|
||||||
|
std::string text = doc["msg"];
|
||||||
|
std::string id = doc["id"];
|
||||||
|
ESP_LOGI(TAG, "popup: %s, id: %s", text.c_str(), id.c_str());
|
||||||
|
BobbyErrorHandler{}.errorOccured(std::move(text));
|
||||||
|
|
||||||
|
if (id.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto timeout = std::chrono::ceil<espcpputils::ticks>(espchrono::milliseconds32{configs.cloudSettings.cloudTransmitTimeout.value}).count();
|
||||||
|
const auto message = fmt::format(R"({{"type":"response","id":"{}"}})", id);
|
||||||
|
ESP_LOGI(TAG, "sending response: %s", message.c_str());
|
||||||
|
cloudClient.send_text(message, timeout);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}, nullptr);
|
||||||
|
|
||||||
if (!cloudClient)
|
if (!cloudClient)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "websocket could not be constructed");
|
ESP_LOGE(TAG, "websocket could not be constructed");
|
||||||
|
Reference in New Issue
Block a user