Skip to content

Commit 4f557b0

Browse files
committed
qml: only write options after onboarding
1 parent c0ebff2 commit 4f557b0

File tree

4 files changed

+62
-12
lines changed

4 files changed

+62
-12
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: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,17 @@
2020

2121
#include <cassert>
2222

23+
<<<<<<< HEAD
2324
#include <QDebug>
2425
#include <QDir>
2526
#include <QSettings>
2627

2728
OptionsQmlModel::OptionsQmlModel(interfaces::Node& node)
29+
=======
30+
OptionsQmlModel::OptionsQmlModel(interfaces::Node& node, bool is_onboarded)
31+
>>>>>>> 61f8e6c5f (qml: only write options after onboarding)
2832
: m_node{node}
33+
, m_onboarded{is_onboarded}
2934
{
3035
m_dbcache_size_mib = SettingToInt(m_node.getPersistentSetting("dbcache"), nDefaultDbCache);
3136

@@ -48,7 +53,9 @@ void OptionsQmlModel::setDbcacheSizeMiB(int new_dbcache_size_mib)
4853
{
4954
if (new_dbcache_size_mib != m_dbcache_size_mib) {
5055
m_dbcache_size_mib = new_dbcache_size_mib;
51-
m_node.updateRwSetting("dbcache", new_dbcache_size_mib);
56+
if (m_onboarded) {
57+
m_node.updateRwSetting("dbcache", new_dbcache_size_mib);
58+
}
5259
Q_EMIT dbcacheSizeMiBChanged(new_dbcache_size_mib);
5360
}
5461
}
@@ -57,7 +64,9 @@ void OptionsQmlModel::setListen(bool new_listen)
5764
{
5865
if (new_listen != m_listen) {
5966
m_listen = new_listen;
60-
m_node.updateRwSetting("listen", new_listen);
67+
if (m_onboarded) {
68+
m_node.updateRwSetting("listen", new_listen);
69+
}
6170
Q_EMIT listenChanged(new_listen);
6271
}
6372
}
@@ -66,7 +75,9 @@ void OptionsQmlModel::setNatpmp(bool new_natpmp)
6675
{
6776
if (new_natpmp != m_natpmp) {
6877
m_natpmp = new_natpmp;
69-
m_node.updateRwSetting("natpmp", new_natpmp);
78+
if (m_onboarded) {
79+
m_node.updateRwSetting("natpmp", new_natpmp);
80+
}
7081
Q_EMIT natpmpChanged(new_natpmp);
7182
}
7283
}
@@ -75,7 +86,9 @@ void OptionsQmlModel::setPrune(bool new_prune)
7586
{
7687
if (new_prune != m_prune) {
7788
m_prune = new_prune;
78-
m_node.updateRwSetting("prune", pruneSetting());
89+
if (m_onboarded) {
90+
m_node.updateRwSetting("prune", pruneSetting());
91+
}
7992
Q_EMIT pruneChanged(new_prune);
8093
}
8194
}
@@ -84,7 +97,9 @@ void OptionsQmlModel::setPruneSizeGB(int new_prune_size_gb)
8497
{
8598
if (new_prune_size_gb != m_prune_size_gb) {
8699
m_prune_size_gb = new_prune_size_gb;
87-
m_node.updateRwSetting("prune", pruneSetting());
100+
if (m_onboarded) {
101+
m_node.updateRwSetting("prune", pruneSetting());
102+
}
88103
Q_EMIT pruneSizeGBChanged(new_prune_size_gb);
89104
}
90105
}
@@ -93,7 +108,9 @@ void OptionsQmlModel::setScriptThreads(int new_script_threads)
93108
{
94109
if (new_script_threads != m_script_threads) {
95110
m_script_threads = new_script_threads;
96-
m_node.updateRwSetting("par", new_script_threads);
111+
if (m_onboarded) {
112+
m_node.updateRwSetting("par", new_script_threads);
113+
}
97114
Q_EMIT scriptThreadsChanged(new_script_threads);
98115
}
99116
}
@@ -102,7 +119,9 @@ void OptionsQmlModel::setServer(bool new_server)
102119
{
103120
if (new_server != m_server) {
104121
m_server = new_server;
105-
m_node.updateRwSetting("server", new_server);
122+
if (m_onboarded) {
123+
m_node.updateRwSetting("server", new_server);
124+
}
106125
Q_EMIT serverChanged(new_server);
107126
}
108127
}
@@ -111,7 +130,9 @@ void OptionsQmlModel::setUpnp(bool new_upnp)
111130
{
112131
if (new_upnp != m_upnp) {
113132
m_upnp = new_upnp;
114-
m_node.updateRwSetting("upnp", new_upnp);
133+
if (m_onboarded) {
134+
m_node.updateRwSetting("upnp", new_upnp);
135+
}
115136
Q_EMIT upnpChanged(new_upnp);
116137
}
117138
}
@@ -145,4 +166,31 @@ void OptionsQmlModel::setCustomDataDirArgs(QString path)
145166
// TODO: add actual custom data wiring
146167
qDebug() << "PlaceHolder: Created data directory: " << path;
147168
}
148-
}
169+
}
170+
171+
void OptionsQmlModel::onboard()
172+
{
173+
m_node.resetSettings();
174+
if (m_dbcache_size_mib != nDefaultDbCache) {
175+
m_node.updateRwSetting("dbcache", m_dbcache_size_mib);
176+
}
177+
if (m_listen) {
178+
m_node.updateRwSetting("listen", m_listen);
179+
}
180+
if (m_natpmp) {
181+
m_node.updateRwSetting("natpmp", m_natpmp);
182+
}
183+
if (m_prune) {
184+
m_node.updateRwSetting("prune", pruneSetting());
185+
}
186+
if (m_script_threads != DEFAULT_SCRIPTCHECK_THREADS) {
187+
m_node.updateRwSetting("par", m_script_threads);
188+
}
189+
if (m_server) {
190+
m_node.updateRwSetting("server", m_server);
191+
}
192+
if (m_upnp) {
193+
m_node.updateRwSetting("upnp", m_upnp);
194+
}
195+
m_onboarded = true;
196+
}

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)