re-enable lightning and payjoin logs for prod builds
OmarHatem committed
Mar 19, 2026 at 23:52 UTC
a418980e8046b908e813949a9bf44643850578dd
1 file changed
+125
-135
lib/src/screens/settings/other_settings_page.dart
+125
-135
@@ -32,7 +32,6 @@ class OtherSettingsPage extends BasePage {
32
33
final OtherSettingsViewModel _otherSettingsViewModel;
34
35
-
35
@override
36
Widget body(BuildContext context) {
37
return ModalPageWrapper(
@@ -45,8 +44,7 @@ class OtherSettingsPage extends BasePage {
44
// iconPath: "assets/new-ui/settings_row_icons/other.svg",
45
// message: "Other settings",
46
// title: S.of(context).other_settings),
48
- content: NewListSections(
49
- sections: {
47
+ content: NewListSections(sections: {
48
"": [
49
if (_otherSettingsViewModel.displayTransactionPriority)
50
_otherSettingsViewModel.walletType == WalletType.bitcoin
@@ -54,70 +52,76 @@ class OtherSettingsPage extends BasePage {
52
keyValue: "fee_priority",
53
label: S.of(context).settings_fee_priority,
54
options: [_otherSettingsViewModel.transactionPriority.title],
57
- onTap: () async {
58
-
59
- final items = priorityForWalletType(_otherSettingsViewModel.walletType);
55
+ onTap: () async {
56
+ final items = priorityForWalletType(_otherSettingsViewModel.walletType);
57
61
- var selectedAtIndex = items.indexOf(_otherSettingsViewModel.transactionPriority);
62
- double sliderValue = _otherSettingsViewModel.customBitcoinFeeRate ?? 0.0;
58
+ var selectedAtIndex =
59
+ items.indexOf(_otherSettingsViewModel.transactionPriority);
60
+ double sliderValue = _otherSettingsViewModel.customBitcoinFeeRate;
61
64
- await showPopUp<void>(
65
- context: context,
66
- builder: (BuildContext context) {
67
- return StatefulBuilder(
68
- builder: (BuildContext context, StateSetter setState) {
69
- return Picker(
70
- items: items,
71
- displayItem: (TransactionPriority item) => _otherSettingsViewModel.getDisplayBitcoinPriority(item, sliderValue.round()),
72
- selectedAtIndex: selectedAtIndex,
73
- customItemIndex: _otherSettingsViewModel.customPriorityItemIndex,
74
- maxValue: _otherSettingsViewModel.maxCustomFeeRate?.toDouble(),
75
- headerEnabled: false,
76
- closeOnItemSelected: false,
77
- mainAxisAlignment: MainAxisAlignment.center,
78
- sliderValue: sliderValue,
79
- onSliderChanged: (double newValue) =>
80
- setState(() => sliderValue = newValue),
81
- onItemSelected: (TransactionPriority priority) {
82
- setState(() => selectedAtIndex = items.indexOf(priority));
83
- _otherSettingsViewModel.onDisplayBitcoinPrioritySelected.call(priority, sliderValue);
62
+ await showPopUp<void>(
63
+ context: context,
64
+ builder: (BuildContext context) {
65
+ return StatefulBuilder(
66
+ builder: (BuildContext context, StateSetter setState) {
67
+ return Picker(
68
+ items: items,
69
+ displayItem: (TransactionPriority item) => _otherSettingsViewModel
70
+ .getDisplayBitcoinPriority(item, sliderValue.round()),
71
+ selectedAtIndex: selectedAtIndex,
72
+ customItemIndex: _otherSettingsViewModel.customPriorityItemIndex,
73
+ maxValue: _otherSettingsViewModel.maxCustomFeeRate?.toDouble(),
74
+ headerEnabled: false,
75
+ closeOnItemSelected: false,
76
+ mainAxisAlignment: MainAxisAlignment.center,
77
+ sliderValue: sliderValue,
78
+ onSliderChanged: (double newValue) =>
79
+ setState(() => sliderValue = newValue),
80
+ onItemSelected: (TransactionPriority priority) {
81
+ setState(() => selectedAtIndex = items.indexOf(priority));
82
+ _otherSettingsViewModel.onDisplayBitcoinPrioritySelected
83
+ .call(priority, sliderValue);
84
+ },
85
+ );
86
},
87
);
88
},
89
);
88
- },
89
- );
90
- _otherSettingsViewModel.onDisplayBitcoinPrioritySelected.call(items[selectedAtIndex], sliderValue);
91
- }
92
- )
90
+ _otherSettingsViewModel.onDisplayBitcoinPrioritySelected
91
+ .call(items[selectedAtIndex], sliderValue);
92
+ })
93
: ListItemSelector(
94
keyValue: "fee_priority",
95
label: S.of(context).settings_fee_priority,
96
options: [_otherSettingsViewModel.transactionPriority.title],
97
- onTap: () async {
98
- final selectedAtIndex = priorityForWalletType(_otherSettingsViewModel.walletType).indexOf(_otherSettingsViewModel.transactionPriority,);
97
+ onTap: () async {
98
+ final selectedAtIndex =
99
+ priorityForWalletType(_otherSettingsViewModel.walletType).indexOf(
100
+ _otherSettingsViewModel.transactionPriority,
101
+ );
102
100
- await showPopUp<void>(
101
- context: context,
102
- builder: (_) => Picker(
103
- items: priorityForWalletType(_otherSettingsViewModel.walletType),
104
- displayItem: _otherSettingsViewModel.getDisplayPriority,
105
- selectedAtIndex: selectedAtIndex,
106
- mainAxisAlignment: MainAxisAlignment.start,
107
- onItemSelected: (TransactionPriority item) => _otherSettingsViewModel.onDisplayBitcoinPrioritySelected.call(item, 0),
108
- isSeparated: false,
103
+ await showPopUp<void>(
104
+ context: context,
105
+ builder: (_) => Picker(
106
+ items: priorityForWalletType(_otherSettingsViewModel.walletType),
107
+ displayItem: _otherSettingsViewModel.getDisplayPriority,
108
+ selectedAtIndex: selectedAtIndex,
109
+ mainAxisAlignment: MainAxisAlignment.start,
110
+ onItemSelected: (TransactionPriority item) => _otherSettingsViewModel
111
+ .onDisplayBitcoinPrioritySelected
112
+ .call(item, 0),
113
+ isSeparated: false,
114
+ ),
115
+ );
116
+ },
117
),
110
- );
111
- },
112
- ),
113
- if(_otherSettingsViewModel.changeRepresentativeEnabled)
114
- ListItemRegularRow(
115
- keyValue: "change_rep",
116
- label: S.of(context).change_rep,
117
- onTap: () => Navigator.of(context).pushNamed(Routes.changeRep)
118
- ),
118
+ if (_otherSettingsViewModel.changeRepresentativeEnabled)
119
+ ListItemRegularRow(
120
+ keyValue: "change_rep",
121
+ label: S.of(context).change_rep,
122
+ onTap: () => Navigator.of(context).pushNamed(Routes.changeRep)),
123
if (_otherSettingsViewModel.changeHardwareWalletTypeEnabled)
120
- ListItemRegularRow(
124
+ ListItemRegularRow(
125
keyValue: "hardware_wallet_manufacturer",
126
label: "Hardware wallet manufacturer",
127
onTap: () => Navigator.of(context)
@@ -133,7 +137,7 @@ class OtherSettingsPage extends BasePage {
137
Navigator.pop(context);
138
},
139
}),
136
- ),
140
+ ),
141
ListItemRegularRow(
142
keyValue: "security_backup_page_sign_and_verify",
143
label: S.of(context).sign_verify_title,
@@ -141,93 +145,79 @@ class OtherSettingsPage extends BasePage {
145
Navigator.of(context).pushNamed(Routes.signPage);
146
}),
147
],
144
- if(FeatureFlag.hasDevOptions)
145
- "dev": [
146
- if(_otherSettingsViewModel.walletType == WalletType.bitcoin) ...[
147
- ListItemRegularRow(
148
- keyValue: "export_lightning_logs",
149
- label: S.of(context).export_lightning_logs,
150
- onTap: () => onExportLNLog(context)
151
- ),
152
- ListItemRegularRow(
153
- keyValue: "export_payjoin_logs",
154
- label: S.of(context).export_payjoin_logs,
155
- onTap: () => onExportPJLog(context)
156
- ),
157
- ],
158
- if (FeatureFlag.hasDevOptions &&
159
- _otherSettingsViewModel.walletType == WalletType.monero)
160
- ListItemRegularRow(
161
- keyValue: "[dev] monero background sync",
162
- label: "[dev] monero background sync",
163
- onTap: () => Navigator.of(context).pushNamed(Routes.devMoneroBackgroundSync)
164
- ),
165
- if (FeatureFlag.hasDevOptions &&
166
- [WalletType.monero, WalletType.wownero, WalletType.zano]
167
- .contains(_otherSettingsViewModel.walletType))
168
- ListItemRegularRow(
169
- keyValue: "[dev] xmr call profiler",
170
- label: "[dev] xmr call profiler",
171
- onTap: () => Navigator.of(context).pushNamed(Routes.devMoneroCallProfiler)
172
- ),
173
- if (FeatureFlag.hasDevOptions &&
174
- [WalletType.monero].contains(_otherSettingsViewModel.walletType))
175
- ListItemRegularRow(
176
- keyValue: '[dev] xmr wallet cache debug',
177
- label: '[dev] xmr wallet cache debug',
178
- onTap: () => Navigator.of(context).pushNamed(Routes.devMoneroWalletCacheDebug)
179
- ),
148
+ "dev": [
149
+ if (_otherSettingsViewModel.walletType == WalletType.bitcoin) ...[
150
ListItemRegularRow(
181
- keyValue: '[dev] shared preferences',
182
- label: '[dev] shared preferences',
183
- onTap: () => Navigator.of(context).pushNamed(Routes.devSharedPreferences)
184
- ),
151
+ keyValue: "export_lightning_logs",
152
+ label: S.of(context).export_lightning_logs,
153
+ onTap: () => onExportLNLog(context)),
154
ListItemRegularRow(
186
- keyValue: '[dev] secure storage preferences',
187
- label: '[dev] secure storage preferences',
188
- onTap: () => Navigator.of(context).pushNamed(Routes.devSecurePreferences)
189
- ),
155
+ keyValue: "export_payjoin_logs",
156
+ label: S.of(context).export_payjoin_logs,
157
+ onTap: () => onExportPJLog(context)),
158
+ ],
159
+ if (FeatureFlag.hasDevOptions && _otherSettingsViewModel.walletType == WalletType.monero)
160
ListItemRegularRow(
191
- keyValue: '[dev] background sync logs',
192
- label: '[dev] background sync logs',
193
- onTap: () => Navigator.of(context).pushNamed(Routes.devBackgroundSyncLogs)
194
- ),
161
+ keyValue: "[dev] monero background sync",
162
+ label: "[dev] monero background sync",
163
+ onTap: () => Navigator.of(context).pushNamed(Routes.devMoneroBackgroundSync)),
164
+ if (FeatureFlag.hasDevOptions &&
165
+ [WalletType.monero, WalletType.wownero, WalletType.zano]
166
+ .contains(_otherSettingsViewModel.walletType))
167
ListItemRegularRow(
196
- keyValue: '[dev] socket health logs',
197
- label: '[dev] socket health logs',
198
- onTap: () => Navigator.of(context).pushNamed(Routes.devSocketHealthLogs)
199
- ),
168
+ keyValue: "[dev] xmr call profiler",
169
+ label: "[dev] xmr call profiler",
170
+ onTap: () => Navigator.of(context).pushNamed(Routes.devMoneroCallProfiler)),
171
+ if (FeatureFlag.hasDevOptions &&
172
+ [WalletType.monero].contains(_otherSettingsViewModel.walletType))
173
ListItemRegularRow(
201
- keyValue: '[dev] network requests logs',
202
- label: '[dev] network requests logs',
203
- onTap: () => Navigator.of(context).pushNamed(Routes.devNetworkRequests)
204
- ),
205
- ListItemRegularRow(
206
- keyValue: '[dev] exchange provider logs',
207
- label: '[dev] exchange provider logs',
208
- onTap: () => Navigator.of(context).pushNamed(Routes.devExchangeProviderLogs)
209
- ),
210
- ListItemRegularRow(
211
- keyValue: '[dev] *QR tools',
212
- label: '[dev] *QR tools',
213
- onTap: () => Navigator.of(context).pushNamed(Routes.devExchangeProviderLogs)
214
- ),
215
- ListItemRegularRow(
216
- keyValue: '[dev] browse sqlite db',
217
- label: '[dev] browse sqlite db',
218
- onTap: () async {
219
- final data = await dumpDb();
220
- Navigator.of(context).push(
221
- MaterialPageRoute(builder: (context) =>
222
- JsonExplorerPage(data: data, title: 'sqlite db')),
223
- );
224
- }
225
- ),
226
- ]
227
- }
228
- ),
174
+ keyValue: '[dev] xmr wallet cache debug',
175
+ label: '[dev] xmr wallet cache debug',
176
+ onTap: () => Navigator.of(context).pushNamed(Routes.devMoneroWalletCacheDebug)),
177
+ ListItemRegularRow(
178
+ keyValue: '[dev] shared preferences',
179
+ label: '[dev] shared preferences',
180
+ onTap: () => Navigator.of(context).pushNamed(Routes.devSharedPreferences)),
181
+ ListItemRegularRow(
182
+ keyValue: '[dev] secure storage preferences',
183
+ label: '[dev] secure storage preferences',
184
+ onTap: () => Navigator.of(context).pushNamed(Routes.devSecurePreferences)),
185
+ ListItemRegularRow(
186
+ keyValue: '[dev] background sync logs',
187
+ label: '[dev] background sync logs',
188
+ onTap: () => Navigator.of(context).pushNamed(Routes.devBackgroundSyncLogs)),
189
+ ListItemRegularRow(
190
+ keyValue: '[dev] socket health logs',
191
+ label: '[dev] socket health logs',
192
+ onTap: () => Navigator.of(context).pushNamed(Routes.devSocketHealthLogs)),
193
+ ListItemRegularRow(
194
+ keyValue: '[dev] network requests logs',
195
+ label: '[dev] network requests logs',
196
+ onTap: () => Navigator.of(context).pushNamed(Routes.devNetworkRequests)),
197
+ ListItemRegularRow(
198
+ keyValue: '[dev] exchange provider logs',
199
+ label: '[dev] exchange provider logs',
200
+ onTap: () => Navigator.of(context).pushNamed(Routes.devExchangeProviderLogs)),
201
+ ListItemRegularRow(
202
+ keyValue: '[dev] *QR tools',
203
+ label: '[dev] *QR tools',
204
+ onTap: () => Navigator.of(context).pushNamed(Routes.devExchangeProviderLogs)),
205
+ ListItemRegularRow(
206
+ keyValue: '[dev] browse sqlite db',
207
+ label: '[dev] browse sqlite db',
208
+ onTap: () async {
209
+ final data = await dumpDb();
210
+ Navigator.of(context).push(
211
+ MaterialPageRoute(
212
+ builder: (context) => JsonExplorerPage(data: data, title: 'sqlite db'),
213
+ ),
214
+ );
215
+ }),
216
+ ]
217
+ }),
218
);
219
}
220
+
221
Future<void> onExportLNLog(BuildContext context) async {
222
final file = await _otherSettingsViewModel.getLightningLog();
223