From e305ca6a3319334cc463e99912a359b76afeefde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deborah=20K=C3=B6pfer?= Date: Thu, 8 Aug 2024 11:30:01 +0200 Subject: [PATCH] feat(livechat): remove anonymous session handling --- .../FinishedAnonymousConversationHandler.tsx | 61 ---------------- src/components/overlay/Overlay.tsx | 1 - src/components/sessionMenu/SessionMenu.tsx | 72 +------------------ .../sessionMenu/sessionMenuHelpers.ts | 47 ------------ src/extensions/resources/scripts/config.ts | 1 - src/globalState/index.ts | 3 - .../AppConfig/AppConfigUrlsInterface.ts | 1 - .../AnonymousConversationFinishedProvider.tsx | 41 ----------- .../AnonymousConversationStartedProvider.tsx | 20 ------ .../AnonymousEnquiryAcceptedProvider.tsx | 17 ----- .../provider/RocketChatUnreadProvider.tsx | 7 +- src/globalState/state.tsx | 6 -- src/resources/scripts/config.ts | 2 - 13 files changed, 2 insertions(+), 277 deletions(-) delete mode 100644 src/components/app/FinishedAnonymousConversationHandler.tsx delete mode 100644 src/globalState/provider/AnonymousConversationFinishedProvider.tsx delete mode 100644 src/globalState/provider/AnonymousConversationStartedProvider.tsx delete mode 100644 src/globalState/provider/AnonymousEnquiryAcceptedProvider.tsx diff --git a/src/components/app/FinishedAnonymousConversationHandler.tsx b/src/components/app/FinishedAnonymousConversationHandler.tsx deleted file mode 100644 index 51180d90e..000000000 --- a/src/components/app/FinishedAnonymousConversationHandler.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { OVERLAY_FUNCTIONS, Overlay } from '../overlay/Overlay'; -import * as React from 'react'; -import { useContext, useEffect, useState } from 'react'; -import { - AnonymousConversationFinishedContext, - RocketChatContext -} from '../../globalState'; -import { removeAllCookies } from '../sessionCookie/accessSessionCookie'; -import { useAppConfig } from '../../hooks/useAppConfig'; -import { - finishAnonymousChatSuccessOverlayItem, - selfFinishedAnonymousChatSuccessOverlayItem -} from '../sessionMenu/sessionMenuHelpers'; - -export const FinishedAnonymousConversationHandler = () => { - const settings = useAppConfig(); - - const [overlayActive, setOverlayActive] = useState(false); - const { anonymousConversationFinished, setAnonymousConversationFinished } = - useContext(AnonymousConversationFinishedContext); - const { close: closeWebsocket } = useContext(RocketChatContext); - - /* - ToDo: Refactor the anonymous logic because dropping cookies is not a clear logout. - Other requests should be blocked too because refresh requests will end in 401 - */ - useEffect(() => { - if (anonymousConversationFinished) { - closeWebsocket(false); - setOverlayActive(true); - setTimeout(() => { - removeAllCookies(); - }, 1500); - } else { - setOverlayActive(false); - } - }, [ - anonymousConversationFinished, - closeWebsocket, - setAnonymousConversationFinished - ]); - - const handleOverlayAction = (buttonFunction: string) => { - if (buttonFunction === OVERLAY_FUNCTIONS.REDIRECT_TO_URL) { - window.location.href = settings.urls.finishedAnonymousChatRedirect; - } - }; - - if (!overlayActive) return null; - - return ( - - ); -}; diff --git a/src/components/overlay/Overlay.tsx b/src/components/overlay/Overlay.tsx index e31d26aa5..80e9e9290 100644 --- a/src/components/overlay/Overlay.tsx +++ b/src/components/overlay/Overlay.tsx @@ -31,7 +31,6 @@ export const OVERLAY_FUNCTIONS = { NEXT_STEP: 'NEXT_STEP', PREV_STEP: 'PREV_STEP', DELETE_SESSION: 'DELETE_SESSION', - FINISH_ANONYMOUS_CONVERSATION: 'FINISH_ANONYMOUS_CONVERSATION', ARCHIVE: 'ARCHIVE', CONFIRM_EDIT: 'CONFIRM_EDIT', ASSIGN: 'ASSIGN', diff --git a/src/components/sessionMenu/SessionMenu.tsx b/src/components/sessionMenu/SessionMenu.tsx index 2f48a0bca..7a83dae47 100644 --- a/src/components/sessionMenu/SessionMenu.tsx +++ b/src/components/sessionMenu/SessionMenu.tsx @@ -8,7 +8,6 @@ import { } from 'react'; import { generatePath, Link, Redirect, useHistory } from 'react-router-dom'; import { - AnonymousConversationFinishedContext, AUTHORITIES, hasUserAuthority, SessionTypeContext, @@ -16,10 +15,7 @@ import { UserDataContext, ActiveSessionContext } from '../../globalState'; -import { - SessionItemInterface, - STATUS_FINISHED -} from '../../globalState/interfaces'; +import { SessionItemInterface } from '../../globalState/interfaces'; import { SESSION_LIST_TAB, SESSION_LIST_TAB_ARCHIVE, @@ -28,7 +24,6 @@ import { import { Overlay, OVERLAY_FUNCTIONS } from '../overlay/Overlay'; import { archiveSessionSuccessOverlayItem, - finishAnonymousChatSecurityOverlayItem, groupChatErrorOverlayItem, leaveGroupChatSecurityOverlayItem, leaveGroupChatSuccessOverlayItem, @@ -37,7 +32,6 @@ import { videoCallErrorOverlayItem } from './sessionMenuHelpers'; import { - apiFinishAnonymousConversation, apiPutArchive, apiPutDearchive, apiPutGroupChat, @@ -90,9 +84,6 @@ export const SessionMenu = (props: SessionMenuProps) => { const { userData } = useContext(UserDataContext); const { type, path: listPath } = useContext(SessionTypeContext); - const { setAnonymousConversationFinished } = useContext( - AnonymousConversationFinishedContext - ); const { activeSession, reloadActiveSession } = useContext(ActiveSessionContext); @@ -162,16 +153,6 @@ export const SessionMenu = (props: SessionMenuProps) => { setOverlayActive(true); }; - const handleFinishAnonymousChat = () => { - if (hasUserAuthority(AUTHORITIES.ANONYMOUS_DEFAULT, userData)) { - finishAnonymousChatSecurityOverlayItem.copy = translate( - 'anonymous.overlay.finishChat.asker.copy' - ); - } - setOverlayItem(finishAnonymousChatSecurityOverlayItem); - setOverlayActive(true); - }; - const handleArchiveSession = () => { // location type if (type === SESSION_LIST_TYPES.TEAMSESSION) { @@ -251,33 +232,6 @@ export const SessionMenu = (props: SessionMenuProps) => { setRedirectToSessionsList(true); } else if (buttonFunction === OVERLAY_FUNCTIONS.LOGOUT) { logout(); - } else if ( - buttonFunction === OVERLAY_FUNCTIONS.FINISH_ANONYMOUS_CONVERSATION - ) { - apiFinishAnonymousConversation(activeSession.item.id) - .then(() => { - setIsRequestInProgress(false); - - if ( - hasUserAuthority( - AUTHORITIES.ANONYMOUS_DEFAULT, - userData - ) - ) { - setAnonymousConversationFinished('DONE'); - } else { - setOverlayActive(false); - setOverlayItem(null); - } - }) - .catch((error) => { - console.error(error); - setIsRequestInProgress(false); - setOverlayActive(false); - setOverlayItem(null); - }); - } else if (buttonFunction === OVERLAY_FUNCTIONS.REDIRECT_TO_URL) { - window.location.href = settings.urls.finishedAnonymousChatRedirect; } else if (buttonFunction === OVERLAY_FUNCTIONS.ARCHIVE) { apiPutArchive(activeSession.item.id) .then(() => { @@ -397,20 +351,6 @@ export const SessionMenu = (props: SessionMenuProps) => { return (
- {activeSession.isLive && - activeSession.item.status !== STATUS_FINISHED && - type !== SESSION_LIST_TYPES.ENQUIRY && ( - - - - {translate('anonymous.session.finishChat')} - - - )} - {hasVideoCallFeatures() && (
{ flyoutOpen && 'sessionMenu__content--open' }`} > - {activeSession.isLive && - activeSession.item.status !== STATUS_FINISHED && - type !== SESSION_LIST_TYPES.ENQUIRY && ( -
- {translate('anonymous.session.finishChat')} -
- )} {hasVideoCallFeatures() && ( <>
(null); - -export function AnonymousConversationFinishedProvider(props) { - const { userData } = useContext(UserDataContext); - const userDataRef = useUpdatingRef(userData); - const [anonymousConversationFinished, setAnonymousConversationFinished] = - useState(null); - - // Temporary fix until refactoring because this state is only relevant for RS. - const handleAnonymousConversationFinished = useCallback( - (state) => { - if ( - hasUserAuthority( - AUTHORITIES.ANONYMOUS_DEFAULT, - userDataRef.current - ) - ) { - setAnonymousConversationFinished(state); - } - }, - [userDataRef] - ); - - return ( - - {props.children} - - ); -} diff --git a/src/globalState/provider/AnonymousConversationStartedProvider.tsx b/src/globalState/provider/AnonymousConversationStartedProvider.tsx deleted file mode 100644 index 211b96f42..000000000 --- a/src/globalState/provider/AnonymousConversationStartedProvider.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react'; -import { createContext, useState } from 'react'; - -export const AnonymousConversationStartedContext = createContext(null); - -export function AnonymousConversationStartedProvider(props) { - const [anonymousConversationStarted, setAnonymousConversationStarted] = - useState(null); - - return ( - - {props.children} - - ); -} diff --git a/src/globalState/provider/AnonymousEnquiryAcceptedProvider.tsx b/src/globalState/provider/AnonymousEnquiryAcceptedProvider.tsx deleted file mode 100644 index d820b39e1..000000000 --- a/src/globalState/provider/AnonymousEnquiryAcceptedProvider.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as React from 'react'; -import { createContext, useState } from 'react'; - -export const AnonymousEnquiryAcceptedContext = createContext(null); - -export function AnonymousEnquiryAcceptedProvider(props) { - const [anonymousEnquiryAccepted, setAnonymousEnquiryAccepted] = - useState(null); - - return ( - - {props.children} - - ); -} diff --git a/src/globalState/provider/RocketChatUnreadProvider.tsx b/src/globalState/provider/RocketChatUnreadProvider.tsx index 0e8fcc6f2..166b12508 100644 --- a/src/globalState/provider/RocketChatUnreadProvider.tsx +++ b/src/globalState/provider/RocketChatUnreadProvider.tsx @@ -19,7 +19,6 @@ import { SESSION_TYPE_TEAMSESSION } from '../../components/session/sessionHelpers'; import { UserDataContext } from '../context/UserDataContext'; -import { AnonymousConversationFinishedContext } from './AnonymousConversationFinishedProvider'; import { useBrowserNotification } from '../../hooks/useBrowserNotification'; type UnreadStatusContextProps = { @@ -54,9 +53,6 @@ export function RocketChatUnreadProvider({ }: RocketChatUnreadProviderProps) { const { maybeSendNewEnquiryNotification } = useBrowserNotification(); const { subscriptions } = useContext(RocketChatSubscriptionsContext); - const { anonymousConversationFinished } = useContext( - AnonymousConversationFinishedContext - ); const { userData } = useContext(UserDataContext); const [unreadStatus, setUnreadStatus] = useState(initialData); @@ -143,7 +139,7 @@ export function RocketChatUnreadProvider({ // Initialize all subscriptions with unread status useEffect(() => { - if (!subscriptions?.length || anonymousConversationFinished) { + if (!subscriptions?.length) { return; } @@ -185,7 +181,6 @@ export function RocketChatUnreadProvider({ subscriptions, handleSessions, unreadStatus, - anonymousConversationFinished, maybeSendNewEnquiryNotification ]); diff --git a/src/globalState/state.tsx b/src/globalState/state.tsx index 059f53280..0fd762000 100644 --- a/src/globalState/state.tsx +++ b/src/globalState/state.tsx @@ -1,7 +1,5 @@ import * as React from 'react'; import { - AnonymousConversationFinishedProvider, - AnonymousEnquiryAcceptedProvider, ConsultantListProvider, ConsultingTypesProvider, NotificationsProvider, @@ -9,7 +7,6 @@ import { UserDataProvider, WebsocketConnectionDeactivatedProvider, RocketChatGlobalSettingsProvider, - AnonymousConversationStartedProvider, SessionsDataProvider, ModalProvider, AgencySpecificProvider, @@ -30,8 +27,6 @@ function ContextProvider({ children }) { return ( , - , , , , @@ -39,7 +34,6 @@ function ContextProvider({ children }) { , , , - , , , , diff --git a/src/resources/scripts/config.ts b/src/resources/scripts/config.ts index 563525604..cc55656bd 100644 --- a/src/resources/scripts/config.ts +++ b/src/resources/scripts/config.ts @@ -38,8 +38,6 @@ export const config: AppConfigInterface = { error401: uiUrl + '/error.401.html', error404: uiUrl + '/error.404.html', error500: uiUrl + '/error.500.html', - finishedAnonymousChatRedirect: - 'https://www.caritas.de/hilfeundberatung/hilfeundberatung', home: 'https://www.caritas.de', landingpage: '/login', releases: uiUrl + '/releases',