@@ -61,6 +61,8 @@ import {
6161import * as routes from '@client/navigation/routes'
6262import { stringify } from 'query-string'
6363import { useHasAccessToNavigationItem } from './useHasAccessToNavigationItem'
64+ import { SCOPES } from '@opencrvs/commons/client'
65+ import { usePermissions } from '@client/hooks/useAuthorization'
6466
6567const SCREEN_LOCK = 'screenLock'
6668
@@ -143,16 +145,6 @@ const getSettingsAndLogout = (props: IFullProps) => {
143145 )
144146}
145147
146- export const showRegDashboard =
147- ! IS_PROD_ENVIRONMENT ||
148- ( IS_PROD_ENVIRONMENT && window . config . REGISTRATIONS_DASHBOARD_URL )
149- export const showLeaderboard =
150- ! IS_PROD_ENVIRONMENT ||
151- ( IS_PROD_ENVIRONMENT && window . config . LEADERBOARDS_DASHBOARD_URL )
152- export const showStatistics =
153- ! IS_PROD_ENVIRONMENT ||
154- ( IS_PROD_ENVIRONMENT && window . config . STATISTICS_DASHBOARD_URL )
155-
156148const NavigationView = ( props : IFullProps ) => {
157149 const {
158150 intl,
@@ -191,6 +183,8 @@ const NavigationView = (props: IFullProps) => {
191183 const [ isCommunationExpanded , setIsCommunationExpanded ] =
192184 React . useState ( false )
193185
186+ const { hasScope } = usePermissions ( )
187+
194188 const { data, initialSyncDone } = workqueue
195189 const filteredData = filterProcessingDeclarationsFromQuery (
196190 data ,
@@ -596,55 +590,33 @@ const NavigationView = (props: IFullProps) => {
596590 ) }
597591 </ NavigationGroup >
598592 ) }
599- { hasAccess ( TAB_GROUPS . performance ) && (
593+ { hasScope ( SCOPES . PERFORMANCE_READ_DASHBOARDS ) && (
600594 < NavigationGroup >
601595 {
602596 < >
603- { showRegDashboard && hasAccess ( WORKQUEUE_TABS . dashboard ) && (
604- < NavigationItem
605- icon = { ( ) => < Icon name = "ChartLine" size = "small" /> }
606- label = { intl . formatMessage ( navigationMessages [ 'dashboard' ] ) }
607- onClick = { ( ) =>
608- router . navigate ( routes . PERFORMANCE_DASHBOARD , {
609- state : { isNavigatedInsideApp : true }
610- } )
611- }
612- id = { `navigation_${ WORKQUEUE_TABS . dashboard } ` }
613- isSelected = {
614- enableMenuSelection && activeMenuItem === 'dashboard'
615- }
616- />
617- ) }
618- { showStatistics && hasAccess ( WORKQUEUE_TABS . statistics ) && (
619- < NavigationItem
620- icon = { ( ) => < Icon name = "Activity" size = "small" /> }
621- label = { intl . formatMessage ( navigationMessages [ 'statistics' ] ) }
622- onClick = { ( ) =>
623- router . navigate ( routes . PERFORMANCE_STATISTICS , {
624- state : { isNavigatedInsideApp : true }
625- } )
626- }
627- id = { `navigation_${ WORKQUEUE_TABS . statistics } ` }
628- isSelected = {
629- enableMenuSelection && activeMenuItem === 'statistics'
630- }
631- />
632- ) }
633- { showLeaderboard && hasAccess ( WORKQUEUE_TABS . leaderboards ) && (
634- < NavigationItem
635- icon = { ( ) => < Icon name = "Medal" size = "small" /> }
636- label = { intl . formatMessage ( navigationMessages [ 'leaderboards' ] ) }
637- onClick = { ( ) =>
638- router . navigate ( routes . PERFORMANCE_LEADER_BOARDS , {
639- state : { isNavigatedInsideApp : true }
640- } )
641- }
642- id = { `navigation_${ WORKQUEUE_TABS . leaderboards } ` }
643- isSelected = {
644- enableMenuSelection && activeMenuItem === 'leaderboards'
645- }
646- />
647- ) }
597+ { ( window . config . DASHBOARDS || [ ] ) . map ( ( config ) => {
598+ return (
599+ < NavigationItem
600+ key = { config . id }
601+ icon = { ( ) => < Icon name = "ChartLine" size = "small" /> }
602+ label = { intl . formatMessage ( config . title ) }
603+ onClick = { ( ) =>
604+ router . navigate (
605+ formatUrl ( routes . DASHBOARD , {
606+ id : config . id
607+ } ) ,
608+ {
609+ state : { isNavigatedInsideApp : true }
610+ }
611+ )
612+ }
613+ id = { `navigation_dashboard_${ config . id } ` }
614+ isSelected = {
615+ enableMenuSelection && activeMenuItem === 'dashboard'
616+ }
617+ />
618+ )
619+ } ) }
648620 </ >
649621 }
650622 </ NavigationGroup >
0 commit comments