Merge pull request #761 from Hexastack/760-issue---inbox-subscriber-sync-with-url-query

fix(frontend): synchronize selected inbox subscriber with url query
This commit is contained in:
Med Marrouchi 2025-02-18 18:31:01 +01:00 committed by GitHub
commit 97e29d8489
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 62 additions and 2 deletions

View File

@ -13,11 +13,13 @@ import {
} from "@chatscope/chat-ui-kit-react"; } from "@chatscope/chat-ui-kit-react";
import InboxIcon from "@mui/icons-material/MoveToInbox"; import InboxIcon from "@mui/icons-material/MoveToInbox";
import { Chip, debounce, Grid } from "@mui/material"; import { Chip, debounce, Grid } from "@mui/material";
import { useRouter } from "next/router";
import { useEffect } from "react";
import { useConfig } from "@/hooks/useConfig"; import { useConfig } from "@/hooks/useConfig";
import { useTranslate } from "@/hooks/useTranslate"; import { useTranslate } from "@/hooks/useTranslate";
import { Title } from "@/layout/content/Title"; import { Title } from "@/layout/content/Title";
import { EntityType } from "@/services/types"; import { EntityType, RouterType } from "@/services/types";
import { getAvatarSrc } from "../helpers/mapMessages"; import { getAvatarSrc } from "../helpers/mapMessages";
import { useChat } from "../hooks/ChatContext"; import { useChat } from "../hooks/ChatContext";
@ -29,6 +31,8 @@ export const SubscribersList = (props: {
searchPayload: any; searchPayload: any;
assignedTo: AssignedTo; assignedTo: AssignedTo;
}) => { }) => {
const { query, push } = useRouter();
const subscriber = query.subscriber?.toString() || null;
const { apiUrl } = useConfig(); const { apiUrl } = useConfig();
const { t, i18n } = useTranslate(); const { t, i18n } = useTranslate();
const chat = useChat(); const chat = useChat();
@ -38,6 +42,12 @@ export const SubscribersList = (props: {
!isFetching && hasNextPage && fetchNextPage(); !isFetching && hasNextPage && fetchNextPage();
}, 400); }, 400);
useEffect(() => {
if (chat) {
chat.setSubscriberId(subscriber);
}
}, [chat, subscriber]);
return ( return (
<> <>
<Grid padding={2}> <Grid padding={2}>
@ -52,7 +62,10 @@ export const SubscribersList = (props: {
> >
{subscribers.map((subscriber) => ( {subscribers.map((subscriber) => (
<Conversation <Conversation
onClick={() => chat.setSubscriberId(subscriber.id)} onClick={() => {
chat.setSubscriberId(subscriber.id);
push(`/${RouterType.INBOX}/subscribers/${subscriber.id}`);
}}
className="changeColor" className="changeColor"
key={subscriber.id} key={subscriber.id}
active={chat.subscriber?.id === subscriber.id} active={chat.subscriber?.id === subscriber.id}

View File

@ -0,0 +1,23 @@
/*
* Copyright © 2025 Hexastack. All rights reserved.
*
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
*/
import { ReactElement } from "react";
import { Inbox } from "@/components/inbox";
import { Layout } from "@/layout";
const InboxPage = () => {
return <Inbox />;
};
InboxPage.getLayout = function getLayout(page: ReactElement) {
return <Layout hasNoPadding>{page}</Layout>;
};
export default InboxPage;

View File

@ -0,0 +1,12 @@
/*
* Copyright © 2025 Hexastack. All rights reserved.
*
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
*/
import InboxPage from "../..";
export default InboxPage;

View File

@ -0,0 +1,12 @@
/*
* Copyright © 2025 Hexastack. All rights reserved.
*
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
*/
import InboxPage from "../..";
export default InboxPage;