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

dengliming pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 12d75e3f fix: preserve metadata path filter on reload (#683)
12d75e3f is described below

commit 12d75e3f51a60e7ec34fbe8b7d85ef4857e4bd24
Author: Carlos Acosta <[email protected]>
AuthorDate: Sun Sep 27 00:31:02 2026 -0500

    fix: preserve metadata path filter on reload (#683)
    
    Co-authored-by: Aeontra <aeontra@localhost>
---
 src/models/metadata.js              |  4 +--
 src/models/metadata.test.js         | 51 +++++++++++++++++++++++++++++++++++++
 src/routes/System/Metadata/index.js | 19 ++++++--------
 3 files changed, 61 insertions(+), 13 deletions(-)

diff --git a/src/models/metadata.js b/src/models/metadata.js
index a47e2f0b..7363a93d 100644
--- a/src/models/metadata.js
+++ b/src/models/metadata.js
@@ -128,8 +128,8 @@ export default {
     },
     *reload(params, { put }) {
       const { fetchValue } = params;
-      const { appName, currentPage, pageSize, namespaceId } = fetchValue;
-      const payload = { appName, currentPage, pageSize, namespaceId };
+      const { path, currentPage, pageSize, namespaceId } = fetchValue;
+      const payload = { path, currentPage, pageSize, namespaceId };
       yield put({ type: "fetch", payload });
     },
   },
diff --git a/src/models/metadata.test.js b/src/models/metadata.test.js
new file mode 100644
index 00000000..453d0ca0
--- /dev/null
+++ b/src/models/metadata.test.js
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import model from "./metadata";
+
+jest.mock("../services/api", () => ({
+  addMetadata: jest.fn(),
+  deleteMetadata: jest.fn(),
+  findMetadata: jest.fn(),
+  getAllMetadata: jest.fn(),
+  syncData: jest.fn(),
+  updateEnabled: jest.fn(),
+  updateMetadata: jest.fn(),
+}));
+jest.mock("../utils/IntlUtils", () => ({
+  getIntlContent: (key) => key,
+}));
+
+const put = (action) => ({ type: "put", action });
+
+it("preserves the path filter when reloading metadata", () => {
+  const fetchValue = {
+    path: "/api/orders",
+    currentPage: 3,
+    pageSize: 20,
+    namespaceId: "namespace-1",
+  };
+  const generator = model.effects.reload({ fetchValue }, { put });
+
+  expect(generator.next().value).toEqual(
+    put({
+      type: "fetch",
+      payload: fetchValue,
+    }),
+  );
+  expect(generator.next().done).toBe(true);
+});
diff --git a/src/routes/System/Metadata/index.js 
b/src/routes/System/Metadata/index.js
index 862a96a4..88aadb0b 100644
--- a/src/routes/System/Metadata/index.js
+++ b/src/routes/System/Metadata/index.js
@@ -47,7 +47,6 @@ export default class Metadata extends Component {
       currentPage: 1,
       pageSize: 12,
       selectedRowKeys: [],
-      appName: "",
       path: "",
       popup: "",
       localeName: window.sessionStorage.getItem("locale")
@@ -119,8 +118,7 @@ export default class Metadata extends Component {
 
   editClick = (record, copy) => {
     const { dispatch, currentNamespaceId } = this.props;
-    const { currentPage, pageSize } = this.state;
-    const name = this.state.appName;
+    const { currentPage, pageSize, path: filterPath } = this.state;
     dispatch({
       type: "metadata/fetchItem",
       payload: {
@@ -166,7 +164,7 @@ export default class Metadata extends Component {
                   type: `metadata/${copy ? "add" : "update"}`,
                   payload,
                   fetchValue: {
-                    appName: name,
+                    path: filterPath,
                     currentPage,
                     pageSize,
                     namespaceId: currentNamespaceId,
@@ -196,7 +194,7 @@ export default class Metadata extends Component {
 
   deleteClick = () => {
     const { dispatch, currentNamespaceId } = this.props;
-    const { appName, currentPage, pageSize, selectedRowKeys } = this.state;
+    const { path, currentPage, pageSize, selectedRowKeys } = this.state;
     if (selectedRowKeys && selectedRowKeys.length > 0) {
       dispatch({
         type: "metadata/delete",
@@ -205,7 +203,7 @@ export default class Metadata extends Component {
           namespaceId: currentNamespaceId,
         },
         fetchValue: {
-          appName,
+          path,
           currentPage,
           pageSize,
           namespaceId: currentNamespaceId,
@@ -221,8 +219,7 @@ export default class Metadata extends Component {
   };
 
   addClick = () => {
-    const { currentPage, pageSize } = this.state;
-    const name = this.state.appName;
+    const { currentPage, pageSize, path: filterPath } = this.state;
     this.setState({
       popup: (
         <AddModal
@@ -255,7 +252,7 @@ export default class Metadata extends Component {
                 namespaceId: currentNamespaceId,
               },
               fetchValue: {
-                appName: name,
+                path: filterPath,
                 currentPage,
                 pageSize,
                 namespaceId: currentNamespaceId,
@@ -279,7 +276,7 @@ export default class Metadata extends Component {
 
   statusSwitch = ({ list, enabled, callback }) => {
     const { dispatch, currentNamespaceId } = this.props;
-    const { appName, currentPage, pageSize } = this.state;
+    const { path, currentPage, pageSize } = this.state;
     dispatch({
       type: "metadata/updateEn",
       payload: {
@@ -288,7 +285,7 @@ export default class Metadata extends Component {
         namespaceId: currentNamespaceId,
       },
       fetchValue: {
-        appName,
+        path,
         currentPage,
         pageSize,
         namespaceId: currentNamespaceId,

Reply via email to