All files / components/ChatMessage ChatDisplay.js

100% Statements 14/14
100% Branches 2/2
100% Functions 6/6
100% Lines 12/12

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          3x 16x 16x 16x   16x           16x                                   16x 1x     16x 3x     16x       70x                                              
import React, { useState } from 'react';
import { Button, Stack } from 'react-bootstrap';
import ChatMessageDisplay from './ChatMessageDisplay';
import { useBackend } from 'main/utils/useBackend';
 
const ChatDisplay = () => {
  const testId = 'ChatDisplay';
  const refreshIntervalMilliseconds = 1000;
  const pageSize = 10;
 
  const [selectedPage, setSelectedPage] = useState(0);
 
  // Stryker disable all
  const {
    data: page,
    
  } = useBackend(
    ["/api/chat/get"],
    {
      method: "GET",
      url: "/api/chat/get",
      params: {
        page: selectedPage,
        size: pageSize,
      }
    },
    {
      content: [], totalPages: 0
    },
    { refetchInterval: refreshIntervalMilliseconds }
  );
 
  // Stryker restore all
 
  const previousPageCallback = () => {
    setSelectedPage((prevPage) => prevPage - 1);
  };
 
  const nextPageCallback = () => {
    setSelectedPage((prevPage) => prevPage + 1);
  };
  
  return (
    <div>
      <Stack>
        {[...page.content].reverse().map((message) => (
          <ChatMessageDisplay key={message.chatMessage.id} chatMessage={message} />
        ))}
      </Stack>
      <p>Page: {selectedPage + 1}</p>
      <Button
        data-testid={`${testId}-previous-button`}
        onClick={previousPageCallback}
        disabled={selectedPage === 0}
      >
        Previous
      </Button>
      <Button
        data-testid={`${testId}-next-button`}
        onClick={nextPageCallback}
        disabled={page.totalPages === 0 || selectedPage === page.totalPages - 1}
      >
        Next
      </Button>
    </div>
  );
};
 
export default ChatDisplay;