Skip to content

Commit bb7e920

Browse files
committed
add check if walk mode is supported
1 parent 56fb652 commit bb7e920

File tree

5 files changed

+160
-74
lines changed

5 files changed

+160
-74
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.0
1+
1.1.1

lib/Backend/sensors.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,11 @@ abstract class TriggerDefinition extends ChangeNotifier implements Comparable<Tr
195195

196196
TriggerDefinition(this.ref);
197197

198+
// add check here if a trigger is supported on a given device/platform
199+
Future<bool> isSupported() {
200+
return Future.value(true);
201+
}
202+
198203
Future<void> sendCommands(String name, Ref ref) async {
199204
if (ref.read(getAvailableGearProvider).isEmpty) {
200205
return;
@@ -363,6 +368,13 @@ class WalkingTriggerDefinition extends TriggerDefinition {
363368
];
364369
}
365370

371+
@override
372+
Future<bool> isSupported() async {
373+
bool isStepCountSupported = await Pedometer.isStepCountSupported == true;
374+
bool isStepDetectionSupported = await Pedometer.isStepDetectionSupported == true;
375+
return isStepDetectionSupported && isStepCountSupported;
376+
}
377+
366378
@override
367379
Future<void> onDisable() async {
368380
pedestrianStatusStream?.cancel();
@@ -407,6 +419,11 @@ class CoverTriggerDefinition extends TriggerDefinition {
407419
super.actionTypes = [TriggerActionDef(name: "Near", translated: triggerCoverNear(), uuid: "bf3d0ce0-15c0-46db-95ce-e2cd6a5ecd0f"), TriggerActionDef(name: "Far", translated: triggerCoverFar(), uuid: "d121e4a8-a12d-4f0a-8348-89c62eb72a7a")];
408420
}
409421

422+
@override
423+
Future<bool> isSupported() {
424+
return Future.value(true);
425+
}
426+
410427
@override
411428
Future<void> onDisable() async {
412429
proximityStream?.cancel();
@@ -418,6 +435,7 @@ class CoverTriggerDefinition extends TriggerDefinition {
418435
if (proximityStream != null) {
419436
return;
420437
}
438+
421439
proximityStream = ProximitySensor.events.listen((int event) {
422440
sensorsLogger.fine("CoverEvent:: $event");
423441
if (event >= 1) {
@@ -637,6 +655,11 @@ class VolumeButtonTriggerDefinition extends TriggerDefinition {
637655
super.actionTypes = [TriggerActionDef(name: "Volume Up", translated: triggerVolumeButtonVolumeUp(), uuid: "834a9bef-9ae2-4623-81fa-bbead69eb28e"), TriggerActionDef(name: "Volume Down", translated: triggerVolumeButtonVolumeDown(), uuid: "2972aa14-33de-4d4f-ac67-4f572306b5c4")];
638656
}
639657

658+
@override
659+
Future<bool> isSupported() {
660+
return Future.value(Platform.isAndroid);
661+
}
662+
640663
@override
641664
Future<void> onDisable() async {
642665
subscription?.cancel();

lib/Frontend/pages/triggers.dart

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -165,17 +165,22 @@ class _TriggersState extends ConsumerState<Triggers> {
165165
builder: (BuildContext context, Widget? child) {
166166
return Semantics(
167167
label: 'A switch to toggle the trigger ${trigger.triggerDefinition?.name}',
168-
child: Switch(
169-
value: trigger.enabled,
170-
onChanged: (bool value) async {
171-
setState(
172-
() {
173-
trigger.storedEnable = !trigger.enabled;
174-
ref.read(triggerListProvider.notifier).store();
175-
plausible.event(name: "Enable Trigger", props: {"Trigger Type": ref.watch(triggerDefinitionListProvider).where((element) => element.uuid == trigger.triggerDefUUID).first.toString()});
176-
},
177-
);
178-
},
168+
child: FutureBuilder(
169+
future: trigger.triggerDefinition!.isSupported(),
170+
builder: (context, snapshot) => Switch(
171+
value: trigger.enabled,
172+
onChanged: snapshot.data == true
173+
? (bool value) async {
174+
setState(
175+
() {
176+
trigger.storedEnable = !trigger.enabled;
177+
ref.read(triggerListProvider.notifier).store();
178+
plausible.event(name: "Enable Trigger", props: {"Trigger Type": ref.watch(triggerDefinitionListProvider).where((element) => element.uuid == trigger.triggerDefUUID).first.toString()});
179+
},
180+
);
181+
}
182+
: null,
183+
),
179184
),
180185
);
181186
},
@@ -240,17 +245,22 @@ class _TriggerEditState extends ConsumerState<TriggerEdit> {
240245
builder: (BuildContext context, Widget? child) {
241246
return Semantics(
242247
label: 'A switch to toggle the trigger ${triggerDefinition?.name}',
243-
child: Switch(
244-
value: trigger!.enabled,
245-
onChanged: (bool value) {
246-
setState(
247-
() {
248-
trigger!.storedEnable = !trigger!.enabled;
249-
ref.read(triggerListProvider.notifier).store();
250-
plausible.event(name: "Enable Trigger", props: {"Trigger Type": ref.watch(triggerDefinitionListProvider).where((element) => element.uuid == trigger!.triggerDefUUID).first.toString()});
251-
},
252-
);
253-
},
248+
child: FutureBuilder(
249+
future: trigger!.triggerDefinition!.isSupported(),
250+
builder: (context, snapshot) => Switch(
251+
value: trigger!.enabled,
252+
onChanged: snapshot.data == true
253+
? (bool value) {
254+
setState(
255+
() {
256+
trigger!.storedEnable = !trigger!.enabled;
257+
ref.read(triggerListProvider.notifier).store();
258+
plausible.event(name: "Enable Trigger", props: {"Trigger Type": ref.watch(triggerDefinitionListProvider).where((element) => element.uuid == trigger!.triggerDefUUID).first.toString()});
259+
},
260+
);
261+
}
262+
: null,
263+
),
254264
),
255265
);
256266
},

0 commit comments

Comments
 (0)