mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
9065b5d368
* fix: created dashboard, widgets and dashboard widget model * fix: new user home dashboard * chore: recent projects list * chore: recent collaborators * chore: priority order change * chore: payload changes * chore: collaborator's active issue count * chore: all dashboard widgets added with services and typs * chore: centered metric for pie chart * chore: widget filters * chore: created issue filter * fix: created and assigned issues payload change * chore: created issue payload change * fix: date filter change * chore: implement filters * fix: added expansion fields * fix: changed issue structure with relation * chore: new issues response * fix: project member fix * chore: updated issue_relation structure * chore: code cleanup * chore: update issues response and added empty states * fix: button text wrap * chore: update empty state messages * fix: filters * chore: update dark mode empty states * build-error: Type check in the issue relation service * fix: issues redirection * fix: project empty state * chore: project member active check * chore: project member check in state and priority * chore: remove console logs and replace harcoded values with constants * fix: code refactoring * fix: key name changed * refactor: mapping through similar components using an array * fix: build errors --------- Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com> Co-authored-by: gurusainath <gurusainath007@gmail.com>
65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
import { useEffect } from "react";
|
|
import { observer } from "mobx-react-lite";
|
|
// hooks
|
|
import { useApplication, useDashboard, useProject, useUser } from "hooks/store";
|
|
// components
|
|
import { TourRoot } from "components/onboarding";
|
|
import { UserGreetingsView } from "components/user";
|
|
import { IssuePeekOverview } from "components/issues";
|
|
import { DashboardProjectEmptyState, DashboardWidgets } from "components/dashboard";
|
|
// ui
|
|
import { Spinner } from "@plane/ui";
|
|
|
|
export const WorkspaceDashboardView = observer(() => {
|
|
// store hooks
|
|
const {
|
|
eventTracker: { postHogEventTracker },
|
|
router: { workspaceSlug },
|
|
} = useApplication();
|
|
const { currentUser, updateTourCompleted } = useUser();
|
|
const { homeDashboardId, fetchHomeDashboardWidgets } = useDashboard();
|
|
const { joinedProjectIds } = useProject();
|
|
|
|
const handleTourCompleted = () => {
|
|
updateTourCompleted()
|
|
.then(() => {
|
|
postHogEventTracker("USER_TOUR_COMPLETE", {
|
|
user_id: currentUser?.id,
|
|
email: currentUser?.email,
|
|
state: "SUCCESS",
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
console.error(error);
|
|
});
|
|
};
|
|
|
|
// fetch home dashboard widgets on workspace change
|
|
useEffect(() => {
|
|
if (!workspaceSlug) return;
|
|
|
|
fetchHomeDashboardWidgets(workspaceSlug);
|
|
}, [fetchHomeDashboardWidgets, workspaceSlug]);
|
|
|
|
return (
|
|
<>
|
|
<IssuePeekOverview />
|
|
{currentUser && !currentUser.is_tour_completed && (
|
|
<div className="fixed left-0 top-0 z-20 grid h-full w-full place-items-center bg-custom-backdrop bg-opacity-50 transition-opacity">
|
|
<TourRoot onComplete={handleTourCompleted} />
|
|
</div>
|
|
)}
|
|
{homeDashboardId && joinedProjectIds ? (
|
|
<div className="space-y-7 p-7 bg-custom-background-90 h-full w-full flex flex-col overflow-y-auto">
|
|
{currentUser && <UserGreetingsView user={currentUser} />}
|
|
{joinedProjectIds.length > 0 ? <DashboardWidgets /> : <DashboardProjectEmptyState />}
|
|
</div>
|
|
) : (
|
|
<div className="h-full w-full grid place-items-center">
|
|
<Spinner />
|
|
</div>
|
|
)}
|
|
</>
|
|
);
|
|
});
|