All files / src/features/Minibuilders/Conversations Conversations.tsx

0% Statements 0/9
0% Branches 0/10
0% Functions 0/2
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73                                                                                                                                                 
import { useConversationsModal } from "./hooks/useConversationsModal";
import ConversationModal from "./Modal/ConversationsModal_V2";
import ConversationsButton from "./ConversationsButton";
import { MerchantType } from "@customTypes/merchant.preview.types";
import { TConversationTopic, useListTopics } from "./hooks/useListTopics";
import { calculateTotalUnreadSum } from "./utils/functions";
import { HiddenComponent } from "@containers/HiddenComponent";
 
type ConversationsProps = MerchantType & {
  isLoading: boolean;
  isLoadingChangelog?: boolean;
  handleOpenManageUnderwriting?: () => void;
  shouldShowChangelog?: boolean;
  isOpenParent?: boolean;
};
 
const Conversations = ({
  merchant,
  isLoading,
  isLoadingChangelog,
  handleOpenManageUnderwriting,
  shouldShowChangelog,
  isOpenParent,
}: ConversationsProps) => {
  const { isOpen, handleOpenConversationsModal } = useConversationsModal();
 
  const {
    data,
    isLoading: isTopicDataLoading,
    isFetching,
  } = useListTopics({ merchantId: merchant?.accID });
 
  const { totalUnread, hasUnreadActivity } = calculateTotalUnreadSum(
    data?.data,
  );
 
  const sortedData = Array.isArray(data?.data)
    ? data?.data?.sort((a: TConversationTopic, b: TConversationTopic) => {
        const aLastActivity = a.lastActivity ?? 0;
        const bLastActivity = b.lastActivity ?? 0;
 
        return bLastActivity - aLastActivity;
      })
    : [];
 
  return (
    <>
      <ConversationsButton
        isLoading={isLoading || isTopicDataLoading}
        isOpen={isOpen}
        handleOpenConversationsModal={handleOpenConversationsModal}
        totalUnread={totalUnread}
        isReplyFromMerchant={hasUnreadActivity}
      />
      <HiddenComponent hidden={!isOpen || !isOpenParent}>
        <ConversationModal
          merchant={merchant}
          hasUnreadActivity={hasUnreadActivity}
          isLoading={isLoading}
          totalUnread={totalUnread}
          handleOpenManageUnderwriting={handleOpenManageUnderwriting}
          isFetching={isFetching}
          data={sortedData as TConversationTopic[]}
          isLoadingChangelog={isLoadingChangelog}
          shouldShowChangelog={shouldShowChangelog}
        />
      </HiddenComponent>
    </>
  );
};
 
export default Conversations;