chore(ui): stay on the same page when the task is resolved (#12537)

* chore(ui): stay on the same page when the task is resolved

* chore: update filter on reject task

* chore: address comments

* fix: cypress test
This commit is contained in:
Sachin Chaurasiya 2023-07-22 11:40:49 +05:30 committed by GitHub
parent 493c073a66
commit 59ae1d18a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 9 deletions

View File

@ -359,6 +359,10 @@ describe('Tags page should work', () => {
verifyResponseStatusCode('@taskResolve', 200);
verifyResponseStatusCode('@databaseSchemasPage', 200);
cy.get('[data-testid="table"]').should('be.visible').click();
cy.reload();
verifyResponseStatusCode('@databaseSchemasPage', 200);
cy.get('[data-testid="tags-container"]').scrollIntoView().contains(tag);

View File

@ -20,7 +20,7 @@ export const KeyHelp = ({ editorValue }: { editorValue: string }) => {
return editorValue.length > 2 ? (
<div className="absolute tw-right-8">
<p
className="text-grey-muted tw--mt-1"
className="text-grey-muted m-t-xss"
data-testid="key-help"
style={{ fontSize: '10px' }}>
<kbd>{t('label.shift')}</kbd>

View File

@ -49,6 +49,7 @@ import './activity-feed-tab.less';
import {
ActivityFeedTabProps,
ActivityFeedTabs,
TaskFilter,
} from './ActivityFeedTab.interface';
import { ReactComponent as CheckIcon } from '/assets/svg/ic-check.svg';
import { ReactComponent as TaskIcon } from '/assets/svg/ic-task.svg';
@ -70,7 +71,7 @@ export const ActivityFeedTab = ({
const [elementRef, isInView] = useElementInView(observerOptions);
const { subTab: activeTab = 'all' } =
useParams<{ subTab: ActivityFeedTabs }>();
const [taskFilter, setTaskFilter] = useState<'open' | 'close'>('open');
const [taskFilter, setTaskFilter] = useState<TaskFilter>('open');
const [allCount, setAllCount] = useState(0);
const [tasksCount, setTasksCount] = useState(0);
@ -276,6 +277,15 @@ export const ActivityFeedTab = ({
return [0, 0];
}, [entityThread, activeTab]);
const handleUpdateTaskFilter = (filter: TaskFilter) => {
setTaskFilter(filter);
};
const handleAfterTaskClose = () => {
handleFeedFetchFromFeedList();
handleUpdateTaskFilter('close');
};
return (
<div className="activity-feed-tab">
<Menu
@ -346,7 +356,7 @@ export const ActivityFeedTab = ({
}
)}
onClick={() => {
setTaskFilter('open');
handleUpdateTaskFilter('open');
setActiveThread();
}}>
{' '}
@ -358,7 +368,7 @@ export const ActivityFeedTab = ({
'font-medium': taskFilter === 'close',
})}
onClick={() => {
setTaskFilter('close');
handleUpdateTaskFilter('close');
setActiveThread();
}}>
{' '}
@ -419,6 +429,7 @@ export const ActivityFeedTab = ({
entityType={EntityType.TABLE}
owner={owner}
taskThread={selectedThread}
onAfterClose={handleAfterTaskClose}
onUpdateEntityDetails={onUpdateEntityDetails}
/>
) : (
@ -426,6 +437,7 @@ export const ActivityFeedTab = ({
entityType={isUserEntity ? entityTypeTask : entityType}
owner={owner}
taskThread={selectedThread}
onAfterClose={handleAfterTaskClose}
onUpdateEntityDetails={onUpdateEntityDetails}
/>
)}

View File

@ -15,6 +15,7 @@ import { Column } from 'generated/entity/data/table';
import { EntityReference } from 'generated/entity/type';
export type FeedKeys = 'all' | 'mentions' | 'tasks';
export type TaskFilter = 'open' | 'close';
export enum ActivityFeedTabs {
ALL = 'all',

View File

@ -52,12 +52,10 @@ import {
import { MenuInfo } from 'rc-menu/lib/interface';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useHistory } from 'react-router-dom';
import { updateTask, updateThread } from 'rest/feedsAPI';
import EntityLink from 'utils/EntityLink';
import { getEntityName } from 'utils/EntityUtils';
import { getEntityFQN } from 'utils/FeedUtils';
import { getEntityLink } from 'utils/TableUtils';
import {
fetchOptions,
isDescriptionTask,
@ -84,7 +82,6 @@ export const TaskTab = ({
const entityCheck = !isUndefined(entityFQN) && !isUndefined(entityType);
const { t } = useTranslation();
const [form] = Form.useForm();
const history = useHistory();
const { isAdminUser } = useAuth();
const { postFeed, setActiveThread } = useActivityFeedProvider();
const [taskAction, setTaskAction] = useState<TaskAction>(TASK_ACTION_LIST[0]);
@ -162,8 +159,7 @@ export const TaskTab = ({
updateTask(TaskOperation.RESOLVE, taskDetails?.id + '', data)
.then(() => {
showSuccessToast(t('server.task-resolved-successfully'));
rest.onUpdateEntityDetails?.();
history.push(getEntityLink(entityType ?? '', entityFQN ?? ''));
rest.onAfterClose?.();
})
.catch((err: AxiosError) => showErrorToast(err));
};
@ -245,6 +241,7 @@ export const TaskTab = ({
} as unknown as TaskDetails)
.then(() => {
showSuccessToast(t('server.task-closed-successfully'));
rest.onAfterClose?.();
})
.catch((err: AxiosError) => showErrorToast(err));
} else {

View File

@ -19,6 +19,7 @@ export type TaskTabProps = {
taskThread: Thread;
owner?: EntityReference;
onUpdateEntityDetails?: () => void;
onAfterClose?: () => void;
} & (
| TableTaskTabProps
| { columns?: undefined; entityType: Exclude<EntityType, EntityType.TABLE> }