diff --git a/src/components/OutputGesture.svelte b/src/components/OutputGesture.svelte index 9c144b78a..f7f4005b8 100644 --- a/src/components/OutputGesture.svelte +++ b/src/components/OutputGesture.svelte @@ -57,8 +57,8 @@ triggerFunc(); }); - $: triggerOutputPin(requiredConfidenceLevel, currentConfidenceLevel, triggered); - $: if (shouldTrigger(requiredConfidenceLevel, currentConfidenceLevel, triggered)) { + $: triggerOutputPin(triggered); + $: if (shouldTrigger(triggered)) { triggerComponents(); playSound(); } @@ -69,7 +69,7 @@ onUserInteraction(); } - function triggerOutputPin(requiredLevel, currentLevel, oldTriggered) { + function triggerOutputPin(oldTriggered: boolean) { if (!Microbits.isOutputReady()) { return; } @@ -122,14 +122,10 @@ const refreshAfterChange = () => { Microbits.resetIOPins(); - triggerOutputPin(requiredConfidenceLevel, currentConfidenceLevel, false); + triggerOutputPin(false); }; - const shouldTrigger = ( - requiredConfidence: number, - confidence: number, - oldTriggered: boolean, - ) => { + const shouldTrigger = (oldTriggered: boolean) => { triggered = isConfidenceOverThreshold as boolean; if (!triggered) return false; if (!$settings.automaticClassification) return true; diff --git a/src/components/output/PinSelector.svelte b/src/components/output/PinSelector.svelte index 81cb16170..efa3a1431 100644 --- a/src/components/output/PinSelector.svelte +++ b/src/components/output/PinSelector.svelte @@ -5,20 +5,23 @@ import { t } from '../../i18n.js'; import MBSpecs from '../../script/microbit-interfacing/MBSpecs.js'; export let onPinSelect: (pin: MBSpecs.UsableIOPin) => void; - export let onTurnOnTimeSelect: ({ - turnOnState: PinTurnOnState, - turnOnTime: number, + export let onTurnOnTimeSelect: (turnOnArgs: { + turnOnState: PinTurnOnState; + turnOnTime: number; }) => void; export let turnOnTime: number; export let turnOnState: PinTurnOnState; - export let selectedPin: string; + export let selectedPin: MBSpecs.UsableIOPin; let selectedTurnOnState = turnOnState; let turnOnTimeInSeconds = turnOnTime / 1000; - const onPinSelected = (pin: MBSpecs.UsableIOPin) => { - onPinSelect(pin); + const onPinSelected = (pin: MBSpecs.IOPin) => { + if (!includes(StaticConfiguration.supportedPins, pin)) { + return; + } + onPinSelect(pin as MBSpecs.UsableIOPin); }; const onTurnOnStateSelect = () => { @@ -29,12 +32,19 @@ }; const largePins: MBSpecs.IOPin[] = [0, 1, 2, '3V', 'GND']; + + // Hacky way to check if a value is included in an array since typescript + // has made a very poor decision on how array.includes() is typed + function includes(array: T[], value: unknown): boolean { + return array.includes(value as T); + } +
- {#each MBSpecs.IO_PIN_LAYOUT as val, index} - {#if StaticConfiguration.supportedPins.includes(val)} + {#each MBSpecs.IO_PIN_LAYOUT as val} + {#if includes(StaticConfiguration.supportedPins, val)} {#if largePins.includes(val)}