Rework the Account Popup Widget
Fixed Account Popup Widget Follow/Unfollow Ignoring now also works, but doesn't have the ability to unignore Add a URL Delete method to the network manager Fixes #235
This commit is contained in:
@@ -159,6 +159,28 @@ public:
|
||||
|
||||
emit requester.requestUrl();
|
||||
}
|
||||
|
||||
template <typename FinishedCallback>
|
||||
static void urlDelete(QNetworkRequest request, FinishedCallback onFinished)
|
||||
{
|
||||
NetworkRequester requester;
|
||||
NetworkWorker *worker = new NetworkWorker;
|
||||
|
||||
worker->moveToThread(&NetworkManager::workerThread);
|
||||
QObject::connect(
|
||||
&requester, &NetworkRequester::requestUrl, worker,
|
||||
[ onFinished = std::move(onFinished), request = std::move(request), worker ]() {
|
||||
QNetworkReply *reply = NetworkManager::NaM.deleteResource(request);
|
||||
|
||||
QObject::connect(reply, &QNetworkReply::finished,
|
||||
[ onFinished = std::move(onFinished), reply, worker ]() {
|
||||
onFinished(reply);
|
||||
delete worker;
|
||||
});
|
||||
});
|
||||
|
||||
emit requester.requestUrl();
|
||||
}
|
||||
};
|
||||
|
||||
class NetworkRequest
|
||||
|
||||
+31
-1
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "singletons/accountmanager.hpp"
|
||||
#include "credentials.hpp"
|
||||
#include "debug/log.hpp"
|
||||
#include "singletons/accountmanager.hpp"
|
||||
#include "util/networkmanager.hpp"
|
||||
|
||||
#include <rapidjson/document.h>
|
||||
@@ -160,6 +160,36 @@ static void put(QUrl url, std::function<void(QJsonObject)> successCallback)
|
||||
});
|
||||
}
|
||||
|
||||
static void sendDelete(QUrl url, std::function<void()> successCallback)
|
||||
{
|
||||
QNetworkRequest request(url);
|
||||
|
||||
auto &accountManager = singletons::AccountManager::getInstance();
|
||||
auto currentTwitchUser = accountManager.Twitch.getCurrent();
|
||||
QByteArray oauthToken;
|
||||
if (currentTwitchUser) {
|
||||
oauthToken = currentTwitchUser->getOAuthToken().toUtf8();
|
||||
} else {
|
||||
// XXX(pajlada): Bail out?
|
||||
}
|
||||
|
||||
request.setRawHeader("Client-ID", getDefaultClientID());
|
||||
request.setRawHeader("Accept", "application/vnd.twitchtv.v5+json");
|
||||
request.setRawHeader("Authorization", "OAuth " + oauthToken);
|
||||
|
||||
NetworkManager::urlDelete(std::move(request), [=](QNetworkReply *reply) {
|
||||
if (reply->error() == QNetworkReply::NetworkError::NoError) {
|
||||
int code =
|
||||
reply->attribute(QNetworkRequest::Attribute::HttpStatusCodeAttribute).toInt();
|
||||
|
||||
if (code >= 200 && code <= 299) {
|
||||
successCallback();
|
||||
}
|
||||
}
|
||||
reply->deleteLater();
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace twitch
|
||||
} // namespace util
|
||||
} // namespace chatterino
|
||||
|
||||
Reference in New Issue
Block a user