fix: added empty project state when no project exists. (#2727)

* fix: added empty project state when no project exists

* fix: duplicate import
This commit is contained in:
Lakhan Baheti 2023-11-08 17:54:59 +05:30 committed by GitHub
parent 6ebee05951
commit 2d71377722
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 13 deletions

View File

@ -1,27 +1,49 @@
// next
import { useRouter } from "next/router";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
import { PlusIcon } from "lucide-react";
// mobx store // mobx store
import { useMobxStore } from "lib/mobx/store-provider"; import { useMobxStore } from "lib/mobx/store-provider";
// components // components
import { EmptyState } from "components/common"; import { EmptyState } from "components/common";
// assets // assets
import emptyIssue from "public/empty-state/issue.svg"; import emptyIssue from "public/empty-state/issue.svg";
import emptyProject from "public/empty-state/project.svg";
// icons
import { Plus, PlusIcon } from "lucide-react";
export const GlobalViewEmptyState: React.FC = observer(() => { export const GlobalViewEmptyState: React.FC = observer(() => {
const { commandPalette: commandPaletteStore } = useMobxStore(); const router = useRouter();
const { workspaceSlug } = router.query;
const { commandPalette: commandPaletteStore, project: projectStore } = useMobxStore();
const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null;
return ( return (
<div className="h-full w-full grid place-items-center"> <div className="h-full w-full grid place-items-center">
<EmptyState {!projects || projects?.length === 0 ? (
title="View issues will appear here" <EmptyState
description="Issues help you track individual pieces of work. With Issues, keep track of what's going on, who is working on it, and what's done." image={emptyProject}
image={emptyIssue} title="No projects yet"
primaryButton={{ description="Get started by creating your first project"
text: "New issue", primaryButton={{
icon: <PlusIcon className="h-3 w-3" strokeWidth={2} />, icon: <Plus className="h-4 w-4" />,
onClick: () => commandPaletteStore.toggleCreateIssueModal(true), text: "New Project",
}} onClick: () => commandPaletteStore.toggleCreateProjectModal(true),
/> }}
/>
) : (
<EmptyState
title="View issues will appear here"
description="Issues help you track individual pieces of work. With Issues, keep track of what's going on, who is working on it, and what's done."
image={emptyIssue}
primaryButton={{
text: "New issue",
icon: <PlusIcon className="h-3 w-3" strokeWidth={2} />,
onClick: () => commandPaletteStore.toggleCreateIssueModal(true),
}}
/>
)}
</div> </div>
); );
}); });

View File

@ -28,12 +28,15 @@ export const GlobalViewLayoutRoot: React.FC<Props> = observer((props) => {
workspaceFilter: workspaceFilterStore, workspaceFilter: workspaceFilterStore,
workspace: workspaceStore, workspace: workspaceStore,
issueDetail: issueDetailStore, issueDetail: issueDetailStore,
project: projectStore,
} = useMobxStore(); } = useMobxStore();
const viewDetails = globalViewId ? globalViewsStore.globalViewDetails[globalViewId.toString()] : undefined; const viewDetails = globalViewId ? globalViewsStore.globalViewDetails[globalViewId.toString()] : undefined;
const storedFilters = globalViewId ? globalViewFiltersStore.storedFilters[globalViewId.toString()] : undefined; const storedFilters = globalViewId ? globalViewFiltersStore.storedFilters[globalViewId.toString()] : undefined;
const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null;
useSWR( useSWR(
workspaceSlug && globalViewId && viewDetails ? `GLOBAL_VIEW_ISSUES_${globalViewId.toString()}` : null, workspaceSlug && globalViewId && viewDetails ? `GLOBAL_VIEW_ISSUES_${globalViewId.toString()}` : null,
workspaceSlug && globalViewId && viewDetails workspaceSlug && globalViewId && viewDetails
@ -94,7 +97,7 @@ export const GlobalViewLayoutRoot: React.FC<Props> = observer((props) => {
return ( return (
<div className="relative w-full h-full flex flex-col overflow-hidden"> <div className="relative w-full h-full flex flex-col overflow-hidden">
<GlobalViewsAppliedFiltersRoot /> <GlobalViewsAppliedFiltersRoot />
{issues?.length === 0 ? ( {issues?.length === 0 || !projects || projects?.length === 0 ? (
<GlobalViewEmptyState /> <GlobalViewEmptyState />
) : ( ) : (
<div className="h-full w-full overflow-auto"> <div className="h-full w-full overflow-auto">