This is an automated email from the ASF dual-hosted git repository.

mugdha pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 9a647f854f4565e816ea00e61d9399b437f60df7
Author: Mugdha Varadkar <mug...@apache.org>
AuthorDate: Tue Jun 17 01:08:03 2025 +0530

    RANGER-4351 : [addendum] Resource policies side bar takes more time even 
user is available on policymanager resource page
---
 .../src/views/AuditEvent/AuditLayout.jsx           |  7 ++---
 .../src/views/Encryption/KeyManager.jsx            | 35 +++++++---------------
 .../views/PolicyListing/PolicyListingTabView.jsx   | 24 +++++----------
 .../src/views/Reports/UserAccessLayout.jsx         |  2 +-
 .../src/views/SecurityZone/SecurityZoneForm.jsx    | 19 +++++++-----
 .../src/views/SecurityZone/ZoneListing.jsx         | 10 ++-----
 .../views/ServiceManager/ServiceDefinitions.jsx    |  8 ++---
 .../views/ServiceManager/ServiceViewDetails.jsx    |  1 +
 .../react-webapp/src/views/SideBar/SideBar.jsx     | 10 +++----
 .../react-webapp/src/views/SideBar/TopNavBar.jsx   |  4 ++-
 10 files changed, 48 insertions(+), 72 deletions(-)

diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx
index 5aa29b728..7d6d8b501 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx
@@ -65,10 +65,9 @@ class AuditLayout extends Component {
 
     this.setState({
       services: servicesResp,
-      servicesAvailable:
-        servicesResp.length === 0
-          ? "SERVICES_NOT_AVAILABLE"
-          : "SERVICES_AVAILABLE"
+      servicesAvailable: servicesResp.length
+        ? "SERVICES_AVAILABLE"
+        : "SERVICES_NOT_AVAILABLE"
     });
   };
 
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx
index a4332e9b4..94b0e0dc7 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx
@@ -40,8 +40,6 @@ import CustomBreadcrumb from "Views/CustomBreadcrumb";
 function init(props) {
   return {
     loader: true,
-    servicesData: [],
-    services: [],
     selcServicesData: [],
     keydata: [],
     onchangeval:
@@ -70,17 +68,9 @@ function reducer(state, action) {
         ...state,
         loader: action.loader
       };
-    case "SET_DATA":
-      return {
-        ...state,
-
-        services: action.services,
-        servicesData: action.servicesdata
-      };
     case "SET_SEL_SERVICE":
       return {
         ...state,
-
         selcServicesData: action.selcservicesData,
         keydata: action.keydatalist,
         pagecount: action.pagecount
@@ -118,7 +108,6 @@ function reducer(state, action) {
         ...state,
         updatetable: action.updatetable
       };
-
     case "SET_CURRENT_PAGE_INDEX":
       return {
         ...state,
@@ -134,7 +123,6 @@ function reducer(state, action) {
         ...state,
         resetPage: action.resetPage
       };
-
     default:
       throw new Error();
   }
@@ -212,19 +200,19 @@ const KeyManager = () => {
   }, [searchParams]);
 
   const fetchServices = async (inputValue) => {
-    let servicesdata = null;
-    let allParams = {};
-    if (inputValue) {
-      allParams["name"] = inputValue || "";
-    }
-    allParams["serviceType"] = "kms";
+    const allParams = {
+      serviceType: "kms",
+      ...(inputValue && { serviceNamePrefix: inputValue })
+    };
+    let servicesData = [];
     let serviceOptions = [];
+
     try {
       const servicesResp = await fetchApi({
         url: "public/v2/api/service-headers",
         params: allParams
       });
-      servicesdata = servicesResp.data || [];
+      servicesData = servicesResp?.data || [];
     } catch (error) {
       let errorMsg = `Error occurred while fetching Services!`;
       if (error?.response?.data?.msgDesc) {
@@ -233,15 +221,12 @@ const KeyManager = () => {
       toast.error(errorMsg);
       console.error(`Error occurred while fetching Services! ${error}`);
     }
-    serviceOptions = servicesdata.map((obj) => ({
+
+    serviceOptions = servicesData.map((obj) => ({
       value: obj.name,
       label: obj.name
     }));
-    dispatch({
-      type: "SET_DATA",
-      servicesdata: servicesdata,
-      services: serviceOptions
-    });
+
     return serviceOptions;
   };
 
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx
index e12818f83..38468a39e 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx
@@ -32,8 +32,7 @@ import {
 import { Loader } from "Components/CommonComponents";
 import TopNavBar from "../SideBar/TopNavBar";
 import { cloneDeep, isEmpty, map, sortBy } from "lodash";
-import { RangerPolicyType } from "../../utils/XAEnums";
-import { getServiceDef } from "../../utils/appState";
+import { getServiceDef } from "Utils/appState";
 
 function reducer(state, action) {
   switch (action.type) {
@@ -102,7 +101,7 @@ export const PolicyListingTabView = () => {
         url: `plugins/services/${params.serviceId}`
       });
       getAllServicesData = await fetchApi({
-        url: `plugins/services?serviceType=${getServiceData?.data?.type}`
+        url: 
`public/v2/api/service-headers?serviceType=${getServiceData?.data?.type}`
       });
       getServiceDefData = serviceDefs?.allServiceDefs?.find((serviceDef) => {
         return serviceDef.name == getServiceData?.data?.type;
@@ -131,7 +130,7 @@ export const PolicyListingTabView = () => {
 
     dispatch({
       type: "SERVICES_DATA",
-      allServicesData: getAllServicesData?.data?.services,
+      allServicesData: getAllServicesData?.data || [],
       serviceData: getServiceData?.data,
       serviceDefData: getServiceDefData
     });
@@ -153,8 +152,8 @@ export const PolicyListingTabView = () => {
     let filterService = [];
 
     filterService = sortBy(
-      map(services, function ({ displayName }) {
-        return { label: displayName, value: displayName };
+      map(services, function ({ id, displayName }) {
+        return { label: displayName, value: id };
       }),
       "label"
     );
@@ -163,15 +162,8 @@ export const PolicyListingTabView = () => {
   };
 
   const handleServiceChange = async (e) => {
-    if (e !== "") {
-      let selectedServiceData = allServicesData?.find((service) => {
-        if (service.displayName == e?.label) {
-          return service;
-        }
-      });
-      navigate(
-        `/service/${selectedServiceData?.id}/policies/${params.policyType}`
-      );
+    if (e && e !== undefined) {
+      navigate(`/service/${e.value}/policies/${params.policyType}`);
       localStorage.removeItem("zoneDetails");
     }
   };
@@ -229,7 +221,7 @@ export const PolicyListingTabView = () => {
         serviceData={serviceData}
         handleServiceChange={handleServiceChange}
         getServices={getServices}
-        allServicesData={sortBy(allServicesData, "name")}
+        allServicesData={allServicesData}
         policyLoader={loader}
         currentServiceZone={getServiceZone()}
         handleZoneChange={handleZoneChange}
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
index 372c91c56..d367e5350 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
@@ -96,7 +96,7 @@ function UserAccessLayout() {
         url: "public/v2/api/service-headers"
       });
 
-      resourceServices = filter(servicesResp.data, (service) =>
+      resourceServices = filter(servicesResp?.data, (service) =>
         isKMSRole ? service.type == "kms" : service.type != "kms"
       );
     } catch (error) {
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
index 9b52fa09a..447431e33 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
@@ -170,11 +170,12 @@ const SecurityZoneForm = () => {
   };
 
   const fetchResourceServices = async () => {
-    const serviceDefnsResp = await fetchApi({
+    const servicesResp = await fetchApi({
       url: "public/v2/api/service-headers"
     });
 
-    const filterServices = serviceDefnsResp.data.filter(
+    const filterServices = filter(
+      servicesResp?.data,
       (obj) => obj.type !== "tag" && obj.type !== "kms"
     );
 
@@ -590,16 +591,18 @@ const SecurityZoneForm = () => {
   };
 
   const fetchTagServices = async (inputValue) => {
-    let params = {};
-    if (inputValue) {
-      params["serviceNamePartial"] = inputValue || "";
-      params["serviceType"] = "tag" || "";
-    }
+    const params = {
+      ...(inputValue && { serviceNamePrefix: inputValue }),
+      serviceType: "tag"
+    };
+
     const serviceResp = await fetchApi({
       url: "public/v2/api/service-headers",
       params: params
     });
-    const filterServices = filter(serviceResp.data || [], ["type", "tag"]);
+
+    const filterServices = filter(serviceResp?.data || [], ["type", "tag"]);
+
     return filterServices.map(({ name }) => ({
       label: name,
       value: name
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx
index 8d1592793..984fe3888 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx
@@ -74,13 +74,7 @@ class ZoneListing extends Component {
 
     try {
       servicesResp = await fetchApi({
-        url: "public/v2/api/service-headers",
-        params: {
-          page: 0,
-          pageSize: 200,
-          total_pages: 0,
-          startIndex: 0
-        }
+        url: "public/v2/api/service-headers"
       });
     } catch (error) {
       console.error(`Error occurred while fetching Services! ${error}`);
@@ -103,7 +97,7 @@ class ZoneListing extends Component {
       selectedZone: selectedZone,
       zones: zoneList,
       filterZone: zoneList,
-      services: servicesResp.data
+      services: servicesResp?.data || []
     });
   };
 
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx
index 49cf32edb..c3d0a2b67 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx
@@ -139,13 +139,13 @@ class ServiceDefinitions extends Component {
         url: "public/v2/api/service-headers"
       });
       if (this.state.isTagView) {
-        tagServices = filter(servicesResp.data, ["type", "tag"]);
+        tagServices = filter(servicesResp?.data, ["type", "tag"]);
       } else {
         if (this.state.isKMSRole) {
-          resourceServices = filter(servicesResp.data, ["type", "kms"]);
+          resourceServices = filter(servicesResp?.data, ["type", "kms"]);
         } else {
           resourceServices = filter(
-            servicesResp.data,
+            servicesResp?.data,
             (service) => service.type !== "tag" && service.type !== "kms"
           );
         }
@@ -157,7 +157,7 @@ class ServiceDefinitions extends Component {
     }
 
     this.setState({
-      allServices: servicesResp.data,
+      allServices: servicesResp?.data || [],
       services: this.state.isTagView ? tagServices : resourceServices,
       filterServices: this.state.isTagView ? tagServices : resourceServices,
       loader: false
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
index 7fd84c8b9..5f5728bad 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx
@@ -42,6 +42,7 @@ export const ServiceViewDetails = (props) => {
     let getServiceData = {};
 
     try {
+      setLoader(true);
       getServiceData = await fetchApi({
         url: `plugins/services/${service.id}`
       });
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx 
b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx
index 192395515..d57082026 100644
--- a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx
@@ -30,7 +30,7 @@ import settingsIcon from "Images/sidebar/settings.svg";
 import accountIcon from "Images/sidebar/account.svg";
 import gdsIcon from "Images/sidebar/governed-data.svg";
 import { fetchApi } from "Utils/fetchAPI";
-import { getUserProfile, getServiceDef } from "Utils/appState";
+import { getServiceDef, getUserProfile } from "Utils/appState";
 import {
   hasAccessToTab,
   isAuditor,
@@ -156,19 +156,19 @@ export const SideBar = () => {
       servicesResp = await fetchApi({
         url: "public/v2/api/service-headers"
       });
-      tagServices = filter(servicesResp.data, ["type", "tag"]);
+      tagServices = filter(servicesResp?.data, ["type", "tag"]);
       if (isKMSRole) {
-        resourceServices = filter(servicesResp.data, ["type", "kms"]);
+        resourceServices = filter(servicesResp?.data, ["type", "kms"]);
       } else {
         resourceServices = filter(
-          servicesResp.data,
+          servicesResp?.data,
           (service) => service.type !== "tag" && service.type !== "kms"
         );
       }
 
       dispatch({
         type: "SERVICES_DATA",
-        allServiceData: servicesResp.data,
+        allServiceData: servicesResp?.data || [],
         serviceData: resourceServices,
         tagServiceData: tagServices
       });
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx 
b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx
index 2e54b01ef..8e7aa43e7 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx
@@ -153,7 +153,7 @@ export const TopNavBar = (props) => {
     if (!isEmpty(service)) {
       return {
         label: `Service : ${service?.displayName}`,
-        value: service.displayName
+        value: service.id
       };
     } else {
       return "";
@@ -180,11 +180,13 @@ export const TopNavBar = (props) => {
       );
     }
   };
+
   const formatOptionLabel = ({ label }) => (
     <div title={label} className="text-truncate">
       {label}
     </div>
   );
+
   return (
     <nav className="navbar navbar-expand-lg navbar-light bg-light 
content-top-nav">
       <div className="top-nav-title-wrapper">

Reply via email to