diff --git a/README.md b/README.md index d8a905b2f..21a39a346 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,26 @@ install [chatterino2-git](https://aur.archlinux.org/packages/chatterino2-git/) f ### Mac OSX 1. install Xcode and Xcode Command Line Utilites -2. install Qt Creator -3. install brew https://brew.sh/ -4. `brew install boost openssl rapidjson` -5. build the project using Qt Creator +2. start Xcode, settings -> Locations, activate your Command Line Tools +3. install Qt Creator +4. install brew https://brew.sh/ +5. `brew install boost openssl rapidjson` +6. build the project using Qt Creator + +If the Project does not build at this point, you might need to add additional Paths/Libs, because brew does not install openssl and boost in the common path. You can get their path using + +`brew info openssl` +`brew info boost` + +The lines which you need to add to your project file should look similar to this + +``` +INCLUDEPATH += /usr/local/opt/openssl/include +LIBS += -L/usr/local/opt/openssl/lib + +INCLUDEPATH += "/usr/local/Cellar/boost/1.67.0_1/include" +LIBS += -L"/usr/local/Cellar/boost/1.67.0_1/lib" +``` + Test 1 diff --git a/src/util/networkrequest.hpp b/src/util/networkrequest.hpp index 2c9b158e5..39fd5a2b6 100644 --- a/src/util/networkrequest.hpp +++ b/src/util/networkrequest.hpp @@ -216,7 +216,7 @@ public: if (this->data.caller != nullptr) { QObject::connect(worker, &NetworkWorker::doneUrl, this->data.caller, - [onFinished, data = this->data](auto reply) mutable { + [ onFinished, data = this->data ](auto reply) mutable { if (reply->error() != QNetworkReply::NetworkError::NoError) { // TODO: We might want to call an onError callback here return; @@ -238,7 +238,7 @@ public: QObject::connect( &requester, &NetworkRequester::requestUrl, worker, - [timer, data = std::move(this->data), worker, onFinished{std::move(onFinished)}]() { + [ timer, data = std::move(this->data), worker, onFinished{std::move(onFinished)} ]() { QNetworkReply *reply = NetworkManager::NaM.get(data.request); if (timer != nullptr) { @@ -253,21 +253,21 @@ public: data.onReplyCreated(reply); } - QObject::connect(reply, &QNetworkReply::finished, worker, - [data = std::move(data), worker, reply, - onFinished = std::move(onFinished)]() mutable { - if (data.caller == nullptr) { - QByteArray bytes = reply->readAll(); - data.writeToCache(bytes); - onFinished(bytes); + QObject::connect(reply, &QNetworkReply::finished, worker, [ + data = std::move(data), worker, reply, onFinished = std::move(onFinished) + ]() mutable { + if (data.caller == nullptr) { + QByteArray bytes = reply->readAll(); + data.writeToCache(bytes); + onFinished(bytes); - reply->deleteLater(); - } else { - emit worker->doneUrl(reply); - } + reply->deleteLater(); + } else { + emit worker->doneUrl(reply); + } - delete worker; - }); + delete worker; + }); }); emit requester.requestUrl(); @@ -276,7 +276,7 @@ public: template void getJSON(FinishedCallback onFinished) { - this->get([onFinished{std::move(onFinished)}](const QByteArray &bytes) -> bool { + this->get([onFinished{std::move(onFinished)}](const QByteArray &bytes)->bool { auto object = parseJSONFromData(bytes); onFinished(object); @@ -289,7 +289,7 @@ public: template void getJSON2(FinishedCallback onFinished) { - this->get([onFinished{std::move(onFinished)}](const QByteArray &bytes) -> bool { + this->get([onFinished{std::move(onFinished)}](const QByteArray &bytes)->bool { auto object = parseJSONFromData2(bytes); onFinished(object); @@ -369,10 +369,18 @@ private: worker->moveToThread(&NetworkManager::workerThread); if (this->data.caller != nullptr) { - QObject::connect(worker, &NetworkWorker::doneUrl, this->data.caller, - [data = this->data](auto reply) mutable { + QObject::connect(worker, &NetworkWorker::doneUrl, + this->data.caller, [data = this->data](auto reply) mutable { + auto &dat = data; + if (reply->error() != QNetworkReply::NetworkError::NoError) { + // TODO: We might want to call an onError callback here + + if (data.onError) { + data.onError(reply->error()); + } + return; } @@ -391,7 +399,7 @@ private: } QObject::connect(&requester, &NetworkRequester::requestUrl, worker, - [timer, data = std::move(this->data), worker]() { + [ timer, data = std::move(this->data), worker ]() { QNetworkReply *reply; switch (data.requestType) { case GetRequest: { @@ -427,7 +435,7 @@ private: } QObject::connect(reply, &QNetworkReply::finished, worker, - [data = std::move(data), worker, reply]() mutable { + [ data = std::move(data), worker, reply ]() mutable { if (data.caller == nullptr) { QByteArray bytes = reply->readAll(); data.writeToCache(bytes);