import { useState } from "react"; import { useRouter } from "next/router"; import useSWR from "swr"; import { observer } from "mobx-react-lite"; // hooks import { useMobxStore } from "lib/mobx/store-provider"; // components import { TourRoot } from "components/onboarding"; import { UserGreetingsView } from "components/user"; import { CompletedIssuesGraph, IssuesList, IssuesPieChart, IssuesStats } from "components/workspace"; // constants import { EUserWorkspaceRoles } from "constants/workspace"; // images import { NewEmptyState } from "components/common/new-empty-state"; import emptyProject from "public/empty-state/dashboard_empty_project.webp"; export const WorkspaceDashboardView = observer(() => { // router const router = useRouter(); const { workspaceSlug } = router.query; // store const { user: userStore, project: projectStore, commandPalette: commandPaletteStore, trackEvent: { setTrackElement, postHogEventTracker }, } = useMobxStore(); const user = userStore.currentUser; const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null; const workspaceDashboardInfo = userStore.dashboardInfo; // states const [month, setMonth] = useState(new Date().getMonth() + 1); // fetch user dashboard info useSWR( workspaceSlug ? `USER_WORKSPACE_DASHBOARD_${workspaceSlug}_${month}` : null, workspaceSlug ? () => userStore.fetchUserDashboardInfo(workspaceSlug.toString(), month) : null ); const isEditingAllowed = !!userStore.currentProjectRole && userStore.currentProjectRole >= EUserWorkspaceRoles.MEMBER; const handleTourCompleted = () => { userStore .updateTourCompleted() .then(() => { postHogEventTracker("USER_TOUR_COMPLETE", { user_id: user?.id, email: user?.email, state: "SUCCESS", }); }) .catch((error) => { console.log(error); }); }; return ( <> {/* {isProductUpdatesModalOpen && ( )} */} {user && !user.is_tour_completed && (
)}
{user && } {projects ? ( projects.length > 0 ? (
) : ( { setTrackElement("DASHBOARD_PAGE"); commandPaletteStore.toggleCreateProjectModal(true); }, } : null } disabled={!isEditingAllowed} /> ) ) : null}
); });