WIP
This commit is contained in:
@@ -46,6 +46,12 @@ export const Nodes = (): JSX.Element => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{!nodes.length && (
|
||||
<span className="p-4 text-sm text-gray-400 dark:text-gray-600">
|
||||
No nodes discovered yet...
|
||||
</span>
|
||||
)}
|
||||
|
||||
{nodes.map((node) => (
|
||||
<Tab
|
||||
onClick={(): void => {
|
||||
|
||||
@@ -3,12 +3,18 @@ import React from 'react';
|
||||
import { useForm } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { Input } from '@app/components/generic/Input';
|
||||
import { Tabs } from '@app/components/generic/Tabs';
|
||||
import { connection } from '@app/core/connection';
|
||||
import { Toggle } from '@app/components/generic/Toggle';
|
||||
import {
|
||||
bleConnection,
|
||||
connection,
|
||||
serialConnection,
|
||||
} from '@app/core/connection';
|
||||
import { useAppSelector } from '@app/hooks/redux';
|
||||
import { Button } from '@components/generic/Button';
|
||||
import { PrimaryTemplate } from '@components/templates/PrimaryTemplate';
|
||||
import { MenuIcon, SaveIcon } from '@heroicons/react/outline';
|
||||
import { LinkIcon, MenuIcon, SaveIcon } from '@heroicons/react/outline';
|
||||
import type { Protobuf } from '@meshtastic/meshtasticjs';
|
||||
|
||||
export interface ConnectionProps {
|
||||
@@ -57,12 +63,71 @@ export const Connection = ({
|
||||
}
|
||||
>
|
||||
<div className="w-full max-w-3xl md:max-w-xl">
|
||||
<div className="mb-2 flex w-full border dark:border-gray-600 rounded-3xl p-2">
|
||||
Current connection method:
|
||||
<div className="ml-2 rounded-full bg-gray-400 dark:bg-primaryDark text-sm px-1 my-auto">
|
||||
BLE
|
||||
</div>
|
||||
</div>
|
||||
<form className="space-y-2" onSubmit={onSubmit}>
|
||||
<Tabs
|
||||
className="h-60"
|
||||
tabs={[
|
||||
{ name: 'HTTP', body: <div>HTTP</div> },
|
||||
{ name: 'Bluetooth', body: <div>BLE</div> },
|
||||
{ name: 'Serial', body: <div>SERIAL</div> },
|
||||
{
|
||||
name: 'HTTP',
|
||||
body: (
|
||||
<div className="space-y-2">
|
||||
<Input label={'Device URL'} />
|
||||
<Toggle label="Use TLS?" />
|
||||
</div>
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'Bluetooth',
|
||||
body: (
|
||||
<div className="space-y-2">
|
||||
Devices:
|
||||
<Button
|
||||
onClick={async (): Promise<void> => {
|
||||
console.log(await bleConnection.getDevices());
|
||||
}}
|
||||
>
|
||||
Get Devices
|
||||
</Button>
|
||||
<div className="flex justify-between rounded-3xl border dark:border-600 p-2">
|
||||
Device Name
|
||||
<LinkIcon className="my-auto mr-2 w-5 h-5 text-gray-300" />
|
||||
</div>
|
||||
<div className="flex justify-between rounded-3xl border dark:border-600 p-2">
|
||||
Device Name
|
||||
<LinkIcon className="my-auto mr-2 w-5 h-5 text-gray-600" />
|
||||
</div>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'Serial',
|
||||
body: (
|
||||
<div className="space-y-2">
|
||||
Devices:
|
||||
<Button
|
||||
onClick={async (): Promise<void> => {
|
||||
console.log(await serialConnection.getPorts());
|
||||
}}
|
||||
>
|
||||
Get Devices
|
||||
</Button>
|
||||
<div className="flex justify-between rounded-3xl border dark:border-600 p-2">
|
||||
Device Name
|
||||
<LinkIcon className="my-auto mr-2 w-5 h-5 text-gray-300" />
|
||||
</div>
|
||||
<div className="flex justify-between rounded-3xl border dark:border-600 p-2">
|
||||
Device Name
|
||||
<LinkIcon className="my-auto mr-2 w-5 h-5 text-gray-600" />
|
||||
</div>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</form>
|
||||
|
||||
@@ -10,7 +10,7 @@ import { Button } from '@components/generic/Button';
|
||||
import { Input } from '@components/generic/Input';
|
||||
import { PrimaryTemplate } from '@components/templates/PrimaryTemplate';
|
||||
import { MenuIcon, SaveIcon } from '@heroicons/react/outline';
|
||||
import type { Protobuf } from '@meshtastic/meshtasticjs';
|
||||
import { Protobuf } from '@meshtastic/meshtasticjs';
|
||||
|
||||
export interface DeviceProps {
|
||||
navOpen: boolean;
|
||||
@@ -20,13 +20,21 @@ export interface DeviceProps {
|
||||
export const Device = ({ navOpen, setNavOpen }: DeviceProps): JSX.Element => {
|
||||
const { t } = useTranslation();
|
||||
const user = useAppSelector((state) => state.meshtastic.user);
|
||||
|
||||
const { register, handleSubmit, formState } = useForm<Protobuf.User>({
|
||||
defaultValues: user,
|
||||
const { register, handleSubmit, formState } = useForm<{
|
||||
isLicensed: boolean;
|
||||
shortName: string;
|
||||
longName: string;
|
||||
}>({
|
||||
defaultValues: {
|
||||
isLicensed: user.isLicensed,
|
||||
shortName: user.shortName,
|
||||
longName: user.longName,
|
||||
},
|
||||
});
|
||||
|
||||
const onSubmit = handleSubmit((data) => {
|
||||
void connection.setOwner(data);
|
||||
Protobuf.User.mergePartial(user, data);
|
||||
void connection.setOwner(user);
|
||||
});
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user