Files
web/src/components/PageComponents/ModuleConfig/ExternalNotification.tsx
Sacha Weatherstone 42068ad3d8 move to RsBuild
2024-10-06 21:24:12 +10:00

200 lines
5.4 KiB
TypeScript

import type { ExternalNotificationValidation } from "@app/validation/moduleConfig/externalNotification.tsx";
import { DynamicForm } from "@components/Form/DynamicForm.tsx";
import { useDevice } from "@core/stores/deviceStore.ts";
import { Protobuf } from "@meshtastic/js";
export const ExternalNotification = (): JSX.Element => {
const { moduleConfig, setWorkingModuleConfig } = useDevice();
const onSubmit = (data: ExternalNotificationValidation) => {
setWorkingModuleConfig(
new Protobuf.ModuleConfig.ModuleConfig({
payloadVariant: {
case: "externalNotification",
value: data,
},
}),
);
};
return (
<DynamicForm<ExternalNotificationValidation>
onSubmit={onSubmit}
defaultValues={moduleConfig.externalNotification}
fieldGroups={[
{
label: "External Notification Settings",
description: "Configure the external notification module",
fields: [
{
type: "toggle",
name: "enabled",
label: "Module Enabled",
description: "Enable External Notification",
},
{
type: "number",
name: "outputMs",
label: "Output MS",
description: "Output MS",
disabledBy: [
{
fieldName: "enabled",
},
],
properties: {
suffix: "ms",
},
},
{
type: "number",
name: "output",
label: "Output",
description: "Output",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "number",
name: "outputVibra",
label: "Output Vibrate",
description: "Output Vibrate",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "number",
name: "outputBuzzer",
label: "Output Buzzer",
description: "Output Buzzer",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "active",
label: "Active",
description: "Active",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "alertMessage",
label: "Alert Message",
description: "Alert Message",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "alertMessageVibra",
label: "Alert Message Vibrate",
description: "Alert Message Vibrate",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "alertMessageBuzzer",
label: "Alert Message Buzzer",
description: "Alert Message Buzzer",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "alertBell",
label: "Alert Bell",
description:
"Should an alert be triggered when receiving an incoming bell?",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "alertBellVibra",
label: "Alert Bell Vibrate",
description: "Alert Bell Vibrate",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "alertBellBuzzer",
label: "Alert Bell Buzzer",
description: "Alert Bell Buzzer",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "usePwm",
label: "Use PWM",
description: "Use PWM",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "number",
name: "nagTimeout",
label: "Nag Timeout",
description: "Nag Timeout",
disabledBy: [
{
fieldName: "enabled",
},
],
},
{
type: "toggle",
name: "useI2sAsBuzzer",
label: "Use I²S Pin as Buzzer",
description: "Designate I²S Pin as Buzzer Output",
disabledBy: [
{
fieldName: "enabled",
},
],
},
],
},
]}
/>
);
};