feat: choose fleet
This commit is contained in:
parent
514f6fa31e
commit
ea02c7f0b5
|
@ -1,5 +1,5 @@
|
|||
import NimQml, sequtils, strutils, sugar, os, json
|
||||
import views/[mailservers_list, ens_manager, contact_list, profile_info, device_list, dapp_list]
|
||||
import views/[mailservers_list, ens_manager, contact_list, fleets, profile_info, device_list, dapp_list]
|
||||
import ../../status/profile/[mailserver, profile, devices]
|
||||
import ../../status/profile as status_profile
|
||||
import ../../status/contacts as status_contacts
|
||||
|
@ -23,6 +23,7 @@ QtObject:
|
|||
blockedContacts*: ContactList
|
||||
deviceList*: DeviceList
|
||||
dappList*: DappList
|
||||
fleets*: Fleets
|
||||
network: string
|
||||
status*: Status
|
||||
isDeviceSetup: bool
|
||||
|
@ -42,6 +43,7 @@ QtObject:
|
|||
if not self.ens.isNil: self.ens.delete
|
||||
if not self.profile.isNil: self.profile.delete
|
||||
if not self.dappList.isNil: self.dappList.delete
|
||||
if not self.fleets.isNil: self.fleets.delete
|
||||
self.QObject.delete
|
||||
|
||||
proc newProfileView*(status: Status, changeLanguage: proc(locale: string)): ProfileView =
|
||||
|
@ -55,6 +57,7 @@ QtObject:
|
|||
result.deviceList = newDeviceList()
|
||||
result.dappList = newDappList(status)
|
||||
result.ens = newEnsManager(status)
|
||||
result.fleets = newFleets(status)
|
||||
result.network = ""
|
||||
result.status = status
|
||||
result.isDeviceSetup = false
|
||||
|
@ -269,6 +272,12 @@ QtObject:
|
|||
QtProperty[QVariant] dappList:
|
||||
read = getDappList
|
||||
|
||||
proc getFleets(self: ProfileView): QVariant {.slot.} =
|
||||
return newQVariant(self.fleets)
|
||||
|
||||
QtProperty[QVariant] fleets:
|
||||
read = getFleets
|
||||
|
||||
proc getEnsManager(self: ProfileView): QVariant {.slot.} =
|
||||
return newQVariant(self.ens)
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
import NimQml
|
||||
import chronicles, strutils
|
||||
import ../../../status/libstatus/types as status_types
|
||||
import ../../../status/libstatus/settings as status_settings
|
||||
import ../../../status/libstatus/accounts as status_accounts
|
||||
import ../../../status/status
|
||||
|
||||
QtObject:
|
||||
type Fleets * = ref object of QObject
|
||||
status: Status
|
||||
|
||||
proc setup(self: Fleets) =
|
||||
self.QObject.setup
|
||||
|
||||
proc delete*(self: Fleets) =
|
||||
self.QObject.delete
|
||||
|
||||
proc newFleets*(status: Status): Fleets =
|
||||
new(result, delete)
|
||||
result = Fleets()
|
||||
result.status = status
|
||||
result.setup
|
||||
|
||||
proc fleetChanged*(self: Fleets, newFleet: string) {.signal.}
|
||||
|
||||
proc setFleet*(self: Fleets, newFleet: string) {.slot.} =
|
||||
discard status_settings.saveSetting(Setting.Fleet, newFleet)
|
||||
let fleet = parseEnum[Fleet](newFleet)
|
||||
let installationId = status_settings.getSetting[string](Setting.InstallationId)
|
||||
let updatedNodeConfig = status_accounts.getNodeConfig(self.status.fleet.config, installationId, $status_settings.getCurrentNetwork(), fleet)
|
||||
discard status_settings.saveSetting(Setting.NodeConfig, updatedNodeConfig)
|
||||
|
||||
self.fleetChanged(newFleet)
|
||||
quit(QuitSuccess) # quits the app TODO: change this to logout instead when supported
|
||||
|
||||
proc getFleet*(self: Fleets): string {.slot.} = $status_settings.getFleet()
|
||||
|
||||
QtProperty[string] fleet:
|
||||
read = getFleet
|
||||
notify = fleetChanged
|
|
@ -1,6 +1,4 @@
|
|||
import libstatus/core as status
|
||||
import ../eventemitter
|
||||
import tables
|
||||
import json
|
||||
import libstatus/types
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import json, os, nimcrypto, uuids, json_serialization, chronicles, strutils, sequtils, random, sugar
|
||||
import json, os, nimcrypto, uuids, json_serialization, chronicles, strutils
|
||||
|
||||
from nim_status import multiAccountGenerateAndDeriveAddresses, generateAlias, identicon, saveAccountAndLogin, login, openAccounts
|
||||
import core
|
||||
|
@ -19,6 +19,7 @@ proc getNodeConfig*(fleetConfig: FleetConfig, installationId: string, currentNet
|
|||
newDataDir.removeSuffix("_rpc")
|
||||
|
||||
result = constants.NODE_CONFIG.copy()
|
||||
result["ClusterConfig"]["Fleet"] = newJString($fleet)
|
||||
result["ClusterConfig"]["BootNodes"] = %* fleetConfig.getNodes(fleet, FleetNodes.Bootnodes)
|
||||
result["ClusterConfig"]["TrustedMailServers"] = %* fleetConfig.getNodes(fleet, FleetNodes.Mailservers)
|
||||
result["ClusterConfig"]["StaticNodes"] = %* fleetConfig.getNodes(fleet, FleetNodes.Whisper)
|
||||
|
|
|
@ -100,8 +100,7 @@ var NODE_CONFIG* = %* {
|
|||
"Enabled": true
|
||||
},
|
||||
"ClusterConfig": {
|
||||
"Enabled": true,
|
||||
"Fleet": "eth.prod"
|
||||
"Enabled": true
|
||||
},
|
||||
"DataDir": "./ethereum/mainnet",
|
||||
"EnableNTPSync": true,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import core, ./types, ../signals/types as statusgo_types, ./accounts/constants, ./utils
|
||||
import json, tables, sugar, sequtils
|
||||
import json, tables, sugar, sequtils, strutils
|
||||
import json_serialization
|
||||
import locks
|
||||
|
||||
|
@ -69,3 +69,7 @@ proc getCurrentNetworkDetails*(): NetworkDetails =
|
|||
|
||||
proc getLinkPreviewWhitelist*(): JsonNode =
|
||||
result = callPrivateRPC("getLinkPreviewWhitelist".prefix, %* []).parseJSON()["result"]
|
||||
|
||||
proc getFleet*(): Fleet =
|
||||
let fleet = getSetting[string](Setting.Fleet, $Fleet.PROD)
|
||||
result = parseEnum[Fleet](fleet)
|
||||
|
|
|
@ -166,6 +166,7 @@ type
|
|||
PreferredUsername = "preferred-name"
|
||||
Usernames = "usernames"
|
||||
SigningPhrase = "signing-phrase"
|
||||
Fleet = "fleet"
|
||||
VisibleTokens = "wallet/visible-tokens"
|
||||
|
||||
UpstreamConfig* = ref object
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import QtQuick 2.13
|
||||
import QtQuick.Controls 2.13
|
||||
import QtQuick.Layouts 1.13
|
||||
import QtGraphicalEffects 1.13
|
||||
import "../../../../imports"
|
||||
import "../../../../shared"
|
||||
import "../../../../shared/status"
|
||||
|
@ -114,9 +115,58 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: fleetSetting
|
||||
anchors.top: networkTabSettings.bottom
|
||||
anchors.topMargin: Style.current.padding
|
||||
width: parent.width
|
||||
height: fleetText.height
|
||||
|
||||
StyledText {
|
||||
id: fleetText
|
||||
text: qsTr("Fleet")
|
||||
font.pixelSize: 15
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: profileModel.fleets.fleet
|
||||
font.pixelSize: 15
|
||||
anchors.right: caret2.left
|
||||
anchors.rightMargin: Style.current.padding
|
||||
}
|
||||
|
||||
SVGImage {
|
||||
id: caret2
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 0
|
||||
anchors.verticalCenter: fleetText.verticalCenter
|
||||
source: "../../../img/caret.svg"
|
||||
width: 13
|
||||
height: 7
|
||||
rotation: -90
|
||||
}
|
||||
|
||||
ColorOverlay {
|
||||
anchors.fill: caret2
|
||||
source: caret2
|
||||
color: Style.current.darkGrey
|
||||
rotation: -90
|
||||
}
|
||||
|
||||
FleetsModal {
|
||||
id: fleetModal
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: fleetModal.open()
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: uiCatalog
|
||||
anchors.top: networkTabSettings.bottom
|
||||
anchors.top: fleetSetting.bottom
|
||||
anchors.topMargin: 20
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 24
|
||||
|
@ -140,7 +190,6 @@ Item {
|
|||
text: qsTrId("developer-setting")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*##^##
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
import QtQuick 2.13
|
||||
import QtQuick.Controls 2.13
|
||||
import QtQuick.Layouts 1.13
|
||||
import "../../../../imports"
|
||||
import "../../../../shared"
|
||||
import "../../../../shared/status"
|
||||
|
||||
ModalPopup {
|
||||
id: popup
|
||||
title: qsTr("Fleet")
|
||||
|
||||
property string newFleet: "";
|
||||
|
||||
Column {
|
||||
id: column
|
||||
spacing: Style.current.padding
|
||||
width: parent.width
|
||||
|
||||
ConfirmationDialog {
|
||||
id: confirmDialog
|
||||
title: qsTr("Warning!")
|
||||
confirmationText: qsTr("Change fleet to %1").arg(newFleet)
|
||||
onConfirmButtonClicked: profileModel.fleets.setFleet(newFleet)
|
||||
|
||||
onClosed: {
|
||||
let currFleet = profileModel.fleets.fleet
|
||||
radioProd.checked = currFleet == Constants.eth_prod
|
||||
radioStaging.checked = currFleet == Constants.eth_staging
|
||||
radioTest.checked = currFleet == Constants.eth_test
|
||||
}
|
||||
}
|
||||
|
||||
ButtonGroup { id: fleetSettings }
|
||||
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
StyledText {
|
||||
text: Constants.eth_prod
|
||||
font.pixelSize: 15
|
||||
}
|
||||
StatusRadioButton {
|
||||
id: radioProd
|
||||
Layout.alignment: Qt.AlignRight
|
||||
ButtonGroup.group: fleetSettings
|
||||
rightPadding: 0
|
||||
checked: profileModel.fleets.fleet == Constants.eth_prod
|
||||
onClicked: {
|
||||
if (profileModel.fleets.fleet === Constants.eth_prod) return;
|
||||
newFleet = Constants.eth_prod;
|
||||
confirmDialog.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
StyledText {
|
||||
text: Constants.eth_staging
|
||||
font.pixelSize: 15
|
||||
}
|
||||
StatusRadioButton {
|
||||
id: radioStaging
|
||||
Layout.alignment: Qt.AlignRight
|
||||
ButtonGroup.group: fleetSettings
|
||||
rightPadding: 0
|
||||
checked: profileModel.fleets.fleet === Constants.eth_staging
|
||||
onClicked: {
|
||||
if (profileModel.fleets.fleet === Constants.eth_staging) return;
|
||||
newFleet = Constants.eth_staging;
|
||||
confirmDialog.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
StyledText {
|
||||
text: Constants.eth_test
|
||||
font.pixelSize: 15
|
||||
}
|
||||
StatusRadioButton {
|
||||
id: radioTest
|
||||
Layout.alignment: Qt.AlignRight
|
||||
ButtonGroup.group: fleetSettings
|
||||
rightPadding: 0
|
||||
checked: profileModel.fleets.fleet === Constants.eth_test
|
||||
onClicked: {
|
||||
if (profileModel.fleets.fleet === Constants.eth_test) {
|
||||
return;
|
||||
}
|
||||
newFleet = Constants.eth_test;
|
||||
confirmDialog.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -78,4 +78,8 @@ QtObject {
|
|||
readonly property string eth_sign: "eth_sign"
|
||||
readonly property string eth_signTypedData: "eth_signTypedData"
|
||||
readonly property string eth_signTypedData_v3: "eth_signTypedData_v3"
|
||||
|
||||
readonly property string eth_prod: "eth.prod"
|
||||
readonly property string eth_staging: "eth.staging"
|
||||
readonly property string eth_test: "eth.test"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue