chore: workspace view mutation fix ,bug fixes and code refactor (#2301)
* chore: workspace view mutation fix ,bug fixes and code refactor * chore: update workspace view toast alert added
This commit is contained in:
parent
459999e8c9
commit
2a770e4a95
13 changed files with 221 additions and 195 deletions
|
|
@ -30,7 +30,7 @@ const issueViewOptions: { type: TIssueViewOptions; Icon: any }[] = [
|
|||
|
||||
export const MyIssuesViewOptions: React.FC = () => {
|
||||
const router = useRouter();
|
||||
const { workspaceSlug, workspaceViewId } = router.query;
|
||||
const { workspaceSlug, globalViewId } = router.query;
|
||||
|
||||
const { displayFilters, setDisplayFilters, filters, setFilters } = useMyIssuesFilters(
|
||||
workspaceSlug?.toString()
|
||||
|
|
@ -42,7 +42,7 @@ export const MyIssuesViewOptions: React.FC = () => {
|
|||
router.pathname.includes(pathname)
|
||||
);
|
||||
|
||||
const showFilters = isWorkspaceViewPath || workspaceViewId;
|
||||
const showFilters = isWorkspaceViewPath || globalViewId;
|
||||
|
||||
return (
|
||||
<div className="flex items-center gap-2">
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import useProjects from "hooks/use-projects";
|
|||
import useUser from "hooks/use-user";
|
||||
import { useWorkspaceView } from "hooks/use-workspace-view";
|
||||
import useWorkspaceMembers from "hooks/use-workspace-members";
|
||||
import useToast from "hooks/use-toast";
|
||||
// components
|
||||
import { WorkspaceViewsNavigation } from "components/workspace/views/workpace-view-navigation";
|
||||
import { EmptyState, PrimaryButton } from "components/ui";
|
||||
|
|
@ -31,7 +32,9 @@ import { IIssue, IWorkspaceIssueFilterOptions } from "types";
|
|||
|
||||
export const WorkspaceViewIssues = () => {
|
||||
const router = useRouter();
|
||||
const { workspaceSlug, viewId } = router.query;
|
||||
const { workspaceSlug, globalViewId } = router.query;
|
||||
|
||||
const { setToastAlert } = useToast();
|
||||
|
||||
const { memberRole } = useProjectMyMembership();
|
||||
const { user } = useUser();
|
||||
|
|
@ -111,7 +114,9 @@ export const WorkspaceViewIssues = () => {
|
|||
const nullFilters =
|
||||
filters.filters &&
|
||||
Object.keys(filters.filters).filter(
|
||||
(key) => filters.filters[key as keyof IWorkspaceIssueFilterOptions] === null
|
||||
(key) =>
|
||||
filters.filters[key as keyof IWorkspaceIssueFilterOptions] === null ||
|
||||
(filters.filters[key as keyof IWorkspaceIssueFilterOptions]?.length ?? 0) <= 0
|
||||
);
|
||||
|
||||
const areFiltersApplied =
|
||||
|
|
@ -189,16 +194,22 @@ export const WorkspaceViewIssues = () => {
|
|||
/>
|
||||
<PrimaryButton
|
||||
onClick={() => {
|
||||
if (viewId) handleFilters("filters", filters.filters, true);
|
||||
else
|
||||
if (globalViewId) {
|
||||
handleFilters("filters", filters.filters, true);
|
||||
setToastAlert({
|
||||
title: "View updated",
|
||||
message: "Your view has been updated",
|
||||
type: "success",
|
||||
});
|
||||
} else
|
||||
setCreateViewModal({
|
||||
query: filters.filters,
|
||||
});
|
||||
}}
|
||||
className="flex items-center gap-2 text-sm"
|
||||
>
|
||||
{!viewId && <PlusIcon className="h-4 w-4" />}
|
||||
{viewId ? "Update" : "Save"} view
|
||||
{!globalViewId && <PlusIcon className="h-4 w-4" />}
|
||||
{globalViewId ? "Update" : "Save"} view
|
||||
</PrimaryButton>
|
||||
</div>
|
||||
{<div className="mt-3 border-t border-custom-border-200" />}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import { IIssue, IWorkspaceIssueFilterOptions } from "types";
|
|||
|
||||
export const WorkspaceAllIssue = () => {
|
||||
const router = useRouter();
|
||||
const { workspaceSlug, viewId } = router.query;
|
||||
const { workspaceSlug, globalViewId } = router.query;
|
||||
|
||||
const [createViewModal, setCreateViewModal] = useState<any>(null);
|
||||
|
||||
|
|
@ -128,7 +128,9 @@ export const WorkspaceAllIssue = () => {
|
|||
const nullFilters =
|
||||
filters.filters &&
|
||||
Object.keys(filters.filters).filter(
|
||||
(key) => filters.filters[key as keyof IWorkspaceIssueFilterOptions] === null
|
||||
(key) =>
|
||||
filters.filters[key as keyof IWorkspaceIssueFilterOptions] === null ||
|
||||
(filters.filters[key as keyof IWorkspaceIssueFilterOptions]?.length ?? 0) <= 0
|
||||
);
|
||||
|
||||
const areFiltersApplied =
|
||||
|
|
@ -203,7 +205,7 @@ export const WorkspaceAllIssue = () => {
|
|||
/>
|
||||
<PrimaryButton
|
||||
onClick={() => {
|
||||
if (viewId) handleFilters("filters", filters.filters, true);
|
||||
if (globalViewId) handleFilters("filters", filters.filters, true);
|
||||
else
|
||||
setCreateViewModal({
|
||||
query: filters.filters,
|
||||
|
|
@ -211,8 +213,8 @@ export const WorkspaceAllIssue = () => {
|
|||
}}
|
||||
className="flex items-center gap-2 text-sm"
|
||||
>
|
||||
{!viewId && <PlusIcon className="h-4 w-4" />}
|
||||
{viewId ? "Update" : "Save"} view
|
||||
{!globalViewId && <PlusIcon className="h-4 w-4" />}
|
||||
{globalViewId ? "Update" : "Save"} view
|
||||
</PrimaryButton>
|
||||
</div>
|
||||
{<div className="mt-3 border-t border-custom-border-200" />}
|
||||
|
|
|
|||
|
|
@ -50,13 +50,6 @@ export const WorkspaceAssignedIssue = () => {
|
|||
sub_issue: false,
|
||||
};
|
||||
|
||||
// const { data: viewDetails, error } = useSWR(
|
||||
// workspaceSlug && workspaceViewId ? WORKSPACE_VIEW_DETAILS(workspaceViewId.toString()) : null,
|
||||
// workspaceSlug && workspaceViewId
|
||||
// ? () => workspaceService.getViewDetails(workspaceSlug.toString(), workspaceViewId.toString())
|
||||
// : null
|
||||
// );
|
||||
|
||||
const { data: viewIssues, mutate: mutateIssues } = useSWR(
|
||||
workspaceSlug ? WORKSPACE_VIEW_ISSUES(workspaceSlug.toString(), params) : null,
|
||||
workspaceSlug ? () => workspaceService.getViewIssues(workspaceSlug.toString(), params) : null
|
||||
|
|
|
|||
|
|
@ -30,13 +30,13 @@ const issueViewOptions: { type: TIssueViewOptions; Icon: any }[] = [
|
|||
|
||||
export const WorkspaceIssuesViewOptions: React.FC = () => {
|
||||
const router = useRouter();
|
||||
const { workspaceSlug, workspaceViewId } = router.query;
|
||||
const { workspaceSlug, globalViewId } = router.query;
|
||||
|
||||
const { filters, handleFilters } = useWorkspaceView();
|
||||
|
||||
const isWorkspaceViewPath = router.pathname.includes("workspace-views/all-issues");
|
||||
|
||||
const showFilters = isWorkspaceViewPath || workspaceViewId;
|
||||
const showFilters = isWorkspaceViewPath || globalViewId;
|
||||
|
||||
return (
|
||||
<div className="flex items-center gap-2">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue