Skip to content

Commit 9e56907

Browse files
committed
qml: only write options after onboarding
1 parent c0ebff2 commit 9e56907

File tree

4 files changed

+59
-13
lines changed

4 files changed

+59
-13
lines changed

src/qml/bitcoin.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,8 @@ int QmlGuiMain(int argc, char* argv[])
299299
engine.rootContext()->setContextProperty("peerTableModel", &peer_model);
300300
engine.rootContext()->setContextProperty("peerListModelProxy", &peer_model_sort_proxy);
301301

302-
OptionsQmlModel options_model{*node};
302+
OptionsQmlModel options_model(*node, !need_onboarding.toBool());
303303
engine.rootContext()->setContextProperty("optionsModel", &options_model);
304-
305304
engine.rootContext()->setContextProperty("needOnboarding", need_onboarding);
306305

307306
AppMode app_mode = SetupAppMode();

src/qml/models/options_model.cpp

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
#include <QDir>
2525
#include <QSettings>
2626

27-
OptionsQmlModel::OptionsQmlModel(interfaces::Node& node)
27+
OptionsQmlModel::OptionsQmlModel(interfaces::Node& node, bool is_onboarded)
2828
: m_node{node}
29+
, m_onboarded{is_onboarded}
2930
{
3031
m_dbcache_size_mib = SettingToInt(m_node.getPersistentSetting("dbcache"), nDefaultDbCache);
3132

@@ -48,7 +49,9 @@ void OptionsQmlModel::setDbcacheSizeMiB(int new_dbcache_size_mib)
4849
{
4950
if (new_dbcache_size_mib != m_dbcache_size_mib) {
5051
m_dbcache_size_mib = new_dbcache_size_mib;
51-
m_node.updateRwSetting("dbcache", new_dbcache_size_mib);
52+
if (m_onboarded) {
53+
m_node.updateRwSetting("dbcache", new_dbcache_size_mib);
54+
}
5255
Q_EMIT dbcacheSizeMiBChanged(new_dbcache_size_mib);
5356
}
5457
}
@@ -57,7 +60,9 @@ void OptionsQmlModel::setListen(bool new_listen)
5760
{
5861
if (new_listen != m_listen) {
5962
m_listen = new_listen;
60-
m_node.updateRwSetting("listen", new_listen);
63+
if (m_onboarded) {
64+
m_node.updateRwSetting("listen", new_listen);
65+
}
6166
Q_EMIT listenChanged(new_listen);
6267
}
6368
}
@@ -66,7 +71,9 @@ void OptionsQmlModel::setNatpmp(bool new_natpmp)
6671
{
6772
if (new_natpmp != m_natpmp) {
6873
m_natpmp = new_natpmp;
69-
m_node.updateRwSetting("natpmp", new_natpmp);
74+
if (m_onboarded) {
75+
m_node.updateRwSetting("natpmp", new_natpmp);
76+
}
7077
Q_EMIT natpmpChanged(new_natpmp);
7178
}
7279
}
@@ -75,7 +82,9 @@ void OptionsQmlModel::setPrune(bool new_prune)
7582
{
7683
if (new_prune != m_prune) {
7784
m_prune = new_prune;
78-
m_node.updateRwSetting("prune", pruneSetting());
85+
if (m_onboarded) {
86+
m_node.updateRwSetting("prune", pruneSetting());
87+
}
7988
Q_EMIT pruneChanged(new_prune);
8089
}
8190
}
@@ -84,7 +93,9 @@ void OptionsQmlModel::setPruneSizeGB(int new_prune_size_gb)
8493
{
8594
if (new_prune_size_gb != m_prune_size_gb) {
8695
m_prune_size_gb = new_prune_size_gb;
87-
m_node.updateRwSetting("prune", pruneSetting());
96+
if (m_onboarded) {
97+
m_node.updateRwSetting("prune", pruneSetting());
98+
}
8899
Q_EMIT pruneSizeGBChanged(new_prune_size_gb);
89100
}
90101
}
@@ -93,7 +104,9 @@ void OptionsQmlModel::setScriptThreads(int new_script_threads)
93104
{
94105
if (new_script_threads != m_script_threads) {
95106
m_script_threads = new_script_threads;
96-
m_node.updateRwSetting("par", new_script_threads);
107+
if (m_onboarded) {
108+
m_node.updateRwSetting("par", new_script_threads);
109+
}
97110
Q_EMIT scriptThreadsChanged(new_script_threads);
98111
}
99112
}
@@ -102,7 +115,9 @@ void OptionsQmlModel::setServer(bool new_server)
102115
{
103116
if (new_server != m_server) {
104117
m_server = new_server;
105-
m_node.updateRwSetting("server", new_server);
118+
if (m_onboarded) {
119+
m_node.updateRwSetting("server", new_server);
120+
}
106121
Q_EMIT serverChanged(new_server);
107122
}
108123
}
@@ -111,7 +126,9 @@ void OptionsQmlModel::setUpnp(bool new_upnp)
111126
{
112127
if (new_upnp != m_upnp) {
113128
m_upnp = new_upnp;
114-
m_node.updateRwSetting("upnp", new_upnp);
129+
if (m_onboarded) {
130+
m_node.updateRwSetting("upnp", new_upnp);
131+
}
115132
Q_EMIT upnpChanged(new_upnp);
116133
}
117134
}
@@ -145,4 +162,31 @@ void OptionsQmlModel::setCustomDataDirArgs(QString path)
145162
// TODO: add actual custom data wiring
146163
qDebug() << "PlaceHolder: Created data directory: " << path;
147164
}
148-
}
165+
}
166+
167+
void OptionsQmlModel::onboard()
168+
{
169+
m_node.resetSettings();
170+
if (m_dbcache_size_mib != nDefaultDbCache) {
171+
m_node.updateRwSetting("dbcache", m_dbcache_size_mib);
172+
}
173+
if (m_listen) {
174+
m_node.updateRwSetting("listen", m_listen);
175+
}
176+
if (m_natpmp) {
177+
m_node.updateRwSetting("natpmp", m_natpmp);
178+
}
179+
if (m_prune) {
180+
m_node.updateRwSetting("prune", pruneSetting());
181+
}
182+
if (m_script_threads != DEFAULT_SCRIPTCHECK_THREADS) {
183+
m_node.updateRwSetting("par", m_script_threads);
184+
}
185+
if (m_server) {
186+
m_node.updateRwSetting("server", m_server);
187+
}
188+
if (m_upnp) {
189+
m_node.updateRwSetting("upnp", m_upnp);
190+
}
191+
m_onboarded = true;
192+
}

src/qml/models/options_model.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class OptionsQmlModel : public QObject
3838
Q_PROPERTY(QUrl getDefaultDataDirectory READ getDefaultDataDirectory CONSTANT)
3939

4040
public:
41-
explicit OptionsQmlModel(interfaces::Node& node);
41+
explicit OptionsQmlModel(interfaces::Node& node, bool is_onboarded);
4242

4343
int dbcacheSizeMiB() const { return m_dbcache_size_mib; }
4444
void setDbcacheSizeMiB(int new_dbcache_size_mib);
@@ -69,6 +69,7 @@ public Q_SLOTS:
6969
m_custom_datadir_string = new_custom_datadir_string;
7070
m_signalReceived = true;
7171
}
72+
Q_INVOKABLE void onboard();
7273

7374
Q_SIGNALS:
7475
void dbcacheSizeMiBChanged(int new_dbcache_size_mib);
@@ -83,6 +84,7 @@ public Q_SLOTS:
8384

8485
private:
8586
interfaces::Node& m_node;
87+
bool m_onboarded;
8688

8789
// Properties that are exposed to QML.
8890
int m_dbcache_size_mib;

src/qml/pages/main.qml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ ApplicationWindow {
7878
OnboardingConnection {}
7979

8080
onFinishedChanged: {
81+
optionsModel.onboard()
8182
if (AppMode.walletEnabled && AppMode.isDesktop) {
8283
main.push(desktopWallets)
8384
} else {

0 commit comments

Comments
 (0)