debugging adding an asset

This commit is contained in:
Blue 2024-01-17 18:57:34 -03:00
parent 1597bd9522
commit 6e16292f06
Signed by: blue
GPG Key ID: 9B203B252A63EE38
6 changed files with 169 additions and 9 deletions

View File

@ -281,11 +281,13 @@ void API::addAsset(const QString& title, const QString& icon, const QJSValue &fi
QUrlQuery params({
{"title", title},
{"icon", icon}
{"icon", icon},
{"currency", "1"}
});
QNetworkRequest request(createUrl("/addAsset"));
request.setHeader(QNetworkRequest::ContentTypeHeader, urlEncoded);
request.setRawHeader("Authorization", "Bearer " + accessToken.toUtf8());
QNetworkReply* reply = network.post(request, params.toString(QUrl::FullyEncoded).toUtf8());
connect(reply, &QNetworkReply::finished,
std::bind(&API::onAssetAdded, this, reply, finished)
@ -295,8 +297,8 @@ void API::addAsset(const QString& title, const QString& icon, const QJSValue &fi
void API::onAssetAdded(QNetworkReply *reply, const QJSValue &finished) {
std::unique_ptr<QNetworkReply, NetworkReplyDeleter> rpl(reply);
QNetworkReply::NetworkError error = reply->error();
std::optional<QVariantMap> data = readResult(reply);
qDebug() << error;
if (error != QNetworkReply::NoError)
return callCallback(finished, reply->errorString());
@ -332,6 +334,8 @@ void API::onPollFinished() {
Codes::Poll code = Codes::Poll::unknownError;
if (validateResponse(data, resultStructure))
code = Codes::convertPoll(data->value("result").toInt());
else
qDebug() << "";
QString detail = Codes::description(code);
@ -457,7 +461,7 @@ void API::responseAssets(QNetworkReply *reply) {
}
QVariantMap::ConstIterator itr = data->find("assets");
if (itr == data->end() || !itr->canConvert<QVariantList>()) {
if (itr == data->constEnd() || !itr->canConvert<QVariantList>()) {
qDebug() << "Error receiving assets: assets are missing or not in an array";
return;
}

View File

@ -4,13 +4,48 @@
import QtQuick
import QtQuick.Controls
import magpie.API
Item {
Label {
anchors.centerIn: parent
text: "This is Assets screen"
font {
pixelSize: 24
bold: true
signal add
Column {
anchors.fill: parent
Label {
text: "This is Assets screen"
font {
pixelSize: 24
bold: true
}
}
ListView {
anchors.centerIn: parent
model: API.assets
delegate: Rectangle {
Text {
text: title
}
}
}
}
Button {
anchors {
bottom: parent.bottom
right: parent.right
bottomMargin: 20
rightMargin: 20
}
onClicked: add()
width: 50
height: 50
icon {
name: "list-add"
height: 50
width: 50
}
}
}

View File

@ -6,6 +6,8 @@ import QtQuick.Controls
import QtQuick.Layouts
Item {
signal addAsset
property string currentPage: "home"
RowLayout {
anchors.fill: parent
@ -53,6 +55,7 @@ Item {
StackView {
id: content
initialItem: home
clip: true
Layout.fillWidth: true
Layout.fillHeight: true
@ -67,6 +70,7 @@ Item {
id: assets
Assets {
StackView.onActivating: currentPage = "assets"
onAdd: addAsset()
}
}

View File

@ -4,6 +4,8 @@
import QtQuick
import QtQuick.Controls
import magpie.Forms as Forms
Item {
StackView {
id: stack
@ -14,7 +16,15 @@ Item {
Component {
id: main
Main {
onAddAsset: stack.push(addAssetForm);
}
}
Component {
id: addAssetForm
Forms.AddAsset {
onCancel: stack.pop()
onSuccess: stack.pop()
}
}
}

106
qml/Forms/AddAsset.qml Normal file
View File

@ -0,0 +1,106 @@
// SPDX-FileCopyrightText: 2023 Yury Gubich <blue@macaw.me>
// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick
import QtQuick.Controls
import magpie.API
import magpie.Components as Components
Item {
signal success
signal cancel
Column {
id: inner
spacing: 5
anchors.centerIn: parent
Label {
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("New asset")
font.pixelSize: 14
}
Grid {
anchors.horizontalCenter: parent.horizontalCenter
columns: 2
columnSpacing: 10
rowSpacing: 5
verticalItemAlignment: Grid.AlignVCenter
horizontalItemAlignment: Grid.AlignRight
Label {
text: qsTr("Title") + ":";
}
TextField {
id: titleField
}
Label {
text: qsTr("Icon") + ":";
}
TextField {
id: iconField
text: "list-add"
}
Label {
text: qsTr("Color") + ":";
}
TextField {
id: colorField
}
}
Row {
spacing: 5
anchors.horizontalCenter: parent.horizontalCenter
Button {
text: qsTr("Cancel")
onClicked: cancel()
}
Button {
text: qsTr("Create")
onClicked: inner.send(titleField.text, titleField.text, colorField.text)
}
}
Components.Modal {
id: modal
}
function send (title, icon, color) {
if (modal.inProgress)
return;
titleField.text = title;
titleField.text = icon;
colorField.text = color;
modal.inProgress = true;
modal.status = qsTr("Creating new asset ") + " " + title + "...";
modal.open();
API.addAsset(title, icon, function (err, result) {
if (!modal.inProgress)
return;
modal.inProgress = false;
if (err)
modal.status = err;
else
modal.status = qsTr("Success");
if (!!result) {
modal.close();
success();
}
});
}
}
}

View File

@ -11,6 +11,7 @@ qt_add_qml_module(magpieForms
QML_FILES
Login.qml
Register.qml
AddAsset.qml
)
target_link_libraries(magpie PRIVATE magpieForms)