Merge branch 'master' into fix/improve-styling-of-chat

This commit is contained in:
Dan Ditomaso
2025-02-07 10:25:15 -05:00
committed by GitHub
8 changed files with 60 additions and 14 deletions
@@ -46,7 +46,7 @@ export const Device = (): JSX.Element => {
"Lost and Found":
Protobuf.Config.Config_DeviceConfig_Role.LOST_AND_FOUND,
"TAK Tracker":
Protobuf.Config.Config_DeviceConfig_Role.SENSOR,
Protobuf.Config.Config_DeviceConfig_Role.TAK_TRACKER,
},
formatEnumName: true,
},
@@ -80,7 +80,7 @@ export const ChannelChat = ({
</div>
</div>
<div className="flex-shrink-0 mt-2 p-4 w-full bg-gray-900">
<MessageInput to={to} channel={channel} />
<MessageInput to={to} channel={channel} maxBytes={200} />
</div>
</div>
);
@@ -9,11 +9,13 @@ import { type JSX, useCallback, useMemo, useState } from "react";
export interface MessageInputProps {
to: Types.Destination;
channel: Types.ChannelNumber;
maxBytes: number;
}
export const MessageInput = ({
to,
channel,
maxBytes,
}: MessageInputProps): JSX.Element => {
const {
connection,
@@ -24,6 +26,7 @@ export const MessageInput = ({
} = useDevice();
const myNodeNum = hardware.myNodeNum;
const [localDraft, setLocalDraft] = useState(messageDraft);
const [messageBytes, setMessageBytes] = useState(maxBytes);
const debouncedSetMessageDraft = useMemo(
() => debounce(setMessageDraft, 300),
@@ -60,8 +63,12 @@ export const MessageInput = ({
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const newValue = e.target.value;
setLocalDraft(newValue);
debouncedSetMessageDraft(newValue);
const byteLength = new Blob([newValue]).size;
if (byteLength <= maxBytes) {
setLocalDraft(newValue);
debouncedSetMessageDraft(newValue);
setMessageBytes(maxBytes - byteLength);
}
};
return (
@@ -85,6 +92,9 @@ export const MessageInput = ({
onChange={handleInputChange}
/>
</span>
<div className="flex items-center">
{messageBytes}/{maxBytes}
</div>
<Button type="submit">
<SendIcon size={16} />
</Button>