Browse Source

fixing tests

pull/640/head
Dan Ditomaso 1 year ago
parent
commit
4fa2abe405
  1. 8
      src/components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx
  2. 7
      src/components/PageComponents/Map/NodeDetail.tsx
  3. 2
      src/components/Sidebar.tsx
  4. 12
      src/core/stores/messageStore/index.ts
  5. 7
      src/core/stores/messageStore/messageStore.test.ts
  6. 4
      src/i18n/locales/en/messages.json
  7. 10
      src/pages/Messages.tsx
  8. 14
      src/routes.tsx

8
src/components/Dialog/NodeDetailsDialog/NodeDetailsDialog.tsx

@ -1,10 +1,6 @@
import { useEffect, useState } from "react";
import { useAppStore } from "@core/stores/appStore.ts";
import { useDevice } from "@core/stores/deviceStore.ts";
import {
MessageType,
useMessageStore,
} from "@core/stores/messageStore/index.ts";
import { Protobuf } from "@meshtastic/core";
import { numberToHexUnpadded } from "@noble/curves/abstract/utils";
import { DeviceImage } from "@components/generic/DeviceImage.tsx";
@ -63,7 +59,6 @@ export const NodeDetailsDialog = ({
const { setDialogOpen, connection, getNode } = useDevice();
const navigate = useNavigate();
const { setNodeNumToBeRemoved, nodeNumDetails } = useAppStore();
const { setChatType, setActiveChat } = useMessageStore();
const { updateFavorite } = useFavoriteNode();
const { updateIgnored } = useIgnoreNode();
@ -86,9 +81,6 @@ export const NodeDetailsDialog = ({
function handleDirectMessage() {
if (!node) return;
setChatType(MessageType.Direct);
setActiveChat(node.num);
navigate({ to: `/messages/direct/${node.num}` });
}

7
src/components/PageComponents/Map/NodeDetail.tsx

@ -22,10 +22,6 @@ import {
TooltipProvider,
TooltipTrigger,
} from "@radix-ui/react-tooltip";
import {
MessageType,
useMessageStore,
} from "@core/stores/messageStore/index.ts";
import BatteryStatus from "@components/BatteryStatus.tsx";
import { useTranslation } from "react-i18next";
import { useNavigate } from "@tanstack/react-router";
@ -35,7 +31,6 @@ export interface NodeDetailProps {
}
export const NodeDetail = ({ node }: NodeDetailProps) => {
const { setChatType, setActiveChat } = useMessageStore();
const navigate = useNavigate();
const { t } = useTranslation("nodes");
const name = node.user?.longName ?? t("unknown.shortName");
@ -50,8 +45,6 @@ export const NodeDetail = ({ node }: NodeDetailProps) => {
: rawHardwareType.replaceAll("_", " ")
: `${hwModel}`;
function handleDirectMessage() {
setChatType(MessageType.Direct);
setActiveChat(node.num);
navigate({ to: `/messages/direct/${node.num}` });
}

2
src/components/Sidebar.tsx

@ -146,7 +146,7 @@ export const Sidebar = ({ children }: SidebarProps) => {
)}
>
<img
src="Logo.svg"
src="/Logo.svg"
alt={t("app.logo")}
className="size-10 flex-shrink-0 rounded-xl"
/>

12
src/core/stores/messageStore/index.ts

@ -48,8 +48,6 @@ export interface MessageStore {
setNodeNum: (nodeNum: number) => void;
getMyNodeNum: () => number;
setActiveChat: (chat: number) => void;
setChatType: (type: MessageType) => void;
saveMessage: (message: Message) => void;
setMessageState: (params: SetMessageStateParams) => void;
getMessages: (params: GetMessagesParams) => Message[];
@ -79,16 +77,6 @@ export const useMessageStore = create<MessageStore>()(
}));
},
getMyNodeNum: () => get().nodeNum,
setActiveChat: (chat) => {
set(produce((state: MessageStore) => {
state.activeChat = chat;
}));
},
setChatType: (type) => {
set(produce((state: MessageStore) => {
state.chatType = type;
}));
},
saveMessage: (message: Message) => {
set(
produce((state: MessageStore) => {

7
src/core/stores/messageStore/messageStore.test.ts

@ -122,13 +122,6 @@ describe("useMessageStore", () => {
expect(useMessageStore.getState().nodeNum).toBe(myNodeNum);
});
it("should set activeChat and chatType", () => {
useMessageStore.getState().setActiveChat(otherNodeNum1);
useMessageStore.getState().setChatType(MessageType.Direct);
expect(useMessageStore.getState().activeChat).toBe(otherNodeNum1);
expect(useMessageStore.getState().chatType).toBe(MessageType.Direct);
});
describe("saveMessage", () => {
it("should save a direct message with correct Map structure", () => {
useMessageStore.getState().saveMessage(directMessageToOther1);

4
src/i18n/locales/en/messages.json

@ -9,6 +9,10 @@
"selectChatPrompt": {
"text": "Select a channel or node to start messaging."
},
"sendMessage": {
"placeholder": "Type your message here...",
"sendButton": "Send"
},
"actionsMenu": {
"addReactionLabel": "Add Reaction",
"replyLabel": "Reply"

10
src/pages/Messages.tsx

@ -28,6 +28,7 @@ import { Input } from "@components/UI/Input.tsx";
import { randId } from "@core/utils/randId.ts";
import { useTranslation } from "react-i18next";
import { useNavigate, useParams } from "@tanstack/react-router";
type NodeInfoWithUnread = Protobuf.Mesh.NodeInfo & { unreadCount: number };
export const MessagesPage = () => {
@ -45,7 +46,7 @@ export const MessagesPage = () => {
getMessages,
setMessageState,
} = useMessageStore();
const params = useParams();
const params = useParams({ from: "", shouldThrow: false });
const navigate = useNavigate();
const { toast } = useToast();
const { isCollapsed } = useSidebar();
@ -75,7 +76,6 @@ export const MessagesPage = () => {
navigate({ to: `/messages/${typeParam}/${chatId}` });
}, [navigate]);
// Redirect to default chat if no params are provided
useEffect(() => {
if (!params.type && !params.chatId && filteredChannels.length > 0) {
const defaultChannel = filteredChannels[0];
@ -140,10 +140,8 @@ export const MessagesPage = () => {
} else {
console.warn("sendText completed but messageId is undefined");
}
// deno-lint-ignore no-explicit-any
} catch (e: any) {
console.error("Failed to send message:", e);
// Note: messageId might be undefined here if the error occurred before it was assigned
const failedId = messageId ?? randId();
if (chatType === MessageType.Broadcast) {
setMessageState({
@ -189,7 +187,7 @@ export const MessagesPage = () => {
default:
return (
<div className="flex-1 flex items-center justify-center text-slate-500 p-4">
{t("messagesPage.selectChatPrompt")}
{t("selectChatPrompt.text", { ns: "messages" })}
</div>
);
}
@ -339,7 +337,7 @@ export const MessagesPage = () => {
)
: (
<div className="p-4 text-center text-slate-400 italic">
{t("messagesPage.sendMessagePrompt")}
{t("sendMessage.sendButton", { ns: "messages" })}
</div>
)}
</div>

14
src/routes.tsx

@ -1,4 +1,4 @@
import { createRoute } from "@tanstack/react-router";
import { createRoute, redirect } from "@tanstack/react-router";
import { Dashboard } from "@pages/Dashboard/index.tsx";
import MessagesPage from "@pages/Messages.tsx";
import MapPage from "@pages/Map/index.tsx";
@ -7,6 +7,7 @@ import ChannelsPage from "@pages/Channels.tsx";
import NodesPage from "@pages/Nodes.tsx";
import { createRootRoute } from "@tanstack/react-router";
import { App } from "./App.tsx";
import { DialogManager } from "@components/Dialog/DialogManager.tsx";
const rootRoute = createRootRoute({
component: App,
@ -16,6 +17,10 @@ const indexRoute = createRoute({
getParentRoute: () => rootRoute,
path: "/",
component: Dashboard,
loader: () => {
// Redirect to the broadcast messages page on initial load
return redirect({ to: `/messages/broadcast/0`, replace: true });
},
});
const messagesRoute = createRoute({
@ -54,6 +59,12 @@ const nodesRoute = createRoute({
component: NodesPage,
});
const dialogWithParamsRoute = createRoute({
getParentRoute: () => rootRoute,
path: "/dialog/$dialogId",
component: DialogManager,
});
export const routeTree = rootRoute.addChildren([
indexRoute,
messagesRoute,
@ -62,6 +73,7 @@ export const routeTree = rootRoute.addChildren([
configRoute,
channelsRoute,
nodesRoute,
dialogWithParamsRoute,
]);
export { rootRoute };

Loading…
Cancel
Save