mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-09-10 12:03:18 +02:00
PluginDescription: handle language to send request to the plugin store
Change-Id: Id96578cf238246ebe69a6f9b77b0ed1d1f465f38
This commit is contained in:
parent
06b0f1d39c
commit
1f2401bc7e
5 changed files with 46 additions and 4 deletions
|
@ -59,7 +59,28 @@ void
|
|||
NetworkManager::sendGetRequest(const QUrl& url,
|
||||
std::function<void(const QByteArray&)>&& onDoneCallback)
|
||||
{
|
||||
auto* const reply = manager_->get(QNetworkRequest(url));
|
||||
QNetworkRequest request = QNetworkRequest(url);
|
||||
sendGetRequest(request, std::move(onDoneCallback));
|
||||
}
|
||||
|
||||
void
|
||||
NetworkManager::sendGetRequest(const QUrl& url,
|
||||
const QMap<QString, QByteArray>& header,
|
||||
std::function<void(const QByteArray&)>&& onDoneCallback)
|
||||
{
|
||||
QNetworkRequest request = QNetworkRequest(url);
|
||||
for (auto it = header.begin(); it != header.end(); ++it) {
|
||||
request.setRawHeader(QByteArray(it.key().toStdString().c_str(), it.key().size()),
|
||||
it.value());
|
||||
}
|
||||
sendGetRequest(request, std::move(onDoneCallback));
|
||||
}
|
||||
|
||||
void
|
||||
NetworkManager::sendGetRequest(const QNetworkRequest& request,
|
||||
std::function<void(const QByteArray&)>&& onDoneCallback)
|
||||
{
|
||||
auto* const reply = manager_->get(request);
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [reply, onDoneCallback, this]() {
|
||||
if (reply->error() == QNetworkReply::NoError) {
|
||||
onDoneCallback(reply->readAll());
|
||||
|
|
|
@ -39,7 +39,11 @@ public:
|
|||
Q_ENUM(GetError)
|
||||
|
||||
void sendGetRequest(const QUrl& url, std::function<void(const QByteArray&)>&& onDoneCallback);
|
||||
|
||||
void sendGetRequest(const QUrl& url,
|
||||
const QMap<QString, QByteArray>& header,
|
||||
std::function<void(const QByteArray&)>&& onDoneCallback);
|
||||
void sendGetRequest(const QNetworkRequest& request,
|
||||
std::function<void(const QByteArray&)>&& onDoneCallback);
|
||||
int downloadFile(const QUrl& url,
|
||||
int replyId,
|
||||
std::function<void(bool, const QString&)>&& onDoneCallback,
|
||||
|
|
|
@ -23,21 +23,27 @@
|
|||
#include "pluginstorelistmodel.h"
|
||||
#include "networkmanager.h"
|
||||
#include "lrcinstance.h"
|
||||
#include "appsettingsmanager.h"
|
||||
#include "utilsadapter.h"
|
||||
#include "qmlregister.h"
|
||||
|
||||
#include <QJsonArray>
|
||||
#include <QJsonDocument>
|
||||
#include <QtNetwork>
|
||||
#include <QJsonObject>
|
||||
#include <QDir>
|
||||
#include <QString>
|
||||
|
||||
PluginAdapter::PluginAdapter(LRCInstance* instance, QObject* parent, QString baseUrl)
|
||||
PluginAdapter::PluginAdapter(LRCInstance* instance,
|
||||
AppSettingsManager* settingsManager,
|
||||
QObject* parent,
|
||||
QString baseUrl)
|
||||
: QmlAdapterBase(instance, parent)
|
||||
, pluginStoreListModel_(new PluginStoreListModel(instance, this))
|
||||
, pluginVersionManager_(new PluginVersionManager(instance, baseUrl, this))
|
||||
, pluginListModel_(new PluginListModel(instance, this))
|
||||
, lrcInstance_(instance)
|
||||
, settingsManager_(settingsManager)
|
||||
, tempPath_(QDir::tempPath())
|
||||
, baseUrl_(baseUrl)
|
||||
|
||||
|
@ -89,9 +95,13 @@ PluginAdapter::getPluginsFromStore()
|
|||
[this](NetworkManager::GetError error, const QString& msg) {
|
||||
Q_EMIT storeNotAvailable();
|
||||
});
|
||||
QMap<QString, QByteArray> header;
|
||||
const auto& language = settingsManager_->getLanguage();
|
||||
header["Accept-Language"] = QByteArray(language.toStdString().c_str(), language.size());
|
||||
pluginVersionManager_
|
||||
->sendGetRequest(QUrl(baseUrl_
|
||||
+ "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
|
||||
header,
|
||||
[this, errorHandler](const QByteArray& data) {
|
||||
auto result = QJsonDocument::fromJson(data).array();
|
||||
auto pluginsInstalled = lrcInstance_->pluginModel().getPluginsId();
|
||||
|
@ -113,9 +123,13 @@ PluginAdapter::getPluginsFromStore()
|
|||
void
|
||||
PluginAdapter::getPluginDetails(const QString& pluginId)
|
||||
{
|
||||
QMap<QString, QByteArray> header;
|
||||
const auto& language = settingsManager_->getLanguage();
|
||||
header["Accept-Language"] = QByteArray(language.toStdString().c_str(), language.size());
|
||||
pluginVersionManager_
|
||||
->sendGetRequest(QUrl(baseUrl_ + "/details/" + pluginId
|
||||
+ "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
|
||||
header,
|
||||
[this](const QByteArray& data) {
|
||||
auto result = QJsonDocument::fromJson(data).object();
|
||||
// my response is a json object and I want to convert
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
class PluginVersionManager;
|
||||
class PluginStoreListModel;
|
||||
class AppSettingsManager;
|
||||
|
||||
class PluginAdapter final : public QmlAdapterBase
|
||||
{
|
||||
|
@ -41,6 +42,7 @@ class PluginAdapter final : public QmlAdapterBase
|
|||
|
||||
public:
|
||||
explicit PluginAdapter(LRCInstance* instance,
|
||||
AppSettingsManager* settingsManager,
|
||||
QObject* parent = nullptr,
|
||||
QString baseUrl = "https://plugins.jami.net");
|
||||
~PluginAdapter() = default;
|
||||
|
@ -79,4 +81,5 @@ private:
|
|||
std::mutex mtx_;
|
||||
QString tempPath_;
|
||||
QString baseUrl_;
|
||||
AppSettingsManager* settingsManager_;
|
||||
};
|
||||
|
|
|
@ -123,7 +123,7 @@ registerTypes(QQmlEngine* engine,
|
|||
auto contactAdapter = new ContactAdapter(lrcInstance, parent);
|
||||
auto accountAdapter = new AccountAdapter(settingsManager, systemTray, lrcInstance, parent);
|
||||
auto utilsAdapter = new UtilsAdapter(settingsManager, systemTray, lrcInstance, parent);
|
||||
auto pluginAdapter = new PluginAdapter(lrcInstance, parent);
|
||||
auto pluginAdapter = new PluginAdapter(lrcInstance, settingsManager, parent);
|
||||
auto currentCall = new CurrentCall(lrcInstance, parent);
|
||||
auto currentConversation = new CurrentConversation(lrcInstance, parent);
|
||||
auto currentAccount = new CurrentAccount(lrcInstance, settingsManager, parent);
|
||||
|
|
Loading…
Add table
Reference in a new issue