Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

RequestExchangeMessage.js 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import React from "react";
  2. import PropTypes from "prop-types";
  3. import {
  4. RequestExchangeMessageButton,
  5. RequestExchangeMessageButtonsContainer,
  6. RequestExchangeMessageContainer,
  7. RequestExchangeMessageText,
  8. } from "./RequestExchangeMessage.styled";
  9. import { useTranslation } from "react-i18next";
  10. import { acceptExchangeSocket } from "../../../../socket/socket";
  11. import { useDispatch, useSelector } from "react-redux";
  12. import {
  13. selectExchange,
  14. selectRequester,
  15. } from "../../../../store/selectors/exchangeSelector";
  16. import {
  17. acceptExchange,
  18. setRequester,
  19. } from "../../../../store/actions/exchange/exchangeActions";
  20. import { addNewMessage } from "../../../../store/actions/chat/chatActions";
  21. import { convertLocalDateToUTCDate } from "../../../../util/helpers/dateHelpers";
  22. import requesterStatus from "../../../../constants/requesterStatus";
  23. const RequestExchangeMessage = (props) => {
  24. const { t } = useTranslation();
  25. const dispatch = useDispatch();
  26. const exchange = useSelector(selectExchange);
  27. const requester = useSelector(selectRequester);
  28. const handleAcceptExchangeSuccess = () => {
  29. console.log("accept salje i prima 3 POZVANA RESPONSE FUNKCIJA");
  30. acceptExchangeSocket(
  31. props.chatId,
  32. props.userId,
  33. props.interlocutorUserId,
  34. () => {
  35. console.log("accept salje i prima 4 SOCKET FUNKCIJA");
  36. dispatch(
  37. addNewMessage({
  38. _id: props.chatId,
  39. message: {
  40. user: {
  41. _id: props.userId,
  42. },
  43. text: "",
  44. isAcceptRequest: true,
  45. _created: convertLocalDateToUTCDate(new Date()),
  46. },
  47. })
  48. );
  49. if (requester === requesterStatus.NOONE) {
  50. dispatch(setRequester(requesterStatus.ME));
  51. }
  52. }
  53. );
  54. };
  55. const handleAcceptExchange = () => {
  56. console.log("accept salje i prima 1 POZVANA FUNKCIJA");
  57. dispatch(
  58. acceptExchange({
  59. exchangeId: exchange._id,
  60. handleApiResponseSuccess: handleAcceptExchangeSuccess,
  61. })
  62. );
  63. };
  64. return (
  65. <RequestExchangeMessageContainer>
  66. <RequestExchangeMessageText>
  67. {t("messages.requestReceived")}
  68. </RequestExchangeMessageText>
  69. <RequestExchangeMessageButtonsContainer>
  70. {!props.haveIAccepted && (
  71. <RequestExchangeMessageButton variant="outlined" white>
  72. {t("messages.declineRequest")}
  73. </RequestExchangeMessageButton>
  74. )}
  75. <RequestExchangeMessageButton
  76. variant="contained"
  77. onClick={handleAcceptExchange}
  78. disabled={props.haveIAccepted}
  79. >
  80. {props.haveIAccepted
  81. ? t("messages.acceptedRequest")
  82. : t("messages.acceptRequest")}
  83. </RequestExchangeMessageButton>
  84. </RequestExchangeMessageButtonsContainer>
  85. </RequestExchangeMessageContainer>
  86. );
  87. };
  88. RequestExchangeMessage.propTypes = {
  89. children: PropTypes.node,
  90. chatId: PropTypes.string,
  91. userId: PropTypes.string,
  92. interlocutorUserId: PropTypes.string,
  93. haveIAccepted: PropTypes.any,
  94. };
  95. export default RequestExchangeMessage;