From 0d8828e8cd477b571bc00b3d89362a5460314eaf Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Mon, 16 Aug 2021 17:11:54 +1000 Subject: [PATCH] Fix merge --- src/App.tsx | 6 +++++ src/components/chat/MessageBar.tsx | 2 +- src/components/templates/PrimaryTemplate.tsx | 5 ++-- src/core/slices/meshtasticSlice.ts | 6 +++++ src/pages/Nodes/Index.tsx | 7 +++++- src/pages/settings/Device.tsx | 22 +++++++---------- src/pages/settings/Radio.tsx | 25 ++++++++++++++++++-- yarn.lock | 16 ++++++------- 8 files changed, 61 insertions(+), 28 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index efe4bbc7..937fc647 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -19,6 +19,7 @@ import { setMyNodeInfo, setPreferences, setReady, + setUser, } from '@core/slices/meshtasticSlice'; import { Protobuf, SettingsManager, Types } from '@meshtastic/meshtasticjs'; import { About } from '@pages/About'; @@ -70,6 +71,10 @@ const App = (): JSX.Element => { dispatch(setMyNodeInfo(nodeInfo)); }); + connection.onUserDataPacket.subscribe((user) => { + dispatch(setUser(user)); + }); + connection.onNodeInfoPacket.subscribe((nodeInfoPacket) => dispatch(addNode(nodeInfoPacket.data)), ); @@ -117,6 +122,7 @@ const App = (): JSX.Element => { return (): void => { connection.onDeviceStatus.cancelAll(); connection.onMyNodeInfo.cancelAll(); + connection.onUserDataPacket.cancelAll(); connection.onNodeInfoPacket.cancelAll(); connection.onAdminPacket.cancelAll(); connection.onMeshHeartbeat.cancelAll(); diff --git a/src/components/chat/MessageBar.tsx b/src/components/chat/MessageBar.tsx index 307db01a..f0746447 100644 --- a/src/components/chat/MessageBar.tsx +++ b/src/components/chat/MessageBar.tsx @@ -24,7 +24,7 @@ export const MessageBar = (): JSX.Element => { const { t } = useTranslation(); return (
-
+
-
{children}
- +
+ {children} +
{footer && (
{button &&
{button}
} diff --git a/src/core/slices/meshtasticSlice.ts b/src/core/slices/meshtasticSlice.ts index fcb103f6..ea650fdf 100644 --- a/src/core/slices/meshtasticSlice.ts +++ b/src/core/slices/meshtasticSlice.ts @@ -16,6 +16,7 @@ interface AppState { lastMeshInterraction: number; ready: boolean; myNodeInfo: Protobuf.MyNodeInfo; + user: Protobuf.User; positionPackets: Types.PositionPacket[]; nodes: Protobuf.NodeInfo[]; channels: Protobuf.Channel[]; @@ -30,6 +31,7 @@ const initialState: AppState = { lastMeshInterraction: 0, ready: false, myNodeInfo: Protobuf.MyNodeInfo.create(), + user: Protobuf.User.create(), positionPackets: [], nodes: [], channels: [], @@ -55,6 +57,9 @@ export const meshtasticSlice = createSlice({ }, setMyNodeInfo: (state, action: PayloadAction) => { state.myNodeInfo = action.payload; + }, + setUser: (state, action: PayloadAction) => { + state.user = action.payload; }, addPositionPacket: (state, action: PayloadAction) => { state.positionPackets.push(action.payload); @@ -124,6 +129,7 @@ export const { setLastMeshInterraction, setReady, setMyNodeInfo, + setUser, addPositionPacket, addNode, addChannel, diff --git a/src/pages/Nodes/Index.tsx b/src/pages/Nodes/Index.tsx index 6dbea95d..21fecac1 100644 --- a/src/pages/Nodes/Index.tsx +++ b/src/pages/Nodes/Index.tsx @@ -9,6 +9,7 @@ import { Drawer } from '@components/generic/Drawer'; import { SidebarItem } from '@components/generic/SidebarItem'; import { Tab } from '@headlessui/react'; import { XCircleIcon } from '@heroicons/react/outline'; +import { Protobuf } from '@meshtastic/meshtasticjs'; import { Node } from './Node'; @@ -55,7 +56,11 @@ export const Nodes = (): JSX.Element => { {({ selected }): JSX.Element => ( { const { t } = useTranslation(); - const radioConfig = useAppSelector((state) => state.meshtastic.preferences); + const user = useAppSelector((state) => state.meshtastic.user); - const { register, handleSubmit, formState } = - useForm({ - defaultValues: radioConfig, - }); + const { register, handleSubmit, formState } = useForm({ + defaultValues: user, + }); const onSubmit = handleSubmit((data) => { - void connection.setPreferences(data); + void connection.setOwner(data); }); return ( @@ -54,14 +53,9 @@ export const Device = ({ navOpen, setNavOpen }: DeviceProps): JSX.Element => { } > -
-
- - +
+ +
diff --git a/src/pages/settings/Radio.tsx b/src/pages/settings/Radio.tsx index a0e2e961..78354441 100644 --- a/src/pages/settings/Radio.tsx +++ b/src/pages/settings/Radio.tsx @@ -1,11 +1,15 @@ import React from 'react'; +import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; +import { connection } from '@app/core/connection'; +import { useAppSelector } from '@app/hooks/redux'; 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'; export interface RadioProps { navOpen: boolean; @@ -14,7 +18,16 @@ export interface RadioProps { export const Radio = ({ navOpen, setNavOpen }: RadioProps): JSX.Element => { const { t } = useTranslation(); + const radioConfig = useAppSelector((state) => state.meshtastic.preferences); + const { register, handleSubmit, formState } = + useForm({ + defaultValues: radioConfig, + }); + + const onSubmit = handleSubmit((data) => { + void connection.setPreferences(data); + }); return ( { } > -
- +
+
+ + +
); diff --git a/yarn.lock b/yarn.lock index 19093d79..51d03153 100644 --- a/yarn.lock +++ b/yarn.lock @@ -267,11 +267,11 @@ integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== "@meshtastic/meshtasticjs@^0.6.16": - version "0.6.16" - resolved "https://registry.yarnpkg.com/@meshtastic/meshtasticjs/-/meshtasticjs-0.6.16.tgz#aa2fe3808af90b4c4aa43d2e2223dbf420977c65" - integrity sha512-nozIJJYdxouDBCWTJtF3oKPqkuJbL8lA9xTuzpSCVz4MRzlNPiSxc0O4C4lwwBrDEi9uymn+DJbub/lWv8m+wA== + version "0.6.17" + resolved "https://registry.yarnpkg.com/@meshtastic/meshtasticjs/-/meshtasticjs-0.6.17.tgz#e53dc051a9f8fa94162658dc53c8c4fad80fa627" + integrity sha512-//1Opyv8IM9FiONGJ52w2TLvv6Gs3d0zaInqw73SzFZl9eRv8ZqiVhZA91wqleVilwPmsudyT+XAljKrrTn9VQ== dependencies: - "@protobuf-ts/runtime" "^1.0.13" + "@protobuf-ts/runtime" "^2.0.1" sub-events "^1.8.9" "@nodelib/fs.scandir@2.1.5": @@ -417,10 +417,10 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" -"@protobuf-ts/runtime@^1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-1.0.13.tgz#42d6d84ea6f0ded68d6642ab64ca49f7c17f6e71" - integrity sha512-uvYYBUtG4eCYMxo+mzxN8SHvpL/l7PbHEmOpXEnDCwBj/wJ+Ezj8+TlEFjjRWpnFidka+SMdDOXPWSyJv2iNAw== +"@protobuf-ts/runtime@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.0.1.tgz#850ed3b66873a9d503be2f835ee43e8937939fe0" + integrity sha512-iYsRGdr35Bta2ZxgyLyL7YWVnzn/gYZ4cv+CxIZnfz27XJ9hxOsx8e/4kQjcAopyw/lGzI9uGJXocXIUVhDK5Q== "@reduxjs/toolkit@^1.6.0": version "1.6.1"