fix(ui): encoding issue in entity pages (#12955)

* fix encoding issue in entity pages

* fix double encoding while redirecting from task page
This commit is contained in:
Ashish Gupta 2023-08-22 15:09:59 +05:30 committed by GitHub
parent 817b9853df
commit ae99ace22b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 36 additions and 32 deletions

View File

@ -111,16 +111,14 @@ const DashboardDetails = ({
deleted, deleted,
dashboardTags, dashboardTags,
tier, tier,
entityFqn,
} = useMemo(() => { } = useMemo(() => {
const { tags = [], fullyQualifiedName } = dashboardDetails; const { tags = [] } = dashboardDetails;
return { return {
...dashboardDetails, ...dashboardDetails,
tier: getTierTags(tags), tier: getTierTags(tags),
dashboardTags: getTagsWithoutTier(tags), dashboardTags: getTagsWithoutTier(tags),
entityName: getEntityName(dashboardDetails), entityName: getEntityName(dashboardDetails),
entityFqn: fullyQualifiedName ?? '',
}; };
}, [dashboardDetails]); }, [dashboardDetails]);
@ -459,7 +457,7 @@ const DashboardDetails = ({
fqn: record.fullyQualifiedName ?? '', fqn: record.fullyQualifiedName ?? '',
field: record.description, field: record.description,
}} }}
entityFqn={entityFqn} entityFqn={dashboardFQN}
entityType={EntityType.DASHBOARD} entityType={EntityType.DASHBOARD}
hasEditPermission={editDescriptionPermissions} hasEditPermission={editDescriptionPermissions}
index={index} index={index}
@ -479,7 +477,7 @@ const DashboardDetails = ({
render: (tags: TagLabel[], record: ChartType, index: number) => { render: (tags: TagLabel[], record: ChartType, index: number) => {
return ( return (
<TableTags<ChartType> <TableTags<ChartType>
entityFqn={entityFqn} entityFqn={dashboardFQN}
entityType={EntityType.DASHBOARD} entityType={EntityType.DASHBOARD}
handleTagSelection={handleChartTagSelection} handleTagSelection={handleChartTagSelection}
hasTagEditAccess={hasEditTagAccess(record)} hasTagEditAccess={hasEditTagAccess(record)}
@ -501,7 +499,7 @@ const DashboardDetails = ({
width: 300, width: 300,
render: (tags: TagLabel[], record: ChartType, index: number) => ( render: (tags: TagLabel[], record: ChartType, index: number) => (
<TableTags<ChartType> <TableTags<ChartType>
entityFqn={entityFqn} entityFqn={dashboardFQN}
entityType={EntityType.DASHBOARD} entityType={EntityType.DASHBOARD}
handleTagSelection={handleChartTagSelection} handleTagSelection={handleChartTagSelection}
hasTagEditAccess={hasEditTagAccess(record)} hasTagEditAccess={hasEditTagAccess(record)}
@ -517,7 +515,6 @@ const DashboardDetails = ({
], ],
[ [
deleted, deleted,
entityFqn,
chartsPermissionsArray, chartsPermissionsArray,
onThreadLinkSelect, onThreadLinkSelect,
hasEditTagAccess, hasEditTagAccess,
@ -540,7 +537,7 @@ const DashboardDetails = ({
<div className="d-flex flex-col gap-4"> <div className="d-flex flex-col gap-4">
<DescriptionV1 <DescriptionV1
description={dashboardDetails.description} description={dashboardDetails.description}
entityFqn={dashboardDetails.fullyQualifiedName} entityFqn={dashboardFQN}
entityName={entityName} entityName={entityName}
entityType={EntityType.DASHBOARD} entityType={EntityType.DASHBOARD}
hasEditAccess={ hasEditAccess={
@ -579,7 +576,7 @@ const DashboardDetails = ({
<Space className="w-full" direction="vertical" size="large"> <Space className="w-full" direction="vertical" size="large">
<TagsContainerV2 <TagsContainerV2
displayType={DisplayType.READ_MORE} displayType={DisplayType.READ_MORE}
entityFqn={dashboardDetails.fullyQualifiedName} entityFqn={dashboardFQN}
entityType={EntityType.DASHBOARD} entityType={EntityType.DASHBOARD}
permission={ permission={
(dashboardPermissions.EditAll || (dashboardPermissions.EditAll ||
@ -594,7 +591,7 @@ const DashboardDetails = ({
<TagsContainerV2 <TagsContainerV2
displayType={DisplayType.READ_MORE} displayType={DisplayType.READ_MORE}
entityFqn={dashboardDetails.fullyQualifiedName} entityFqn={dashboardFQN}
entityType={EntityType.DASHBOARD} entityType={EntityType.DASHBOARD}
permission={ permission={
(dashboardPermissions.EditAll || (dashboardPermissions.EditAll ||

View File

@ -121,7 +121,7 @@ const MlModelDetail: FC<MlModelDetailProp> = ({
[AppState.nonSecureUserDetails, AppState.userDetails] [AppState.nonSecureUserDetails, AppState.userDetails]
); );
const { mlModelTags, isFollowing, tier, entityFqn } = useMemo(() => { const { mlModelTags, isFollowing, tier } = useMemo(() => {
return { return {
...mlModelDetail, ...mlModelDetail,
tier: getTierTags(mlModelDetail.tags ?? []), tier: getTierTags(mlModelDetail.tags ?? []),
@ -130,7 +130,6 @@ const MlModelDetail: FC<MlModelDetailProp> = ({
isFollowing: mlModelDetail.followers?.some( isFollowing: mlModelDetail.followers?.some(
({ id }: { id: string }) => id === currentUser?.id ({ id }: { id: string }) => id === currentUser?.id
), ),
entityFqn: mlModelDetail.fullyQualifiedName ?? '',
}; };
}, [mlModelDetail]); }, [mlModelDetail]);
@ -378,7 +377,7 @@ const MlModelDetail: FC<MlModelDetailProp> = ({
<div className="d-flex flex-col gap-4"> <div className="d-flex flex-col gap-4">
<DescriptionV1 <DescriptionV1
description={mlModelDetail.description} description={mlModelDetail.description}
entityFqn={mlModelDetail.fullyQualifiedName} entityFqn={mlModelFqn}
entityName={mlModelDetail.name} entityName={mlModelDetail.name}
entityType={EntityType.MLMODEL} entityType={EntityType.MLMODEL}
hasEditAccess={ hasEditAccess={
@ -394,7 +393,7 @@ const MlModelDetail: FC<MlModelDetailProp> = ({
onThreadLinkSelect={handleThreadLinkSelect} onThreadLinkSelect={handleThreadLinkSelect}
/> />
<MlModelFeaturesList <MlModelFeaturesList
entityFqn={entityFqn} entityFqn={mlModelFqn}
handleFeaturesUpdate={onFeaturesUpdate} handleFeaturesUpdate={onFeaturesUpdate}
isDeleted={mlModelDetail.deleted} isDeleted={mlModelDetail.deleted}
mlFeatures={mlModelDetail.mlFeatures} mlFeatures={mlModelDetail.mlFeatures}
@ -410,7 +409,7 @@ const MlModelDetail: FC<MlModelDetailProp> = ({
<Space className="w-full" direction="vertical" size="large"> <Space className="w-full" direction="vertical" size="large">
<TagsContainerV2 <TagsContainerV2
displayType={DisplayType.READ_MORE} displayType={DisplayType.READ_MORE}
entityFqn={mlModelDetail.fullyQualifiedName} entityFqn={mlModelFqn}
entityType={EntityType.MLMODEL} entityType={EntityType.MLMODEL}
permission={ permission={
(mlModelPermissions.EditAll || (mlModelPermissions.EditAll ||
@ -425,7 +424,7 @@ const MlModelDetail: FC<MlModelDetailProp> = ({
<TagsContainerV2 <TagsContainerV2
displayType={DisplayType.READ_MORE} displayType={DisplayType.READ_MORE}
entityFqn={mlModelDetail.fullyQualifiedName} entityFqn={mlModelFqn}
entityType={EntityType.MLMODEL} entityType={EntityType.MLMODEL}
permission={ permission={
(mlModelPermissions.EditAll || (mlModelPermissions.EditAll ||

View File

@ -101,7 +101,6 @@ const PipelineDetails = ({
entityName, entityName,
tier, tier,
tags, tags,
entityFqn,
followers, followers,
} = useMemo(() => { } = useMemo(() => {
return { return {
@ -114,7 +113,6 @@ const PipelineDetails = ({
tier: getTierTags(pipelineDetails.tags ?? []), tier: getTierTags(pipelineDetails.tags ?? []),
tags: getTagsWithoutTier(pipelineDetails.tags ?? []), tags: getTagsWithoutTier(pipelineDetails.tags ?? []),
entityName: getEntityName(pipelineDetails), entityName: getEntityName(pipelineDetails),
entityFqn: pipelineDetails.fullyQualifiedName ?? '',
followers: pipelineDetails.followers ?? [], followers: pipelineDetails.followers ?? [],
}; };
}, [pipelineDetails]); }, [pipelineDetails]);
@ -390,7 +388,7 @@ const PipelineDetails = ({
fqn: record.fullyQualifiedName ?? '', fqn: record.fullyQualifiedName ?? '',
field: record.description, field: record.description,
}} }}
entityFqn={entityFqn} entityFqn={pipelineFQN}
entityType={EntityType.PIPELINE} entityType={EntityType.PIPELINE}
hasEditPermission={ hasEditPermission={
pipelinePermissions.EditDescription || pipelinePermissions.EditAll pipelinePermissions.EditDescription || pipelinePermissions.EditAll
@ -410,7 +408,7 @@ const PipelineDetails = ({
width: 300, width: 300,
render: (tags, record, index) => ( render: (tags, record, index) => (
<TableTags<Task> <TableTags<Task>
entityFqn={entityFqn} entityFqn={pipelineFQN}
entityType={EntityType.PIPELINE} entityType={EntityType.PIPELINE}
handleTagSelection={handleTableTagSelection} handleTagSelection={handleTableTagSelection}
hasTagEditAccess={hasTagEditAccess} hasTagEditAccess={hasTagEditAccess}
@ -431,7 +429,7 @@ const PipelineDetails = ({
width: 300, width: 300,
render: (tags, record, index) => ( render: (tags, record, index) => (
<TableTags<Task> <TableTags<Task>
entityFqn={entityFqn} entityFqn={pipelineFQN}
entityType={EntityType.PIPELINE} entityType={EntityType.PIPELINE}
handleTagSelection={handleTableTagSelection} handleTagSelection={handleTableTagSelection}
hasTagEditAccess={hasTagEditAccess} hasTagEditAccess={hasTagEditAccess}
@ -448,7 +446,6 @@ const PipelineDetails = ({
[ [
deleted, deleted,
editTask, editTask,
entityFqn,
hasTagEditAccess, hasTagEditAccess,
pipelinePermissions, pipelinePermissions,
getEntityName, getEntityName,

View File

@ -263,7 +263,7 @@ const TopicDetails: React.FC<TopicDetailsProps> = ({
<div className="d-flex flex-col gap-4"> <div className="d-flex flex-col gap-4">
<DescriptionV1 <DescriptionV1
description={topicDetails.description} description={topicDetails.description}
entityFqn={topicDetails.fullyQualifiedName} entityFqn={topicFQN}
entityName={entityName} entityName={entityName}
entityType={EntityType.TOPIC} entityType={EntityType.TOPIC}
hasEditAccess={ hasEditAccess={
@ -278,7 +278,7 @@ const TopicDetails: React.FC<TopicDetailsProps> = ({
onThreadLinkSelect={onThreadLinkSelect} onThreadLinkSelect={onThreadLinkSelect}
/> />
<TopicSchemaFields <TopicSchemaFields
entityFqn={topicDetails.fullyQualifiedName ?? ''} entityFqn={topicFQN}
hasDescriptionEditAccess={ hasDescriptionEditAccess={
topicPermissions.EditAll || topicPermissions.EditDescription topicPermissions.EditAll || topicPermissions.EditDescription
} }
@ -299,7 +299,7 @@ const TopicDetails: React.FC<TopicDetailsProps> = ({
<Space className="w-full" direction="vertical" size="large"> <Space className="w-full" direction="vertical" size="large">
<TagsContainerV2 <TagsContainerV2
displayType={DisplayType.READ_MORE} displayType={DisplayType.READ_MORE}
entityFqn={topicDetails.fullyQualifiedName} entityFqn={topicFQN}
entityType={EntityType.TOPIC} entityType={EntityType.TOPIC}
permission={ permission={
(topicPermissions.EditAll || topicPermissions.EditTags) && (topicPermissions.EditAll || topicPermissions.EditTags) &&
@ -313,7 +313,7 @@ const TopicDetails: React.FC<TopicDetailsProps> = ({
<TagsContainerV2 <TagsContainerV2
displayType={DisplayType.READ_MORE} displayType={DisplayType.READ_MORE}
entityFqn={topicDetails.fullyQualifiedName} entityFqn={topicFQN}
entityType={EntityType.TOPIC} entityType={EntityType.TOPIC}
permission={ permission={
(topicPermissions.EditAll || topicPermissions.EditTags) && (topicPermissions.EditAll || topicPermissions.EditTags) &&

View File

@ -191,7 +191,6 @@ const ContainerPage = () => {
isUserFollowing, isUserFollowing,
tags, tags,
tier, tier,
entityFqn,
} = useMemo(() => { } = useMemo(() => {
return { return {
deleted: containerData?.deleted, deleted: containerData?.deleted,
@ -492,7 +491,7 @@ const ContainerPage = () => {
<ContainerDataModel <ContainerDataModel
dataModel={containerData?.dataModel} dataModel={containerData?.dataModel}
entityFqn={entityFqn} entityFqn={containerName}
hasDescriptionEditAccess={hasEditDescriptionPermission} hasDescriptionEditAccess={hasEditDescriptionPermission}
hasTagEditAccess={hasEditTagsPermission} hasTagEditAccess={hasEditTagsPermission}
isReadOnly={Boolean(deleted)} isReadOnly={Boolean(deleted)}

View File

@ -27,6 +27,7 @@ import { useTranslation } from 'react-i18next';
import { useHistory, useLocation, useParams } from 'react-router-dom'; import { useHistory, useLocation, useParams } from 'react-router-dom';
import { postThread } from 'rest/feedsAPI'; import { postThread } from 'rest/feedsAPI';
import { getEntityDetailLink } from 'utils/CommonUtils'; import { getEntityDetailLink } from 'utils/CommonUtils';
import { getDecodedFqn } from 'utils/StringsUtils';
import AppState from '../../../AppState'; import AppState from '../../../AppState';
import { EntityField } from '../../../constants/Feeds.constants'; import { EntityField } from '../../../constants/Feeds.constants';
import { EntityTabs, EntityType } from '../../../enums/entity.enum'; import { EntityTabs, EntityType } from '../../../enums/entity.enum';
@ -125,7 +126,9 @@ const RequestDescription = () => {
history.push( history.push(
getEntityDetailLink( getEntityDetailLink(
entityType as EntityType, entityType as EntityType,
entityFQN, entityType === EntityType.TABLE
? entityFQN
: getDecodedFqn(entityFQN),
EntityTabs.ACTIVITY_FEED, EntityTabs.ACTIVITY_FEED,
ActivityFeedTabs.TASKS ActivityFeedTabs.TASKS
) )

View File

@ -25,6 +25,7 @@ import { useTranslation } from 'react-i18next';
import { useHistory, useLocation, useParams } from 'react-router-dom'; import { useHistory, useLocation, useParams } from 'react-router-dom';
import { postThread } from 'rest/feedsAPI'; import { postThread } from 'rest/feedsAPI';
import { getEntityDetailLink } from 'utils/CommonUtils'; import { getEntityDetailLink } from 'utils/CommonUtils';
import { getDecodedFqn } from 'utils/StringsUtils';
import AppState from '../../../AppState'; import AppState from '../../../AppState';
import { EntityField } from '../../../constants/Feeds.constants'; import { EntityField } from '../../../constants/Feeds.constants';
import { EntityTabs, EntityType } from '../../../enums/entity.enum'; import { EntityTabs, EntityType } from '../../../enums/entity.enum';
@ -118,7 +119,9 @@ const RequestTag = () => {
history.push( history.push(
getEntityDetailLink( getEntityDetailLink(
entityType as EntityType, entityType as EntityType,
entityFQN, entityType === EntityType.TABLE
? entityFQN
: getDecodedFqn(entityFQN),
EntityTabs.ACTIVITY_FEED, EntityTabs.ACTIVITY_FEED,
ActivityFeedTabs.TASKS ActivityFeedTabs.TASKS
) )

View File

@ -25,6 +25,7 @@ import { useTranslation } from 'react-i18next';
import { useHistory, useLocation, useParams } from 'react-router-dom'; import { useHistory, useLocation, useParams } from 'react-router-dom';
import { postThread } from 'rest/feedsAPI'; import { postThread } from 'rest/feedsAPI';
import { getEntityDetailLink } from 'utils/CommonUtils'; import { getEntityDetailLink } from 'utils/CommonUtils';
import { getDecodedFqn } from 'utils/StringsUtils';
import AppState from '../../../AppState'; import AppState from '../../../AppState';
import { FQN_SEPARATOR_CHAR } from '../../../constants/char.constants'; import { FQN_SEPARATOR_CHAR } from '../../../constants/char.constants';
import { EntityField } from '../../../constants/Feeds.constants'; import { EntityField } from '../../../constants/Feeds.constants';
@ -139,7 +140,9 @@ const UpdateDescription = () => {
history.push( history.push(
getEntityDetailLink( getEntityDetailLink(
entityType as EntityType, entityType as EntityType,
entityFQN, entityType === EntityType.TABLE
? entityFQN
: getDecodedFqn(entityFQN),
EntityTabs.ACTIVITY_FEED, EntityTabs.ACTIVITY_FEED,
ActivityFeedTabs.TASKS ActivityFeedTabs.TASKS
) )

View File

@ -27,6 +27,7 @@ import { useTranslation } from 'react-i18next';
import { useHistory, useLocation, useParams } from 'react-router-dom'; import { useHistory, useLocation, useParams } from 'react-router-dom';
import { postThread } from 'rest/feedsAPI'; import { postThread } from 'rest/feedsAPI';
import { getEntityDetailLink } from 'utils/CommonUtils'; import { getEntityDetailLink } from 'utils/CommonUtils';
import { getDecodedFqn } from 'utils/StringsUtils';
import AppState from '../../../AppState'; import AppState from '../../../AppState';
import { FQN_SEPARATOR_CHAR } from '../../../constants/char.constants'; import { FQN_SEPARATOR_CHAR } from '../../../constants/char.constants';
import { EntityField } from '../../../constants/Feeds.constants'; import { EntityField } from '../../../constants/Feeds.constants';
@ -146,7 +147,9 @@ const UpdateTag = () => {
history.push( history.push(
getEntityDetailLink( getEntityDetailLink(
entityType as EntityType, entityType as EntityType,
entityFQN, entityType === EntityType.TABLE
? entityFQN
: getDecodedFqn(entityFQN),
EntityTabs.ACTIVITY_FEED, EntityTabs.ACTIVITY_FEED,
ActivityFeedTabs.TASKS ActivityFeedTabs.TASKS
) )