From af2e4d34d937e838e17ea11bdc4224c4a2f2ea91 Mon Sep 17 00:00:00 2001 From: marisa Date: Wed, 27 Dec 2023 18:14:23 -0300 Subject: [PATCH] [WIP] Initial app backend --- src/Gui/Api/Pleroma.qml | 15 +++++++++++++++ src/Gui/App.qml | 28 ++++++++++++++++++++++++++++ src/Gui/Login/Login.qml | 17 ++--------------- src/Gui/Splash.qml | 4 +--- src/Gui/Util/Http.qml | 4 ++-- src/Gui/qmldir | 1 + src/resources.qrc | 5 +++++ 7 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 src/Gui/Api/Pleroma.qml create mode 100644 src/Gui/App.qml create mode 100644 src/Gui/qmldir diff --git a/src/Gui/Api/Pleroma.qml b/src/Gui/Api/Pleroma.qml new file mode 100644 index 0000000..a8a9391 --- /dev/null +++ b/src/Gui/Api/Pleroma.qml @@ -0,0 +1,15 @@ +import QtQuick + +QtObject { + id: pleroma + + property string url: "" + + function get() { + assert(url) + } + + function createApp() { + + } +} \ No newline at end of file diff --git a/src/Gui/App.qml b/src/Gui/App.qml new file mode 100644 index 0000000..ba6adc3 --- /dev/null +++ b/src/Gui/App.qml @@ -0,0 +1,28 @@ +pragma Singleton + +import QtQuick + +import Util +import "Api" + +QtObject { + id: app + + property var accounts: ([]) + property var apis: ({}) + + function createApp(url) { + // Try *oma, mastodon, misskey + Http.getRequest( + `${url}/api/v1/instance`, + (body) => { + const jsn = JSON.parse(body) + print(`URL: ${url}`) + print(`Version: ${jsn.version}`) + }, + (err) => { + console.error(`error: ${err}`) + }, + ) + } +} \ No newline at end of file diff --git a/src/Gui/Login/Login.qml b/src/Gui/Login/Login.qml index efb77bf..3f6ecc1 100644 --- a/src/Gui/Login/Login.qml +++ b/src/Gui/Login/Login.qml @@ -5,6 +5,7 @@ import QtQml import Util import "../PStyle" +import ".." PStackView { id: login @@ -20,21 +21,7 @@ PStackView { anchors.centerIn: parent onTryInstance: (instanceUrl) => { - login.push(loadInstance) - - Http.getRequest( - `${instanceUrl}/api/v1/instance`, - (body) => { - const json = JSON.parse(body) - print(`Instance name: ${json.title}`) - print(`Instance description: ${json.description}`) - instanceInfo = json - login.replace(infoScreen) - }, - (err) => { - print(err) - login.pop() - }) + App.createApp(instanceUrl) } } } diff --git a/src/Gui/Splash.qml b/src/Gui/Splash.qml index b25a1bd..2fcc490 100644 --- a/src/Gui/Splash.qml +++ b/src/Gui/Splash.qml @@ -6,16 +6,14 @@ import QtQuick.Controls import Util import "Login" import "PStyle" -import "Settings" Window { visible: true width: 640 height: 480 - title: qsTr("QutePleroma") + title: Qt.application.displayName Component.onCompleted: { - const configDir = Settings.configDir } PBackground { diff --git a/src/Gui/Util/Http.qml b/src/Gui/Util/Http.qml index 38f4235..5c5ee52 100644 --- a/src/Gui/Util/Http.qml +++ b/src/Gui/Util/Http.qml @@ -22,8 +22,8 @@ QtObject { } retryCount = 0; } else { - if (retryCount < maxRetries) { - console.error("Failed to GET " + url + ". Retrying..."); + if (Math.floor(xhr.status / 100) == 5 && retryCount < maxRetries) { + console.error("Failed to GET " + url + " (" + xhr.status + "). Retrying..."); retryCount++; sendRequest(); // Retry the request } else { diff --git a/src/Gui/qmldir b/src/Gui/qmldir new file mode 100644 index 0000000..2838290 --- /dev/null +++ b/src/Gui/qmldir @@ -0,0 +1 @@ +singleton App 1.0 App.qml \ No newline at end of file diff --git a/src/resources.qrc b/src/resources.qrc index 4d63860..53e08f9 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -1,6 +1,8 @@ Gui/Splash.qml + Gui/App.qml + Gui/qmldir Gui/Util/Http.qml @@ -11,6 +13,9 @@ Gui/Login/InstanceInput.qml Gui/Login/LoadingInfo.qml + + Gui/Api/Pleroma.qml + Gui/Settings/Settings.qml Gui/Settings/qmldir