Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export * from "./team-issues";
export * from "./team-view-issues";
export * from "./team-view-issues";
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { observer } from "mobx-react";

export const TeamProjectWorkItemEmptyState: React.FC = observer(() => <></>);
7 changes: 7 additions & 0 deletions apps/web/ce/helpers/issue-action-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,10 @@ export const useTeamViewIssueActions: () => IssueActions = () => ({
removeIssue: () => Promise.resolve(undefined),
updateFilters: () => Promise.resolve(undefined),
});

export const useTeamProjectWorkItemsActions: () => IssueActions = () => ({
fetchIssues: () => Promise.resolve(undefined),
fetchNextIssues: () => Promise.resolve(undefined),
removeIssue: () => Promise.resolve(undefined),
updateFilters: () => Promise.resolve(undefined),
});
12 changes: 12 additions & 0 deletions apps/web/ce/store/issue/team-project/filter.store.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { IProjectIssuesFilter, ProjectIssuesFilter } from "@/store/issue/project";
import { IIssueRootStore } from "@/store/issue/root.store";

// @ts-nocheck - This class will never be used, extending similar class to avoid type errors
export type ITeamProjectWorkItemsFilter = IProjectIssuesFilter;

// @ts-nocheck - This class will never be used, extending similar class to avoid type errors
export class TeamProjectWorkItemsFilter extends ProjectIssuesFilter implements ITeamProjectWorkItemsFilter {
constructor(_rootStore: IIssueRootStore) {
super(_rootStore);
}
}
2 changes: 2 additions & 0 deletions apps/web/ce/store/issue/team-project/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from "./filter.store";
export * from "./issue.store";
13 changes: 13 additions & 0 deletions apps/web/ce/store/issue/team-project/issue.store.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { IProjectIssues, ProjectIssues } from "@/store/issue/project";
import { IIssueRootStore } from "@/store/issue/root.store";
import { ITeamProjectWorkItemsFilter } from "./filter.store";

// @ts-nocheck - This class will never be used, extending similar class to avoid type errors
export type ITeamProjectWorkItems = IProjectIssues;

