From 4b88d6aa96f395dfc9ba8b23cbca22cfc5518ace Mon Sep 17 00:00:00 2001 From: Marc Itzenthaler Date: Thu, 1 Feb 2024 12:31:13 +0100 Subject: [PATCH] feat: work --- config/webpack.config.js | 25 ++++-- src/components/askerInfo/AskerInfo.tsx | 81 +++---------------- src/components/askerInfo/AskerInfoContent.tsx | 71 ++++++++++++++++ src/components/checkbox/Checkbox.tsx | 2 + .../sessionAssign/RequestSessionAssign.tsx | 2 + .../bookings/components/booking.styles.scss | 51 +++++++++++- src/resources/scripts/config.ts | 2 +- 7 files changed, 155 insertions(+), 79 deletions(-) create mode 100644 src/components/askerInfo/AskerInfoContent.tsx diff --git a/config/webpack.config.js b/config/webpack.config.js index ca019414a..64e969541 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -840,13 +840,28 @@ module.exports = function (webpackEnv) { console.log( `Overwritten ${originalPath} -> ${newPath}${originalExt}` ); - result.request = `${newPath}${originalExt}`; + result.request = result.request.replace( + originalPath, + `${newPath}${originalExt}` + ); result.context = path.dirname( - `${newPath}.${originalExt}` + `${newPath}${originalExt}` ); - - //result.createData.resource = `${newPath}${originalExt}`; - //result.createData.context = path.dirname(`${newPath}.${originalExt}`); + if (result.createData.request) { + result.createData.resource = + result.createData.resource.replace( + paths.appSrc, + paths.appExtensions + ); + result.createData.request = + result.createData.request.replace( + originalPath, + `${newPath}` + ); + result.createData.context = path.dirname( + `${newPath}${originalExt}` + ); + } } else { console.log( `No createData ${originalPath} -> ${newPath}${originalExt}` diff --git a/src/components/askerInfo/AskerInfo.tsx b/src/components/askerInfo/AskerInfo.tsx index 56ac8eaad..706da1bd3 100644 --- a/src/components/askerInfo/AskerInfo.tsx +++ b/src/components/askerInfo/AskerInfo.tsx @@ -1,22 +1,11 @@ import * as React from 'react'; -import { useCallback, useContext, useEffect, useState } from 'react'; +import { useContext, useEffect } from 'react'; import { Link, useParams, useHistory } from 'react-router-dom'; -import { - SESSION_LIST_TAB, - SESSION_LIST_TYPES -} from '../session/sessionHelpers'; -import { - AUTHORITIES, - hasUserAuthority, - SessionTypeContext, - TenantContext, - UserDataContext -} from '../../globalState'; +import { SESSION_LIST_TAB } from '../session/sessionHelpers'; +import { SessionTypeContext } from '../../globalState'; import { Loading } from '../app/Loading'; -import { AskerInfoData } from './AskerInfoData'; import { ReactComponent as BackIcon } from '../../resources/img/icons/arrow-left.svg'; import { ReactComponent as PersonIcon } from '../../resources/img/icons/person.svg'; -import { AskerInfoAssign } from './AskerInfoAssign'; import '../profile/profile.styles'; import './askerInfo.styles'; import { ActiveSessionContext } from '../../globalState/provider/ActiveSessionProvider'; @@ -29,38 +18,29 @@ import { mobileUserProfileView } from '../app/navigationHandler'; import { useTranslation } from 'react-i18next'; -import { AskerInfoTools } from './AskerInfoTools'; -import { Box } from '../box/Box'; import { RocketChatUsersOfRoomProvider } from '../../globalState/provider/RocketChatUsersOfRoomProvider'; +import { AskerInfoContent } from './AskerInfoContent'; export const AskerInfo = () => { const { t: translate } = useTranslation(); - const { tenant } = useContext(TenantContext); const { rcGroupId: groupIdFromParam } = useParams<{ rcGroupId: string }>(); const history = useHistory(); - const { userData } = useContext(UserDataContext); - const { type, path: listPath } = useContext(SessionTypeContext); + const { path: listPath } = useContext(SessionTypeContext); const { session: activeSession, ready } = useSession(groupIdFromParam); - const [isPeerChat, setIsPeerChat] = useState(false); const sessionListTab = useSearchParam('sessionListTab'); useEffect(() => { - if (!ready) { + if (!ready || activeSession) { return; } - if (!activeSession) { - history.push( - listPath + - (sessionListTab ? `?sessionListTab=${sessionListTab}` : '') - ); - return; - } - - setIsPeerChat(activeSession.item.isPeerChat); + history.push( + listPath + + (sessionListTab ? `?sessionListTab=${sessionListTab}` : '') + ); }, [activeSession, history, listPath, ready, sessionListTab]); const { fromL } = useResponsive(); @@ -74,31 +54,6 @@ export const AskerInfo = () => { desktopView(); }, [fromL]); - const isSessionAssignAvailable = useCallback( - () => - !hasUserAuthority(AUTHORITIES.ASKER_DEFAULT, userData) && - !activeSession.isLive && - !activeSession.isGroup && - ((type === SESSION_LIST_TYPES.ENQUIRY && - hasUserAuthority( - AUTHORITIES.ASSIGN_CONSULTANT_TO_ENQUIRY, - userData - ) && - isPeerChat) || - (type !== SESSION_LIST_TYPES.ENQUIRY && - ((isPeerChat && - hasUserAuthority( - AUTHORITIES.ASSIGN_CONSULTANT_TO_PEER_SESSION, - userData - )) || - (!isPeerChat && - hasUserAuthority( - AUTHORITIES.ASSIGN_CONSULTANT_TO_SESSION, - userData - ))))), - [activeSession, isPeerChat, type, userData] - ); - if (!activeSession) { return ; } @@ -150,21 +105,7 @@ export const AskerInfo = () => {

{activeSession.user.username}

- - - - {tenant?.settings?.featureToolsEnabled && ( - - - - )} - {isSessionAssignAvailable() && ( - -
- -
-
- )} +
diff --git a/src/components/askerInfo/AskerInfoContent.tsx b/src/components/askerInfo/AskerInfoContent.tsx new file mode 100644 index 000000000..16bb74add --- /dev/null +++ b/src/components/askerInfo/AskerInfoContent.tsx @@ -0,0 +1,71 @@ +import * as React from 'react'; +import { useCallback, useContext } from 'react'; +import { SESSION_LIST_TYPES } from '../session/sessionHelpers'; +import { + AUTHORITIES, + hasUserAuthority, + SessionTypeContext, + TenantContext, + UserDataContext +} from '../../globalState'; +import { AskerInfoData } from './AskerInfoData'; +import { AskerInfoAssign } from './AskerInfoAssign'; +import '../profile/profile.styles'; +import './askerInfo.styles'; +import { ActiveSessionContext } from '../../globalState/provider/ActiveSessionProvider'; +import { AskerInfoTools } from './AskerInfoTools'; +import { Box } from '../box/Box'; + +export const AskerInfoContent = () => { + const { tenant } = useContext(TenantContext); + const { activeSession } = useContext(ActiveSessionContext); + const { userData } = useContext(UserDataContext); + + const { type } = useContext(SessionTypeContext); + + const isSessionAssignAvailable = useCallback(() => { + const isPeerChat = activeSession.item.isPeerChat; + return ( + !hasUserAuthority(AUTHORITIES.ASKER_DEFAULT, userData) && + !activeSession.isLive && + !activeSession.isGroup && + ((type === SESSION_LIST_TYPES.ENQUIRY && + hasUserAuthority( + AUTHORITIES.ASSIGN_CONSULTANT_TO_ENQUIRY, + userData + ) && + isPeerChat) || + (type !== SESSION_LIST_TYPES.ENQUIRY && + ((isPeerChat && + hasUserAuthority( + AUTHORITIES.ASSIGN_CONSULTANT_TO_PEER_SESSION, + userData + )) || + (!isPeerChat && + hasUserAuthority( + AUTHORITIES.ASSIGN_CONSULTANT_TO_SESSION, + userData + ))))) + ); + }, [activeSession, type, userData]); + + return ( + <> + + + + {tenant?.settings?.featureToolsEnabled && ( + + + + )} + {isSessionAssignAvailable() && ( + +
+ +
+
+ )} + + ); +}; diff --git a/src/components/checkbox/Checkbox.tsx b/src/components/checkbox/Checkbox.tsx index 2f6491b88..9258c3dc5 100644 --- a/src/components/checkbox/Checkbox.tsx +++ b/src/components/checkbox/Checkbox.tsx @@ -8,6 +8,7 @@ export interface CheckboxItem { labelId: string; labelClass?: string; label: string; + value?: string; description?: string; checked: boolean; } @@ -24,6 +25,7 @@ export const Checkbox = (props) => { className="checkbox__input" type="checkbox" name={checkboxItem.name} + value={checkboxItem.value} defaultChecked={checkboxItem.checked} /> {checkboxItem.checked && ( diff --git a/src/components/sessionAssign/RequestSessionAssign.tsx b/src/components/sessionAssign/RequestSessionAssign.tsx index 874f1aa5a..36e73908d 100644 --- a/src/components/sessionAssign/RequestSessionAssign.tsx +++ b/src/components/sessionAssign/RequestSessionAssign.tsx @@ -212,6 +212,8 @@ export const RequestSessionAssign = (props: { value?: string }) => { return (