feature/api-controller-improvements (#567)

* added error handler for api controller
* while downloading the config from the api, the Connecting status is now displayed
* added a button to delete container config for api servers
* added crc check to avoid re-import of api configs
* fixed currentIndex of serversMenuContent after DefaultServerIndexChanged
* added closing the import window after re-importing the config from api
This commit is contained in:
Nethius 2024-02-09 23:23:26 +05:00 committed by GitHub
parent dba05aab07
commit e0863a58aa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 275 additions and 113 deletions

View file

@ -401,6 +401,13 @@ PageType {
model: ServersModel
currentIndex: ServersModel.defaultIndex
Connections {
target: ServersModel
function onDefaultServerIndexChanged(serverIndex) {
serversMenuContent.currentIndex = serverIndex
}
}
clip: true
interactive: false
@ -429,19 +436,19 @@ PageType {
text: name
descriptionText: {
var description = ""
var fullDescription = ""
if (hasWriteAccess) {
if (SettingsController.isAmneziaDnsEnabled()
&& ServersModel.isAmneziaDnsContainerInstalled(index)) {
description += "Amnezia DNS | "
fullDescription += "Amnezia DNS | "
}
} else {
if (containsAmneziaDns) {
description += "Amnezia DNS | "
fullDescription += "Amnezia DNS | "
}
}
return description += hostName
return fullDescription += serverDescription
}
checked: index === serversMenuContent.currentIndex

View file

@ -225,7 +225,69 @@ PageType {
DividerType {
visible: content.isServerWithWriteAccess
}
}
LabelWithButtonType {
visible: content.isServerWithWriteAccess
Layout.fillWidth: true
text: qsTr("Clear server from Amnezia software")
textColor: "#EB5757"
clickedFunction: function() {
questionDrawer.headerText = qsTr("Do you want to clear server from Amnezia software?")
questionDrawer.descriptionText = qsTr("All containers will be deleted on the server. This means that configuration files, keys and certificates will be deleted.")
questionDrawer.yesButtonText = qsTr("Continue")
questionDrawer.noButtonText = qsTr("Cancel")
questionDrawer.yesButtonFunction = function() {
questionDrawer.visible = false
PageController.goToPage(PageEnum.PageDeinstalling)
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
ConnectionController.closeConnection()
}
InstallController.removeAllContainers()
}
questionDrawer.noButtonFunction = function() {
questionDrawer.visible = false
}
questionDrawer.visible = true
}
}
DividerType {
visible: content.isServerWithWriteAccess
}
LabelWithButtonType {
visible: ServersModel.isCurrentlyProcessedServerFromApi()
Layout.fillWidth: true
text: qsTr("Reset API config")
textColor: "#EB5757"
clickedFunction: function() {
questionDrawer.headerText = qsTr("Do you want to reset API config?")
questionDrawer.descriptionText = ""
questionDrawer.yesButtonText = qsTr("Continue")
questionDrawer.noButtonText = qsTr("Cancel")
questionDrawer.yesButtonFunction = function() {
questionDrawer.visible = false
PageController.showBusyIndicator(true)
ApiController.clearApiConfig()
PageController.showBusyIndicator(false)
}
questionDrawer.noButtonFunction = function() {
questionDrawer.visible = false
}
questionDrawer.visible = true
}
}
DividerType {
visible: ServersModel.isCurrentlyProcessedServerFromApi()
}
QuestionDrawer {
id: questionDrawer

View file

@ -18,8 +18,12 @@ PageType {
Connections {
target: ImportController
function onImportErrorOccurred(errorMessage) {
PageController.closePage()
function onImportErrorOccurred(errorMessage, goToPageHome) {
if (goToPageHome) {
PageController.goToStartPage()
} else {
PageController.closePage()
}
PageController.showErrorMessage(errorMessage)
}

View file

@ -111,6 +111,22 @@ PageType {
PageController.showNotificationMessage(message)
PageController.closePage()
}
function onNoInstalledContainers() {
PageController.setTriggeredBtConnectButton(true)
ServersModel.currentlyProcessedIndex = ServersModel.getDefaultServerIndex()
InstallController.setShouldCreateServer(false)
PageController.goToPage(PageEnum.PageSetupWizardEasy)
}
}
Connections {
target: ApiController
function onErrorOccurred(errorMessage) {
PageController.showErrorMessage(errorMessage)
}
}
StackViewType {