[WIP] Initial app backend
This commit is contained in:
15
src/Gui/Api/Pleroma.qml
Normal file
15
src/Gui/Api/Pleroma.qml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
id: pleroma
|
||||||
|
|
||||||
|
property string url: ""
|
||||||
|
|
||||||
|
function get() {
|
||||||
|
assert(url)
|
||||||
|
}
|
||||||
|
|
||||||
|
function createApp() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
28
src/Gui/App.qml
Normal file
28
src/Gui/App.qml
Normal file
@@ -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}`)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import QtQml
|
|||||||
|
|
||||||
import Util
|
import Util
|
||||||
import "../PStyle"
|
import "../PStyle"
|
||||||
|
import ".."
|
||||||
|
|
||||||
PStackView {
|
PStackView {
|
||||||
id: login
|
id: login
|
||||||
@@ -20,21 +21,7 @@ PStackView {
|
|||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
|
||||||
onTryInstance: (instanceUrl) => {
|
onTryInstance: (instanceUrl) => {
|
||||||
login.push(loadInstance)
|
App.createApp(instanceUrl)
|
||||||
|
|
||||||
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()
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,16 +6,14 @@ import QtQuick.Controls
|
|||||||
import Util
|
import Util
|
||||||
import "Login"
|
import "Login"
|
||||||
import "PStyle"
|
import "PStyle"
|
||||||
import "Settings"
|
|
||||||
|
|
||||||
Window {
|
Window {
|
||||||
visible: true
|
visible: true
|
||||||
width: 640
|
width: 640
|
||||||
height: 480
|
height: 480
|
||||||
title: qsTr("QutePleroma")
|
title: Qt.application.displayName
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
const configDir = Settings.configDir
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PBackground {
|
PBackground {
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ QtObject {
|
|||||||
}
|
}
|
||||||
retryCount = 0;
|
retryCount = 0;
|
||||||
} else {
|
} else {
|
||||||
if (retryCount < maxRetries) {
|
if (Math.floor(xhr.status / 100) == 5 && retryCount < maxRetries) {
|
||||||
console.error("Failed to GET " + url + ". Retrying...");
|
console.error("Failed to GET " + url + " (" + xhr.status + "). Retrying...");
|
||||||
retryCount++;
|
retryCount++;
|
||||||
sendRequest(); // Retry the request
|
sendRequest(); // Retry the request
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
1
src/Gui/qmldir
Normal file
1
src/Gui/qmldir
Normal file
@@ -0,0 +1 @@
|
|||||||
|
singleton App 1.0 App.qml
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file alias="Splash.qml">Gui/Splash.qml</file>
|
<file alias="Splash.qml">Gui/Splash.qml</file>
|
||||||
|
<file alias="App.qml">Gui/App.qml</file>
|
||||||
|
<file alias="qmldir">Gui/qmldir</file>
|
||||||
|
|
||||||
<!-- util -->
|
<!-- util -->
|
||||||
<file alias="Util/Http.qml">Gui/Util/Http.qml</file>
|
<file alias="Util/Http.qml">Gui/Util/Http.qml</file>
|
||||||
@@ -11,6 +13,9 @@
|
|||||||
<file alias="Login/InstanceInput.qml">Gui/Login/InstanceInput.qml</file>
|
<file alias="Login/InstanceInput.qml">Gui/Login/InstanceInput.qml</file>
|
||||||
<file alias="Login/LoadingInfo.qml">Gui/Login/LoadingInfo.qml</file>
|
<file alias="Login/LoadingInfo.qml">Gui/Login/LoadingInfo.qml</file>
|
||||||
|
|
||||||
|
<!-- api -->
|
||||||
|
<file alias="Api/Pleroma.qml">Gui/Api/Pleroma.qml</file>
|
||||||
|
|
||||||
<!-- settings -->
|
<!-- settings -->
|
||||||
<file alias="Settings/Settings.qml">Gui/Settings/Settings.qml</file>
|
<file alias="Settings/Settings.qml">Gui/Settings/Settings.qml</file>
|
||||||
<file alias="Settings/qmldir">Gui/Settings/qmldir</file>
|
<file alias="Settings/qmldir">Gui/Settings/qmldir</file>
|
||||||
|
|||||||
Reference in New Issue
Block a user