Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,14 @@ export function useConsultTransferPopover({
}
}, [selectedCategory]);

const handleReload = useCallback(() => {
logger?.info(`CC-Components: Reloading ${selectedCategory} data`, {
module: 'cc-components#consult-transfer-popover-hooks.ts',
method: 'useConsultTransferPopover#handleReload',
});
loadCategory(selectedCategory, 0, searchQuery, true);
}, [selectedCategory, searchQuery, loadDialNumbers, loadEntryPoints, loadQueues, logger]);

return {
selectedCategory,
searchQuery,
Expand All @@ -333,5 +341,6 @@ export function useConsultTransferPopover({
handleQueuesClick,
handleDialNumberClick,
handleEntryPointClick,
handleReload,
};
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, {useState} from 'react';
import {Text, ListNext, TextInput, Button, ButtonCircle, TooltipNext} from '@momentum-ui/react-collaboration';
import {Icon, Checkbox} from '@momentum-design/components/dist/react';
import {Icon, Checkbox, Spinner} from '@momentum-design/components/dist/react';
import ConsultTransferListComponent from './consult-transfer-list-item';
import {ConsultTransferPopoverComponentProps} from '../../task.types';
import ConsultTransferEmptyState from './consult-transfer-empty-state';
Expand All @@ -16,9 +16,6 @@ import {
SEARCH_PLACEHOLDER,
CLEAR_SEARCH,
SCROLL_TO_LOAD_MORE,
LOADING_MORE_QUEUES,
LOADING_MORE_DIAL_NUMBERS,
LOADING_MORE_ENTRY_POINTS,
NO_DATA_AVAILABLE_CONSULT_TRANSFER,
} from '../../constants';
import {CATEGORY_AGENTS, CATEGORY_DIAL_NUMBER, CATEGORY_ENTRY_POINT, CATEGORY_QUEUES} from '../../task.types';
Expand All @@ -27,6 +24,8 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
heading,
buttonIcon,
buddyAgents,
loadingBuddyAgents,
loadBuddyAgents,
getAddressBookEntries,
getEntryPoints,
getQueues,
Expand Down Expand Up @@ -59,6 +58,7 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
handleQueuesClick,
handleDialNumberClick,
handleEntryPointClick,
handleReload,
} = useConsultTransferPopover({
showDialNumberTab,
showEntryPointTab: isEntryPointTabVisible,
Expand Down Expand Up @@ -122,6 +122,37 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
aria-labelledby="consult-search-label"
className="consult-search-input"
/>
<div className="consult-action-buttons">
<TooltipNext
key={`reload-button-${selectedCategory}`}
triggerComponent={
<ButtonCircle
className="consult-reload-button call-control-button"
aria-label={`Reload ${selectedCategory}`}
size={32}
data-testid="consult-reload-button"
onPress={() => {
if (selectedCategory === CATEGORY_AGENTS && loadBuddyAgents) {
loadBuddyAgents();
} else {
handleReload();
}
}}
disabled={loadingBuddyAgents || loadingDialNumbers || loadingEntryPoints || loadingQueues}
>
<Icon name="refresh-bold" />
</ButtonCircle>
}
color="secondary"
delay={[0, 0]}
placement="bottom-start"
type="description"
variant="small"
className="tooltip"
>
<p>{`Reload ${selectedCategory}`}</p>
</TooltipNext>
</div>
{consultTransferManualAction.visible && (
<TooltipNext
triggerComponent={
Expand Down Expand Up @@ -199,7 +230,11 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP

<div className="consult-list-container">
{selectedCategory === 'Agents' &&
(getAgentsForDisplay(selectedCategory, buddyAgents, searchQuery).length === 0 ? (
(loadingBuddyAgents ? (
<div className="consult-loading-spinner">
<Spinner />
</div>
) : getAgentsForDisplay(selectedCategory, buddyAgents, searchQuery).length === 0 ? (
<ConsultTransferEmptyState message={NO_DATA_AVAILABLE_CONSULT_TRANSFER} />
) : (
renderList(
Expand All @@ -212,7 +247,11 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
))}

{selectedCategory === 'Queues' &&
(noQueues ? (
(loadingQueues && queuesData.length === 0 ? (
<div className="consult-loading-spinner">
<Spinner />
</div>
) : noQueues ? (
<ConsultTransferEmptyState message={NO_DATA_AVAILABLE_CONSULT_TRANSFER} />
) : (
<div>
Expand All @@ -223,9 +262,9 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
{hasMoreQueues && (
<div ref={loadMoreRef} className="consult-load-more">
{loadingQueues ? (
<Text tagName="small" type="body-secondary">
{LOADING_MORE_QUEUES}
</Text>
<div className="consult-loading-spinner">
<Spinner />
</div>
) : (
<Text tagName="small" type="body-secondary">
{SCROLL_TO_LOAD_MORE}
Expand All @@ -238,7 +277,11 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP

{showDialNumberTab &&
selectedCategory === CATEGORY_DIAL_NUMBER &&
(noDialNumbers ? (
(loadingDialNumbers && dialNumbers.length === 0 ? (
<div className="consult-loading-spinner">
<Spinner />
</div>
) : noDialNumbers ? (
<ConsultTransferEmptyState message={NO_DATA_AVAILABLE_CONSULT_TRANSFER} />
) : (
<div>
Expand All @@ -253,9 +296,9 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
{hasMoreDialNumbers && (
<div ref={loadMoreRef} className="consult-load-more">
{loadingDialNumbers ? (
<Text tagName="small" type="body-secondary">
{LOADING_MORE_DIAL_NUMBERS}
</Text>
<div className="consult-loading-spinner">
<Spinner />
</div>
) : (
<Text tagName="small" type="body-secondary">
{SCROLL_TO_LOAD_MORE}
Expand All @@ -268,7 +311,11 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP

{isEntryPointTabVisible &&
selectedCategory === CATEGORY_ENTRY_POINT &&
(noEntryPoints ? (
(loadingEntryPoints && entryPoints.length === 0 ? (
<div className="consult-loading-spinner">
<Spinner />
</div>
) : noEntryPoints ? (
<ConsultTransferEmptyState message={NO_DATA_AVAILABLE_CONSULT_TRANSFER} />
) : (
<div>
Expand All @@ -281,9 +328,9 @@ const ConsultTransferPopoverComponent: React.FC<ConsultTransferPopoverComponentP
{hasMoreEntryPoints && (
<div ref={loadMoreRef} className="consult-load-more">
{loadingEntryPoints ? (
<Text tagName="small" type="body-secondary">
{LOADING_MORE_ENTRY_POINTS}
</Text>
<div className="consult-loading-spinner">
<Spinner />
</div>
) : (
<Text tagName="small" type="body-secondary">
{SCROLL_TO_LOAD_MORE}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,24 @@
min-width: 0;
}

.consult-action-buttons {
display: flex;
align-items: center;
gap: 0.5rem;
flex-shrink: 0;
}

.consult-reload-button,
.consult-quick-action-button {
flex: 0 0 2rem; /* 32px */
}

.consult-reload-button {
mdc-icon {
--mdc-icon-fill-color: var(--mds-color-theme-text-primary-normal);
}
}

.consult-category-buttons {
margin: 0.5rem 0;
display: flex;
Expand Down Expand Up @@ -271,6 +285,15 @@
align-items: center;
}

.consult-loading-spinner {
// Centering the spinner in the loading area
display: flex;
justify-content: center;
align-items: center;
min-height: 10rem;
width: 100%;
}

.consult-list-container {
flex: 1;
overflow-y: auto;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ function CallControlComponent(props: CallControlComponentProps) {
isRecording,
setIsRecording,
buddyAgents,
loadingBuddyAgents,
loadBuddyAgents,
transferCall,
consultCall,
Expand Down Expand Up @@ -221,6 +222,8 @@ function CallControlComponent(props: CallControlComponentProps) {
heading={button.menuType}
buttonIcon={button.icon}
buddyAgents={buddyAgents}
loadingBuddyAgents={loadingBuddyAgents}
loadBuddyAgents={loadBuddyAgents}
getAddressBookEntries={getAddressBookEntries}
getEntryPoints={getEntryPoints}
getQueues={getQueuesFetcher}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ export const QUEUES = 'Queues';
export const SEARCH_PLACEHOLDER = 'Search...';
export const CLEAR_SEARCH = 'Clear search';
export const SCROLL_TO_LOAD_MORE = 'Scroll to load more';
export const LOADING_MORE_QUEUES = 'Loading more queues...';
export const LOADING_MORE_DIAL_NUMBERS = 'Loading more dial numbers...';
export const LOADING_MORE_ENTRY_POINTS = 'Loading more entry points...';
export const NO_DATA_AVAILABLE_CONSULT_TRANSFER = 'No data available for consult transfer.';
export const VIA_SEARCH_SUFFIX = ' via search';
// Pagination
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,11 @@ export interface ControlProps {
*/
buddyAgents: BuddyDetails[];

/**
* Flag to indicate if buddy agents are being loaded
*/
loadingBuddyAgents: boolean;

/**
* Function to load buddy agents
*/
Expand Down Expand Up @@ -468,6 +473,7 @@ export type CallControlComponentProps = Pick<
| 'isRecording'
| 'setIsRecording'
| 'buddyAgents'
| 'loadingBuddyAgents'
| 'loadBuddyAgents'
| 'transferCall'
| 'consultCall'
Expand Down Expand Up @@ -600,6 +606,8 @@ export interface ConsultTransferPopoverComponentProps {
heading: string;
buttonIcon: string;
buddyAgents: BuddyDetails[];
loadingBuddyAgents: boolean;
loadBuddyAgents?: () => Promise<void>;
getAddressBookEntries?: FetchPaginatedList<AddressBookEntry>;
getEntryPoints?: FetchPaginatedList<EntryPointRecord>;
getQueues?: FetchPaginatedList<ContactServiceQueue>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ describe('ConsultTransferPopoverComponent Snapshots', () => {
siteId: 'site1',
},
],
loadingBuddyAgents: false,
getQueues: async () => ({data: [buildQueue('queue1', 'Queue One')], meta: {page: 0, totalPages: 1}}),
onAgentSelect: mockOnAgentSelect,
onQueueSelect: mockOnQueueSelect,
Expand Down
Loading
Loading