From 34bb5b935fd3c2bb481129cb4bc27ce646c24f12 Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Wed, 28 Jul 2021 11:02:32 +0200 Subject: [PATCH] nav: Send DELETE to clear next destination on server (#21746) --- selfdrive/ui/qt/api.cc | 8 ++++++-- selfdrive/ui/qt/api.h | 4 +++- selfdrive/ui/qt/maps/map_settings.cc | 10 +++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/selfdrive/ui/qt/api.cc b/selfdrive/ui/qt/api.cc index 55fb20f4bc..bfb3d8a1dd 100644 --- a/selfdrive/ui/qt/api.cc +++ b/selfdrive/ui/qt/api.cc @@ -80,7 +80,7 @@ bool HttpRequest::active() { return reply != nullptr; } -void HttpRequest::sendRequest(const QString &requestURL) { +void HttpRequest::sendRequest(const QString &requestURL, const HttpRequest::Method method) { if (active()) { qDebug() << "HttpRequest is active"; return; @@ -98,7 +98,11 @@ void HttpRequest::sendRequest(const QString &requestURL) { request.setUrl(QUrl(requestURL)); request.setRawHeader(QByteArray("Authorization"), ("JWT " + token).toUtf8()); - reply = networkAccessManager->get(request); + if (method == HttpRequest::Method::GET) { + reply = networkAccessManager->get(request); + } else if (method == HttpRequest::Method::DELETE) { + reply = networkAccessManager->deleteResource(request); + } networkTimer->start(); connect(reply, &QNetworkReply::finished, this, &HttpRequest::requestFinished); diff --git a/selfdrive/ui/qt/api.h b/selfdrive/ui/qt/api.h index ac190c4226..624e58bd6d 100644 --- a/selfdrive/ui/qt/api.h +++ b/selfdrive/ui/qt/api.h @@ -20,8 +20,10 @@ class HttpRequest : public QObject { Q_OBJECT public: + enum class Method {GET, DELETE}; + explicit HttpRequest(QObject* parent, bool create_jwt = true, int timeout = 20000); - void sendRequest(const QString &requestURL); + void sendRequest(const QString &requestURL, const Method method = Method::GET); bool active(); protected: diff --git a/selfdrive/ui/qt/maps/map_settings.cc b/selfdrive/ui/qt/maps/map_settings.cc index 0d2ea65191..4e5d4ea483 100644 --- a/selfdrive/ui/qt/maps/map_settings.cc +++ b/selfdrive/ui/qt/maps/map_settings.cc @@ -105,10 +105,11 @@ MapPanel::MapPanel(QWidget* parent) : QWidget(parent) { // Destination set while offline { - std::string url = "https://api.commadotai.com/v1/navigation/" + dongle_id + "/next"; - RequestRepeater* repeater = new RequestRepeater(this, QString::fromStdString(url), "", 10, true); + QString url = QString::fromStdString("https://api.commadotai.com/v1/navigation/" + dongle_id + "/next"); + RequestRepeater* repeater = new RequestRepeater(this, url, "", 10, true); + HttpRequest* deleter = new HttpRequest(this); - QObject::connect(repeater, &RequestRepeater::receivedResponse, [](QString resp) { + QObject::connect(repeater, &RequestRepeater::receivedResponse, [=](QString resp) { auto params = Params(); if (resp != "null") { if (params.get("NavDestination").empty()) { @@ -117,6 +118,9 @@ MapPanel::MapPanel(QWidget* parent) : QWidget(parent) { } else { qWarning() << "Got location from /next, but NavDestination already set"; } + + // Send DELETE to clear destination server side + deleter->sendRequest(url, HttpRequest::Method::DELETE); } }); }