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