Repository: open-metadata/OpenMetadata
Pull request #20351: Bug fix for user profile page for Mentions Tab rendering and Diff View issue
Author: login: shrushti2000
Labels: name: UI
description: UI specific issues
name: safe to test
description: Add this label to run secure Github workflows on PRs
Created: 2025-03-19T12:45:38Z | Merged: 2025-03-21T18:01:41Z

Fixes issue related to Mentions tab not getting rendered properly for the selected Thread
and flickering issue happening for Diff component.

Issue
<img width="1440" alt="Screenshot 2025-03-19 at 6 24 14 PM" src="https://github.com/user-attachments/assets/d5c8142f-e9fb-4a62-b3b1-2be0fa32b78c" />

Fix
<img width="1440" alt="Screenshot 2025-03-19 at 6 24 33 PM" src="https://github.com/user-attachments/assets/d632c622-f482-46b6-96ad-8ea3c6a4e080" />

Issue
https://github.com/user-attachments/assets/a7667e3b-4502-46a3-9ab4-78a8e00758b7
Fix

https://github.com/user-attachments/assets/7a58b3b6-6fca-4605-a58a-40c9c2d131dc




<!-- For frontend related change, please add screenshots and/or videos of your changes preview! -->

#
### Type of change:
<!-- You should choose 1 option and delete options that aren't relevant -->
- [ ] Bug fix
- [ ] Improvement
- [ ] New feature
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation

#
### Checklist:
<!-- add an x in [] if done, don't mark items that you didn't do !-->
- [x] I have read the [**CONTRIBUTING**](https://docs.open-metadata.org/developers/contribute) document.
- [ ] My PR title is `Fixes <issue-number>: <short explanation>`
- [ ] I have commented on my code, particularly in hard-to-understand areas. 
- [ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

<!-- Based on the type(s) of your change, uncomment the required checklist 👇 -->

<!-- Bug fix
- [ ] I have added a test that covers the exact scenario we are fixing. For complex issues, comment the issue number in the test for future reference.
-->

<!-- Improvement
- [ ] I have added tests around the new logic.
- [ ] For connector/ingestion changes: I updated the documentation.
-->

<!-- New feature
- [ ] The issue properly describes why the new feature is needed, what's the goal, and how we are building it. Any discussion
    or decision-making process is reflected in the issue.
- [ ] I have updated the documentation.
- [ ] I have added tests around the new logic.
-->

<!-- Breaking change
- [ ] I have added the tag `Backward-Incompatible-Change`.
-->



Diff:
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx
index 85344ce0a1d1..1dde680924b9 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx
@@ -595,7 +595,8 @@ export const ActivityFeedTab = ({
         {loader}
         {selectedThread &&
           !loading &&
-          (activeTab !== ActivityFeedTabs.TASKS ? (
+          (activeTab !== ActivityFeedTabs.TASKS &&
+          selectedThread?.type !== ThreadType.Task ? (
             <div id="feed-panel">
               <div>
                 <FeedPanelBodyV1New
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/activity-feed-tab.less b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/activity-feed-tab.less
index 31b7e4d886ca..42d47d57ae16 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/activity-feed-tab.less
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/activity-feed-tab.less
@@ -498,4 +498,31 @@
   font-family: 'Inter', sans-serif;
   font-weight: 400;
   line-height: 20px;
+  border: none;
+  padding: 0;
+  background: none;
+  box-shadow: none;
+
+  &.ant-btn {
+    color: @blue-9;
+    border: none;
+    background: none;
+    box-shadow: none;
+
+    &:hover,
+    &:focus,
+    &:active {
+      color: @blue-9;
+      border: none;
+      background: none;
+      box-shadow: none;
+      outline: none;
+    }
+
+    &::before,
+    &::after {
+      display: none;
+      content: none;
+    }
+  }
 }
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
index 5d07b691c6b6..74d50b70fc90 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
@@ -11,10 +11,10 @@
  *  limitations under the License.
  */
 
+import { Button } from 'antd';
 import classNames from 'classnames';
 import { Change } from 'diff';
-import { uniqueId } from 'lodash';
-import React, { useEffect, useRef, useState } from 'react';
+import React, { useEffect, useMemo, useRef, useState } from 'react';
 import { useTranslation } from 'react-i18next';
 import TaskDescriptionPreviewer from '../../../components/common/RichTextEditor/TaskDescriptionPreviewer';
 import {
@@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${diff.value}-${diff.removed}-${diff.added}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${diff.value}-${diff.removed}-${diff.added}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${diff.value}-${diff.removed}-${diff.added}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff) => {
+        const key = getDiffKey(diff);
+
+        if (diff.added) {
+          return (
+            <ins className="diff-added-new" data-testid="diff-added" key={key}>
+              <TaskDescriptionPreviewer
+                enableSeeMoreVariant={false}
+                markdown={diff.value}
+                showReadMoreBtn={false}
+              />
+            </ins>
+          );
+        }
+        if (diff.removed) {
+          return (
+            <del
+              className="diff-removed-new"
+              data-testid="diff-removed-new"
+              key={key}>
+              <TaskDescriptionPreviewer
+                enableSeeMoreVariant={false}
+                markdown={diff.value}
+                showReadMoreBtn={false}
+              />
+            </del>
+          );
+        }
+
+        return (
+          <span
+            className="diff-normal-new"
+            data-testid="diff-normal-new"
+            key={key}>
+            <TaskDescriptionPreviewer
+              enableSeeMoreVariant={false}
+              markdown={diff.value}
+              showReadMoreBtn={false}
+            />
+          </span>
+        );
+      }),
+    [diffArr]
+  );
+
+  const getContentClassName = () => {
+    if (expanded) {
+      return '';
+    }
+
+    return showDescTitle
+      ? 'clamp-text-3 overflow-hidden'
+      : 'clamp-text-2 overflow-hidden';
+  };
 
   return (
     <div
@@ -149,25 +172,18 @@ export const DiffViewNew = ({
         {diffArr.length ? (
           <>
             <div
-              className={classNames(
-                'relative',
-                expanded
-                  ? ''
-                  : showDescTitle
-                  ? 'clamp-text-3 overflow-hidden'
-                  : 'clamp-text-2  overflow-hidden'
-              )}
+              className={classNames('relative', getContentClassName())}
               ref={contentRef}>
               {elements}
             </div>
             {shouldShowViewMore && (
               <div className="mt-2">
-                <span
-                  className="cursor-pointer view-more-less-button"
+                <Button
+                  className="view-more-less-button cursor-pointer remove-button-default-styling"
                   data-testid="view-more-button"
                   onClick={() => setExpanded(!expanded)}>
                   {expanded ? t('label.view-less') : t('label.view-more')}
-                </span>
+                </Button>
               </div>
             )}
           </>


Reviews:
user: login: Ashish8689
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T14:52:35Z
user: login: shrushti2000
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T14:57:04Z
user: login: Ashish8689
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T15:00:06Z
user: login: shrushti2000
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T15:01:27Z
user: login: shrushti2000
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T15:04:31Z
user: login: Ashish8689
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T15:07:31Z
user: login: shrushti2000
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T15:57:08Z
user: login: Ashish8689
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T16:07:36Z

Review comments:
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: Ashish8689
body: @shrushti2000 apart from the index don't we have any other thing that we use inplace of index ?
created_at: 2025-03-19T14:52:21Z
author_association: CONTRIBUTOR
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: shrushti2000
body: Previously when we  were using uniqueId() for the key it  was causing  some re rendering issue. The Diff View was getting rendered on every interaction
created_at: 2025-03-19T14:57:04Z
author_association: CONTRIBUTOR
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: Ashish8689
body: Understood but don't we have any unique value from `diff` that we can use and avoid index here?
created_at: 2025-03-19T15:00:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: shrushti2000
body: checking on this
created_at: 2025-03-19T15:01:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: shrushti2000
body: In Diff we have added, count , removed and value currently.
created_at: 2025-03-19T15:04:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: Ashish8689
body: we can use value right here, since it will be different for every one ?
created_at: 2025-03-19T15:07:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -66,50 +66,73 @@ export const DiffViewNew = ({
     return () => clearTimeout(timer);
   }, [diffArr]);
 
-  const elements = diffArr.map((diff) => {
+  const getDiffKey = (diff: Change, index: number) => {
     if (diff.added) {
-      return (
-        <ins
-          className="diff-added-new"
-          data-testid="diff-added"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </ins>
-      );
+      return `diff-${index}-added`;
     }
     if (diff.removed) {
-      return (
-        <del
-          className="diff-removed-new"
-          data-testid="diff-removed-new"
-          key={uniqueId()}>
-          <TaskDescriptionPreviewer
-            enableSeeMoreVariant={false}
-            markdown={diff.value}
-            showReadMoreBtn={false}
-          />
-        </del>
-      );
+      return `diff-${index}-removed`;
     }
 
-    return (
-      <span
-        className="diff-normal-new"
-        data-testid="diff-normal-new"
-        key={uniqueId()}>
-        {' '}
-        <TaskDescriptionPreviewer
-          enableSeeMoreVariant={false}
-          markdown={diff.value}
-          showReadMoreBtn={false}
-        />
-      </span>
-    );
-  });
+    return `diff-${index}-normal`;
+  };
+
+  const elements = useMemo(
+    () =>
+      diffArr.map((diff, index) => {
+        const key = getDiffKey(diff, index);
+
path: openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/DiffViewNew.tsx
user: login: shrushti2000
body: updated the key with diff-${diff.value}-${diff.removed}-${diff.added}-added` combination
created_at: 2025-03-19T15:57:08Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-19T13:07:45Z
body: <!-- Jest Coverage Comment: ui-coverage-tests -->
# Jest test Coverage

## UI tests summary

| Lines | Statements | Branches | Functions |
| --- | --- | --- | --- |
| <a href="https://github.com/open-metadata/OpenMetadata/blob//README.md"><img alt="Coverage: 63%" src="https://img.shields.io/badge/Coverage-63%25-yellow.svg" /></a><br/> | 63.59% (43760/68819) | 38.67% (17310/44760) | 43.23% (5246/12134) |

author_association: CONTRIBUTOR
user: login: sonarqubecloud[bot]
created_at: 2025-03-21T10:52:39Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=open-metadata-ui&pullRequest=20351) **Quality Gate passed for 'open-metadata-ui'**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=open-metadata-ui&pullRequest=20351&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=open-metadata-ui&pullRequest=20351&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=open-metadata-ui&pullRequest=20351&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=open-metadata-ui&pullRequest=20351&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=open-metadata-ui&pullRequest=20351&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=open-metadata-ui&pullRequest=20351)


author_association: NONE