Skip to content

Commit

Permalink
(fix) - O3-03130 - fix 'Add Provider Queue Room' dialog popping up wh…
Browse files Browse the repository at this point in the history
…en it should not (#1115)
  • Loading branch information
chibongho committed Apr 30, 2024
1 parent f3692db commit 5203629
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 94 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { openmrsFetch, restBaseUrl, showModal, useSession } from '@openmrs/esm-framework';
import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework';
import useSWR from 'swr';
import { type ProvidersQueueRoom, type QueueRoom } from '../types';
import { useIsPermanentProviderQueueRoom, useSelectedServiceUuid } from '../helpers/helpers';
import { useQueueLocations } from '../patient-search/hooks/useQueueLocations';
import { timeDiffInMinutes } from '../helpers/functions';
import { useEffect } from 'react';

export function useQueueRooms(location: string, queueUuid: string) {
const apiUrl = queueUuid
Expand Down Expand Up @@ -78,31 +74,3 @@ export function useProvidersQueueRoom(providerUuid: string) {
mutate,
};
}

// show the modal dialog if one is not configured
export function useShowProviderQueueRoomModal() {
const currentServiceUuid = useSelectedServiceUuid();
const { queueLocations } = useQueueLocations();
const { rooms, isLoading: loading } = useQueueRooms(queueLocations[0]?.id, currentServiceUuid);
const isPermanentProviderQueueRoom = useIsPermanentProviderQueueRoom();
const currentUserSession = useSession();
const providerUuid = currentUserSession?.currentProvider?.uuid;
const differenceInTime = timeDiffInMinutes(
new Date(),
new Date(localStorage.getItem('lastUpdatedQueueRoomTimestamp')),
);

useEffect(() => {
if (
!loading &&
rooms?.length > 0 &&
differenceInTime >= 1 &&
(isPermanentProviderQueueRoom == 'false' || isPermanentProviderQueueRoom === null)
) {
const dispose = showModal('add-provider-to-room-modal', {
closeModal: () => dispose(),
providerUuid,
});
}
}, [rooms, isPermanentProviderQueueRoom]);
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ describe('Clinic metrics', () => {
expect(screen.getByText(/Average wait time today/i)).toBeInTheDocument();
expect(screen.getByText(/minutes/i)).toBeInTheDocument();
expect(screen.getByRole('button', { name: /queue screen/i })).toBeInTheDocument();
expect(screen.getByRole('button', { name: /add new service$/i })).toBeInTheDocument();
expect(screen.getByRole('button', { name: /add new service room/i })).toBeInTheDocument();
expect(screen.getByText(/69/i)).toBeInTheDocument();
});
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
import { PatientBannerActionsMenu } from '@openmrs/esm-framework';
import { PatientBannerActionsMenu, showModal, useSession } from '@openmrs/esm-framework';
import { useTranslation } from 'react-i18next';
import { MessageQueue, ArrowRight } from '@carbon/react/icons';
import { Button, ComboButton, MenuItem } from '@carbon/react';
Expand All @@ -12,12 +12,12 @@ import QueueServiceForm from '../queue-services/queue-service-form.component';

const MetricsHeader = () => {
const { t } = useTranslation();
const isTablet = useLayoutType() === 'tablet';
const isPhone = useLayoutType() == 'phone';
const metricsTitle = t('clinicMetrics', 'Clinic metrics');
const queueScreenText = t('queueScreen', 'Queue screen');
const [showQueueServiceFormOverlay, setShowQueueServiceFormOverlay] = useState(false);
const [showQueueRoomFormOverlay, setShowQueueRoomFormOverlay] = useState(false);
const currentUserSession = useSession();
const providerUuid = currentUserSession?.currentProvider?.uuid;

const navigateToQueueScreen = () => {
navigate({ to: `${spaBasePath}/service-queues/screen` });
Expand All @@ -26,65 +26,35 @@ const MetricsHeader = () => {
setShowQueueServiceFormOverlay(false);
setShowQueueRoomFormOverlay(false);
};
if (isTablet || isPhone) {
return (
<div className={styles.metricsContainer}>
<span className={styles.metricsTitle}>{metricsTitle}</span>
<UserHasAccess privilege="Emr: View Legacy Interface">
<ComboButton label={t('actions', 'Actions')} menuAlignment="bottom-end" className={styles.comboBtn}>
<MenuItem
label={t('addNewService', 'Add new service')}
onClick={() => setShowQueueServiceFormOverlay(true)}
/>

<MenuItem
label={t('addNewServiceRoom', 'Add new service room')}
onClick={() => setShowQueueRoomFormOverlay(true)}
/>
<MenuItem label={queueScreenText} onClick={navigateToQueueScreen} />
</ComboButton>
</UserHasAccess>
{showQueueServiceFormOverlay && (
<Overlay header={t('addNewQueueService', 'Add new queue service')} closePanel={closeOverlays}>
<QueueServiceForm closePanel={closeOverlays} />
</Overlay>
)}
{showQueueRoomFormOverlay && (
<Overlay header={t('addNewQueueServiceRoom', 'Add new queue service room')} closePanel={closeOverlays}>
<QueueRoomForm closePanel={closeOverlays} />
</Overlay>
)}
</div>
);
}
return (
<div className={styles.metricsContainer}>
<span className={styles.metricsTitle}>{metricsTitle}</span>
<div className={styles.actionBtn}>
<ComboButton
label={queueScreenText}
menuAlignment="bottom-end"
className={styles.comboBtn}
tooltipAlignment="top-right"
onClick={navigateToQueueScreen}>
<UserHasAccess privilege="Emr: View Legacy Interface">
<Button
kind="tertiary"
renderIcon={(props) => <ArrowRight size={16} {...props} />}
<MenuItem
label={t('addNewService', 'Add new service')}
onClick={() => setShowQueueServiceFormOverlay(true)}
iconDescription={t('addNewQueueService', 'Add new queue service')}>
{t('addNewService', 'Add new service')}
</Button>
<Button
kind="tertiary"
renderIcon={(props) => <ArrowRight size={16} {...props} />}
/>
<MenuItem
label={t('addNewServiceRoom', 'Add new service room')}
onClick={() => setShowQueueRoomFormOverlay(true)}
iconDescription={t('addNewQueueServiceRoom', 'Add new queue service room')}>
{t('addNewServiceRoom', 'Add new service room')}
</Button>
/>
</UserHasAccess>
<Button
onClick={navigateToQueueScreen}
kind="tertiary"
renderIcon={(props) => <MessageQueue size={16} {...props} />}
iconDescription={queueScreenText}>
{queueScreenText}
</Button>
</div>
<MenuItem
label={t('addProviderQueueRoom', 'Add provider queue room')}
onClick={() => {
const dispose = showModal('add-provider-to-room-modal', {
closeModal: () => dispose(),
providerUuid,
});
}}
/>
</ComboButton>
{showQueueServiceFormOverlay && (
<Overlay header={t('addNewQueueService', 'Add new queue service')} closePanel={closeOverlays}>
<QueueServiceForm closePanel={closeOverlays} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import { DataTableSkeleton } from '@carbon/react';
import { type ConfigObject } from '../config-schema';
import { queueTableVisitAttributeQueueNumberColumn } from './cells/queue-table-visit-attribute-queue-number-cell.component';
import { activeVisitActionsColumn } from '../active-visits/active-visits-row-actions.component';
import { useShowProviderQueueRoomModal } from '../add-provider-queue-room/add-provider-queue-room.resource';
import ClearQueueEntries from '../clear-queue-entries-dialog/clear-queue-entries.component';

/*
Expand Down Expand Up @@ -59,8 +58,6 @@ function DefaultQueueTable() {
const [showOverlay, setShowOverlay] = useState(false);
const [viewState, setViewState] = useState<{ selectedPatientUuid: string }>(null);

useShowProviderQueueRoomModal();

const config = useConfig<ConfigObject>();
const { visitQueueNumberAttributeUuid, concepts } = config;

Expand Down
2 changes: 1 addition & 1 deletion packages/esm-service-queues-app/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"addNewService": "Add new service",
"addNewServiceRoom": "Add new service room",
"addPatientToQueue": "Add patient to queue",
"addProviderQueueRoom": "Add provider queue room?",
"addProviderQueueRoom": "Add provider queue room",
"addQueue": "Add queue",
"addQueueName": "Please add a queue name",
"addQueueRoom": "Add queue room",
Expand Down

0 comments on commit 5203629

Please sign in to comment.