Files
plane/web/ee/store/root.store.ts
Akshita Goyal 282e3e3e3b [WEB-3536] Feat: epic and initiative updates tab (#2837)
* feat: epic updates wip

* feat: create endpoint for epic update

* feat: delete, get, update endpoint for epic updates

* feat: comments endpoint

* feat: update reaction endpoints

* refactor: code refactor

* wip: epic updates

* fix: epic update minor bug fixes

* WIP

* feat: endpoint to list updates

* feat: patch and delete endpoint for update
feat: get and post for comments
feat: post adn delete for reactions

* chore: use EntityTypeEnum instead of hardcoding

* fix: add cancelled issues count

* chore: return project and epic details

* refactor: fetching project and epic details

* feat: initiative updates

* fix: i18n changes

* fix: i18n changes

* fix: i18n

* fix: initiative updates

* fix: translations + reaction bug

* feat: filter based on status

* fix: removed updates for initiatives

* fix: initiative updates

* chore: added updates in initiative analytics

* fix: refactor

* chore: optimised the initiative updates query

* chore: added description_html

* fix: refactor

* fix: list view on click

* fix: return only latest record

* fix: handled epic and project addition and deletion

* fix: build

* fix: popover component

* fix: latest updates returning all status's latest one

* fix: local update

* fix: text overflow issue

* fix: icon colors

* fix: update status on project attributes returning same update

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
2025-04-08 16:04:49 +05:30

214 lines
8.5 KiB
TypeScript

// plane web store
import { IIssuePropertiesActivityStore, IIssueTypesStore } from "@plane/types";
import {
CustomerProperties,
CustomerStore,
ICustomerPropertiesStore,
ICustomersStore,
} from "@/plane-web/store/customers";
import { ICycleStore, CycleStore } from "@/plane-web/store/cycle";
import { FeatureFlagsStore, IFeatureFlagsStore } from "@/plane-web/store/feature-flags/feature-flags.store";
import { IssuePropertiesActivityStore, IssueTypes } from "@/plane-web/store/issue-types";
import {
IWorkspaceNotificationStore,
WorkspaceNotificationStore,
} from "@/plane-web/store/notifications/notifications.store";
import { IPublishPageStore, PublishPageStore } from "@/plane-web/store/pages/publish-page.store";
import { IWorkspacePageStore, WorkspacePageStore } from "@/plane-web/store/pages/workspace-page.store";
import {
ISelfHostedSubscriptionStore,
SelfHostedSubscriptionStore,
} from "@/plane-web/store/subscription/self-hosted-subscription.store";
import {
IWorkspaceSubscriptionStore,
WorkspaceSubscriptionStore,
} from "@/plane-web/store/subscription/subscription.store";
import { ITeamspaceRootStore, TeamspaceRootStore } from "@/plane-web/store/teamspace";
import { TimeLineStore } from "@/plane-web/store/timeline";
import { IWorkspaceFeatureStore, WorkspaceFeatureStore } from "@/plane-web/store/workspace-feature.store";
import {
IProjectFilterStore,
ProjectFilterStore,
IWorkspaceProjectStatesStore,
WorkspaceProjectStatesStore,
} from "@/plane-web/store/workspace-project-states";
import {
IWorkspaceWorklogStore,
WorkspaceWorklogStore,
IWorkspaceWorklogDownloadStore,
WorkspaceWorklogDownloadStore,
} from "@/plane-web/store/workspace-worklog";
// store
import { CoreRootStore } from "@/store/root.store";
// dashboards
import { BaseDashboardsStore, IBaseDashboardsStore } from "./dashboards/base-dashboards.store";
// importers
import {
IJiraStore,
JiraStore,
IJiraServerStore,
JiraServerStore,
ILinearStore,
IFlatfileStore,
LinearStore,
IAsanaStore,
AsanaStore,
FlatfileStore,
} from "./importers";
// initiative
import { IInitiativeFilterStore, InitiativeFilterStore } from "./initiatives/initiatives-filter.store";
import { IInitiativeStore, InitiativeStore } from "./initiatives/initiatives.store";
// integrations
import {
ISlackStore,
SlackStore,
IGithubStore,
GithubStore,
IGitlabStore,
GitlabStore,
IConnectionStore,
ConnectionStore,
} from "./integrations";
// pi chat
import { EpicAnalytics, IEpicAnalyticStore } from "./issue/epic/analytic.store";
import { EpicBaseStore, IEpicBaseStore } from "./issue/epic/base.store";
import { IPiChatStore, PiChatStore } from "./pi-chat/pi-chat";
// timeline
import { IProjectInboxStore, ProjectInboxStore } from "./project-inbox.store";
import { IProjectStore, ProjectStore } from "./projects/projects";
// templates
import { ITemplatesRootStore, TemplatesRootStore } from "./templates/store/root.store";
// timeline
import { ITimelineStore } from "./timeline";
export class RootStore extends CoreRootStore {
workspacePages: IWorkspacePageStore;
publishPage: IPublishPageStore;
workspaceSubscription: IWorkspaceSubscriptionStore;
workspaceWorklogs: IWorkspaceWorklogStore;
workspaceWorklogDownloads: IWorkspaceWorklogDownloadStore;
featureFlags: IFeatureFlagsStore;
selfHostedSubscription: ISelfHostedSubscriptionStore;
workspaceFeatures: IWorkspaceFeatureStore;
workspaceProjectStates: IWorkspaceProjectStatesStore;
projectFilter: IProjectFilterStore;
issueTypes: IIssueTypesStore;
issuePropertiesActivity: IIssuePropertiesActivityStore;
cycle: ICycleStore;
piChat: IPiChatStore;
timelineStore: ITimelineStore;
projectDetails: IProjectStore;
teamspaceRoot: ITeamspaceRootStore;
workspaceNotification: IWorkspaceNotificationStore;
projectInbox: IProjectInboxStore;
customersStore: ICustomersStore;
customerPropertiesStore: ICustomerPropertiesStore;
// importers
jiraImporter: IJiraStore;
jiraServerImporter: IJiraServerStore;
linearImporter: ILinearStore;
asanaImporter: IAsanaStore;
flatfileImporter: IFlatfileStore;
// integrations
connections: IConnectionStore;
slackIntegration: ISlackStore;
githubIntegration: IGithubStore;
gitlabIntegration: IGitlabStore;
initiativeFilterStore: IInitiativeFilterStore;
initiativeStore: IInitiativeStore;
// dashboards
baseDashboards: IBaseDashboardsStore;
// epics
epicAnalytics: IEpicAnalyticStore;
epicBaseStore: IEpicBaseStore;
// templates
templatesRoot: ITemplatesRootStore;
constructor() {
super();
this.workspacePages = new WorkspacePageStore(this);
this.publishPage = new PublishPageStore(this);
this.workspaceSubscription = new WorkspaceSubscriptionStore(this);
this.workspaceWorklogs = new WorkspaceWorklogStore(this);
this.workspaceWorklogDownloads = new WorkspaceWorklogDownloadStore(this);
this.featureFlags = new FeatureFlagsStore(this);
this.selfHostedSubscription = new SelfHostedSubscriptionStore(this);
this.workspaceFeatures = new WorkspaceFeatureStore(this);
this.workspaceProjectStates = new WorkspaceProjectStatesStore(this);
this.issueTypes = new IssueTypes(this);
this.issuePropertiesActivity = new IssuePropertiesActivityStore(this);
this.projectFilter = new ProjectFilterStore(this);
this.cycle = new CycleStore(this);
this.piChat = new PiChatStore(this);
this.timelineStore = new TimeLineStore(this);
this.projectDetails = new ProjectStore(this);
this.teamspaceRoot = new TeamspaceRootStore(this);
this.workspaceNotification = new WorkspaceNotificationStore(this);
this.projectInbox = new ProjectInboxStore(this);
this.customersStore = new CustomerStore(this);
this.customerPropertiesStore = new CustomerProperties(this);
// importers
this.jiraImporter = new JiraStore(this);
this.jiraServerImporter = new JiraServerStore(this);
this.linearImporter = new LinearStore(this);
this.asanaImporter = new AsanaStore(this);
this.flatfileImporter = new FlatfileStore(this);
// integrations
this.connections = new ConnectionStore(this);
this.slackIntegration = new SlackStore(this);
this.githubIntegration = new GithubStore(this);
this.gitlabIntegration = new GitlabStore(this);
this.initiativeFilterStore = new InitiativeFilterStore(this);
this.initiativeStore = new InitiativeStore(this, this.initiativeFilterStore);
// dashboards
this.baseDashboards = new BaseDashboardsStore(this);
// epics
this.epicAnalytics = new EpicAnalytics(this);
this.epicBaseStore = new EpicBaseStore(this);
// templates
this.templatesRoot = new TemplatesRootStore(this);
}
resetOnSignOut() {
super.resetOnSignOut();
this.workspacePages = new WorkspacePageStore(this);
this.publishPage = new PublishPageStore(this);
this.workspaceSubscription = new WorkspaceSubscriptionStore(this);
this.workspaceWorklogs = new WorkspaceWorklogStore(this);
this.workspaceWorklogDownloads = new WorkspaceWorklogDownloadStore(this);
this.featureFlags = new FeatureFlagsStore(this);
this.selfHostedSubscription = new SelfHostedSubscriptionStore(this);
this.workspaceFeatures = new WorkspaceFeatureStore(this);
this.workspaceProjectStates = new WorkspaceProjectStatesStore(this);
this.issueTypes = new IssueTypes(this);
this.issuePropertiesActivity = new IssuePropertiesActivityStore(this);
this.projectFilter = new ProjectFilterStore(this);
this.cycle = new CycleStore(this);
this.piChat = new PiChatStore(this);
this.timelineStore = new TimeLineStore(this);
this.projectDetails = new ProjectStore(this);
this.teamspaceRoot = new TeamspaceRootStore(this);
this.customersStore = new CustomerStore(this);
this.customerPropertiesStore = new CustomerProperties(this);
// importers
this.jiraImporter = new JiraStore(this);
this.jiraServerImporter = new JiraServerStore(this);
this.linearImporter = new LinearStore(this);
this.asanaImporter = new AsanaStore(this);
this.flatfileImporter = new FlatfileStore(this);
// integrations
this.connections = new ConnectionStore(this);
this.slackIntegration = new SlackStore(this);
this.githubIntegration = new GithubStore(this);
this.gitlabIntegration = new GitlabStore(this);
this.initiativeFilterStore = new InitiativeFilterStore(this);
this.initiativeStore = new InitiativeStore(this, this.initiativeFilterStore);
// dashboards
this.baseDashboards = new BaseDashboardsStore(this);
// epics
this.epicAnalytics = new EpicAnalytics(this);
// templates
this.templatesRoot = new TemplatesRootStore(this);
}
}