// @ts-nocheck - This class will never be used, extending similar class to avoid type errors
export class TeamProjectWorkItems extends ProjectIssues implements ITeamProjectWorkItems {
constructor(_rootStore: IIssueRootStore, teamProjectWorkItemsFilterStore: ITeamProjectWorkItemsFilter) {
super(_rootStore, teamProjectWorkItemsFilterStore);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// plane web components
import { EIssuesStoreType } from "@plane/types";
import { TeamEmptyState, TeamViewEmptyState } from "@/plane-web/components/issues/issue-layouts/empty-states";
import { TeamProjectWorkItemEmptyState } from "@/plane-web/components/issues/issue-layouts/empty-states/team-project";
// components
import { ProjectArchivedEmptyState } from "./archived-issues";
import { CycleEmptyState } from "./cycle";
Expand Down Expand Up @@ -40,6 +41,8 @@ export const IssueLayoutEmptyState = (props: Props) => {
return <TeamEmptyState />;
case EIssuesStoreType.TEAM_VIEW:
return <TeamViewEmptyState />;
case EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS:
return <TeamProjectWorkItemEmptyState />;
default:
return null;
}
Expand Down
10 changes: 10 additions & 0 deletions apps/web/core/hooks/store/use-issues.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { StoreContext } from "@/lib/store-context";
import { IProjectEpics, IProjectEpicsFilter } from "@/plane-web/store/issue/epic";
// types
import { ITeamIssues, ITeamIssuesFilter } from "@/plane-web/store/issue/team";
import { ITeamProjectWorkItemsFilter, ITeamProjectWorkItems } from "@/plane-web/store/issue/team-project";
import { ITeamViewIssues, ITeamViewIssuesFilter } from "@/plane-web/store/issue/team-views";
import { IWorkspaceIssues } from "@/plane-web/store/issue/workspace/issue.store";
import { IArchivedIssues, IArchivedIssuesFilter } from "@/store/issue/archived";
Expand Down Expand Up @@ -76,6 +77,10 @@ export type TStoreIssues = {
issues: IProjectEpics;
issuesFilter: IProjectEpicsFilter;
};
[EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS]: defaultIssueStore & {
issues: ITeamProjectWorkItems;
issuesFilter: ITeamProjectWorkItemsFilter;
};
};

export const useIssues = <T extends EIssuesStoreType>(storeType?: T): TStoreIssues[T] => {
Expand Down Expand Up @@ -147,6 +152,11 @@ export const useIssues = <T extends EIssuesStoreType>(storeType?: T): TStoreIssu
issues: context.issue.projectEpics,
issuesFilter: context.issue.projectEpicsFilter,
}) as TStoreIssues[T];
case EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS:
return merge(defaultStore, {
issues: context.issue.teamProjectWorkItems,
issuesFilter: context.issue.teamProjectWorkItemsFilter,
}) as TStoreIssues[T];
default:
return merge(defaultStore, {
issues: context.issue.projectIssues,
Expand Down
3 changes: 2 additions & 1 deletion apps/web/core/hooks/use-group-dragndrop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ type DNDStoreType =
| EIssuesStoreType.WORKSPACE_DRAFT
| EIssuesStoreType.TEAM
| EIssuesStoreType.TEAM_VIEW
| EIssuesStoreType.EPIC;
| EIssuesStoreType.EPIC
| EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS;

export const useGroupIssuesDragNDrop = (
storeType: DNDStoreType,
Expand Down
6 changes: 4 additions & 2 deletions apps/web/core/hooks/use-issue-layout-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ export const useIssueStoreType = () => {

if (userId) return EIssuesStoreType.PROFILE;

if (teamspaceId && viewId) return EIssuesStoreType.TEAM_VIEW;

if (teamspaceId && projectId) return EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS;

if (viewId) return EIssuesStoreType.PROJECT_VIEW;

if (cycleId) return EIssuesStoreType.CYCLE;
Expand All @@ -29,8 +33,6 @@ export const useIssueStoreType = () => {

if (teamspaceId) return EIssuesStoreType.TEAM;

if (teamspaceId && viewId) return EIssuesStoreType.TEAM_VIEW;

return EIssuesStoreType.PROJECT;
};

Expand Down
9 changes: 8 additions & 1 deletion apps/web/core/hooks/use-issues-actions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@ import {
TLoader,
TProfileViews,
} from "@plane/types";
import { useTeamIssueActions, useTeamViewIssueActions } from "@/plane-web/helpers/issue-action-helper";
import {
useTeamIssueActions,
useTeamViewIssueActions,
useTeamProjectWorkItemsActions,
} from "@/plane-web/helpers/issue-action-helper";
import { useIssues } from "./store";

export interface IssueActions {
Expand Down Expand Up @@ -51,6 +55,7 @@ export const useIssuesActions = (storeType: EIssuesStoreType): IssueActions => {
const draftIssueActions = useDraftIssueActions();
const archivedIssueActions = useArchivedIssueActions();
const workspaceDraftIssueActions = useWorkspaceDraftIssueActions();
const teamProjectWorkItemsActions = useTeamProjectWorkItemsActions();

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can import a function from plane-web for additional properties for better abstraction

switch (storeType) {
case EIssuesStoreType.TEAM_VIEW:
Expand All @@ -76,6 +81,8 @@ export const useIssuesActions = (storeType: EIssuesStoreType): IssueActions => {
return workspaceDraftIssueActions;
case EIssuesStoreType.EPIC:
return projectEpicsActions;
case EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS:
return teamProjectWorkItemsActions;
case EIssuesStoreType.PROJECT:
default:
return projectIssueActions;
Expand Down
14 changes: 14 additions & 0 deletions apps/web/core/store/issue/root.store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ import {
import { IProjectEpics, IProjectEpicsFilter, ProjectEpics, ProjectEpicsFilter } from "@/plane-web/store/issue/epic";
import { IIssueDetail, IssueDetail } from "@/plane-web/store/issue/issue-details/root.store";
import { ITeamIssuesFilter, ITeamIssues, TeamIssues, TeamIssuesFilter } from "@/plane-web/store/issue/team";
import {
ITeamProjectWorkItemsFilter,
TeamProjectWorkItemsFilter,
} from "@/plane-web/store/issue/team-project/filter.store";
import { ITeamProjectWorkItems, TeamProjectWorkItems } from "@/plane-web/store/issue/team-project/issue.store";
import {
ITeamViewIssues,
ITeamViewIssuesFilter,
Expand Down Expand Up @@ -101,6 +106,9 @@ export interface IIssueRootStore {
teamViewIssuesFilter: ITeamViewIssuesFilter;
teamViewIssues: ITeamViewIssues;

teamProjectWorkItemsFilter: ITeamProjectWorkItemsFilter;
teamProjectWorkItems: ITeamProjectWorkItems;

projectViewIssuesFilter: IProjectViewIssuesFilter;
projectViewIssues: IProjectViewIssues;

Expand Down Expand Up @@ -172,6 +180,9 @@ export class IssueRootStore implements IIssueRootStore {
projectViewIssuesFilter: IProjectViewIssuesFilter;
projectViewIssues: IProjectViewIssues;

teamProjectWorkItemsFilter: ITeamProjectWorkItemsFilter;
teamProjectWorkItems: ITeamProjectWorkItems;

archivedIssuesFilter: IArchivedIssuesFilter;
archivedIssues: IArchivedIssues;

Expand Down Expand Up @@ -263,6 +274,9 @@ export class IssueRootStore implements IIssueRootStore {
this.projectViewIssuesFilter = new ProjectViewIssuesFilter(this);
this.projectViewIssues = new ProjectViewIssues(this, this.projectViewIssuesFilter);

this.teamProjectWorkItemsFilter = new TeamProjectWorkItemsFilter(this);
this.teamProjectWorkItems = new TeamProjectWorkItems(this, this.teamProjectWorkItemsFilter);

this.archivedIssuesFilter = new ArchivedIssuesFilter(this);
this.archivedIssues = new ArchivedIssues(this, this.archivedIssuesFilter);

Expand Down
3 changes: 2 additions & 1 deletion packages/constants/src/issue/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,8 @@ export type TCreateModalStoreTypes =
| EIssuesStoreType.PROFILE
| EIssuesStoreType.CYCLE
| EIssuesStoreType.MODULE
| EIssuesStoreType.EPIC;
| EIssuesStoreType.EPIC
| EIssuesStoreType.TEAM_PROJECT_WORK_ITEMS;

export const ISSUE_GROUP_BY_OPTIONS: {
key: TIssueGroupByOptions;
Expand Down
1 change: 1 addition & 0 deletions packages/types/src/issues/issue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export enum EIssuesStoreType {
DEFAULT = "DEFAULT",
WORKSPACE_DRAFT = "WORKSPACE_DRAFT",
EPIC = "EPIC",
TEAM_PROJECT_WORK_ITEMS = "TEAM_PROJECT_WORK_ITEMS",
}

export type TBaseIssue = {
Expand Down
9 changes: 8 additions & 1 deletion packages/utils/src/work-item/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,14 @@ export const handleIssuesMutation: THandleIssuesMutation = (

export const handleIssueQueryParamsByLayout = (
layout: EIssueLayoutTypes | undefined,
viewType: "my_issues" | "issues" | "profile_issues" | "archived_issues" | "draft_issues" | "team_issues"
viewType:
| "my_issues"
| "issues"
| "profile_issues"
| "archived_issues"
| "draft_issues"
| "team_issues"
| "team_project_work_items"
): TIssueParams[] | null => {
const queryParams: TIssueParams[] = [];

Expand Down
Loading