Skip to content

Commit 501515f

Browse files
authored
feat: show not connected when analyze returns false (fossasia#3352)
1 parent 5ce21f7 commit 501515f

2 files changed

Lines changed: 62 additions & 48 deletions

File tree

lib/providers/logic_analyzer_state_provider.dart

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -198,56 +198,59 @@ class LogicAnalyzerStateProvider extends ChangeNotifier {
198198
await Geolocator.getCurrentPosition(locationSettings: locationSettings);
199199
}
200200

201-
Future<void> analyze() async {
201+
Future<bool> analyze() async {
202+
if (!_scienceLab.isConnected()) {
203+
return false;
204+
}
202205
isProcessing = true;
203206
notifyListeners();
204207

205-
currentChannel = 0;
206-
dataSets.clear();
207-
analysisChannelNames.clear();
208-
analysisEdgesNames.clear();
209-
digitalChannels.clear();
208+
try {
209+
currentChannel = 0;
210+
dataSets.clear();
211+
analysisChannelNames.clear();
212+
analysisEdgesNames.clear();
213+
digitalChannels.clear();
210214

211-
switch (channelMode) {
212-
case 1:
213-
analysisChannelNames.add(channelSelectSpinner1);
214-
analysisEdgesNames.add(edgeSelectSpinner1);
215-
break;
216-
case 2:
217-
analysisChannelNames
218-
.addAll([channelSelectSpinner1, channelSelectSpinner2]);
219-
analysisEdgesNames.addAll([edgeSelectSpinner1, edgeSelectSpinner2]);
220-
break;
221-
case 3:
222-
analysisChannelNames.addAll([
223-
channelSelectSpinner1,
224-
channelSelectSpinner2,
225-
channelSelectSpinner3
226-
]);
227-
analysisEdgesNames.addAll(
228-
[edgeSelectSpinner1, edgeSelectSpinner2, edgeSelectSpinner3]);
229-
break;
230-
case 4:
231-
analysisChannelNames.addAll([
232-
channelSelectSpinner1,
233-
channelSelectSpinner2,
234-
channelSelectSpinner3,
235-
channelSelectSpinner4
236-
]);
237-
analysisEdgesNames.addAll([
238-
edgeSelectSpinner1,
239-
edgeSelectSpinner2,
240-
edgeSelectSpinner3,
241-
edgeSelectSpinner4
242-
]);
243-
break;
244-
default:
245-
analysisChannelNames.add(channelSelectSpinner1);
246-
analysisEdgesNames.add(edgeSelectSpinner1);
247-
break;
248-
}
215+
switch (channelMode) {
216+
case 1:
217+
analysisChannelNames.add(channelSelectSpinner1);
218+
analysisEdgesNames.add(edgeSelectSpinner1);
219+
break;
220+
case 2:
221+
analysisChannelNames
222+
.addAll([channelSelectSpinner1, channelSelectSpinner2]);
223+
analysisEdgesNames.addAll([edgeSelectSpinner1, edgeSelectSpinner2]);
224+
break;
225+
case 3:
226+
analysisChannelNames.addAll([
227+
channelSelectSpinner1,
228+
channelSelectSpinner2,
229+
channelSelectSpinner3
230+
]);
231+
analysisEdgesNames.addAll(
232+
[edgeSelectSpinner1, edgeSelectSpinner2, edgeSelectSpinner3]);
233+
break;
234+
case 4:
235+
analysisChannelNames.addAll([
236+
channelSelectSpinner1,
237+
channelSelectSpinner2,
238+
channelSelectSpinner3,
239+
channelSelectSpinner4
240+
]);
241+
analysisEdgesNames.addAll([
242+
edgeSelectSpinner1,
243+
edgeSelectSpinner2,
244+
edgeSelectSpinner3,
245+
edgeSelectSpinner4
246+
]);
247+
break;
248+
default:
249+
analysisChannelNames.add(channelSelectSpinner1);
250+
analysisEdgesNames.add(edgeSelectSpinner1);
251+
break;
252+
}
249253

250-
if (_scienceLab.isConnected()) {
251254
switch (channelMode) {
252255
case 1:
253256
await captureOne(analysisChannelNames[0], analysisEdgesNames[0]);
@@ -273,9 +276,11 @@ class LogicAnalyzerStateProvider extends ChangeNotifier {
273276
break;
274277
}
275278
isData = true;
279+
return true;
280+
} finally {
281+
isProcessing = false;
282+
notifyListeners();
276283
}
277-
isProcessing = false;
278-
notifyListeners();
279284
}
280285

281286
double getMaxY() {

lib/view/widgets/logic_analyzer_channel_selection.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,16 @@ class _LogicAnalyzerChannelSelectionState
509509
borderRadius: BorderRadius.circular(6),
510510
),
511511
),
512-
onPressed: provider.analyze,
512+
onPressed: () async {
513+
final success = await provider.analyze();
514+
if (!success && context.mounted) {
515+
ScaffoldMessenger.of(context).showSnackBar(
516+
SnackBar(
517+
content: Text(appLocalizations.notConnected),
518+
),
519+
);
520+
}
521+
},
513522
child: Text(
514523
appLocalizations.analyze.toUpperCase(),
515524
style: TextStyle(

0 commit comments

Comments
 (0)