2023-12-01 07:57:16 +00:00
|
|
|
import { observable, action, makeObservable, computed } from "mobx";
|
2023-10-17 15:04:16 +00:00
|
|
|
// types
|
|
|
|
import { RootStore } from "./root";
|
|
|
|
// services
|
|
|
|
import { ProjectService } from "services/project";
|
|
|
|
import { PageService } from "services/page.service";
|
|
|
|
|
2023-11-27 08:45:33 +00:00
|
|
|
export enum EProjectStore {
|
|
|
|
PROJECT = "ProjectStore",
|
|
|
|
PROJECT_VIEW = "ProjectViewStore",
|
|
|
|
PROFILE = "ProfileStore",
|
|
|
|
MODULE = "ModuleStore",
|
|
|
|
CYCLE = "CycleStore",
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface ModalData {
|
|
|
|
store: EProjectStore;
|
|
|
|
viewId: string;
|
|
|
|
}
|
|
|
|
|
2023-10-17 15:04:16 +00:00
|
|
|
export interface ICommandPaletteStore {
|
|
|
|
isCommandPaletteOpen: boolean;
|
|
|
|
isShortcutModalOpen: boolean;
|
|
|
|
isCreateProjectModalOpen: boolean;
|
|
|
|
isCreateCycleModalOpen: boolean;
|
|
|
|
isCreateModuleModalOpen: boolean;
|
|
|
|
isCreateViewModalOpen: boolean;
|
|
|
|
isCreatePageModalOpen: boolean;
|
|
|
|
isCreateIssueModalOpen: boolean;
|
|
|
|
isDeleteIssueModalOpen: boolean;
|
|
|
|
isBulkDeleteIssueModalOpen: boolean;
|
|
|
|
|
2023-12-01 07:57:16 +00:00
|
|
|
// computed
|
|
|
|
isAnyModalOpen: boolean;
|
|
|
|
|
2023-10-17 15:04:16 +00:00
|
|
|
toggleCommandPaletteModal: (value?: boolean) => void;
|
|
|
|
toggleShortcutModal: (value?: boolean) => void;
|
|
|
|
toggleCreateProjectModal: (value?: boolean) => void;
|
|
|
|
toggleCreateCycleModal: (value?: boolean) => void;
|
|
|
|
toggleCreateViewModal: (value?: boolean) => void;
|
|
|
|
toggleCreatePageModal: (value?: boolean) => void;
|
2023-11-27 08:45:33 +00:00
|
|
|
toggleCreateIssueModal: (value?: boolean, storeType?: EProjectStore) => void;
|
2023-10-17 15:04:16 +00:00
|
|
|
toggleCreateModuleModal: (value?: boolean) => void;
|
|
|
|
toggleDeleteIssueModal: (value?: boolean) => void;
|
|
|
|
toggleBulkDeleteIssueModal: (value?: boolean) => void;
|
2023-11-27 08:45:33 +00:00
|
|
|
|
|
|
|
createIssueStoreType: EProjectStore;
|
2023-10-17 15:04:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class CommandPaletteStore implements ICommandPaletteStore {
|
|
|
|
isCommandPaletteOpen: boolean = false;
|
|
|
|
isShortcutModalOpen: boolean = false;
|
|
|
|
isCreateProjectModalOpen: boolean = false;
|
|
|
|
isCreateCycleModalOpen: boolean = false;
|
|
|
|
isCreateModuleModalOpen: boolean = false;
|
|
|
|
isCreateViewModalOpen: boolean = false;
|
|
|
|
isCreatePageModalOpen: boolean = false;
|
|
|
|
isCreateIssueModalOpen: boolean = false;
|
|
|
|
isDeleteIssueModalOpen: boolean = false;
|
|
|
|
isBulkDeleteIssueModalOpen: boolean = false;
|
|
|
|
// root store
|
|
|
|
rootStore;
|
|
|
|
// service
|
|
|
|
projectService;
|
|
|
|
pageService;
|
|
|
|
|
2023-11-27 08:45:33 +00:00
|
|
|
createIssueStoreType: EProjectStore = EProjectStore.PROJECT;
|
|
|
|
|
2023-10-17 15:04:16 +00:00
|
|
|
constructor(_rootStore: RootStore) {
|
|
|
|
makeObservable(this, {
|
|
|
|
// observable
|
|
|
|
isCommandPaletteOpen: observable.ref,
|
|
|
|
isShortcutModalOpen: observable.ref,
|
|
|
|
isCreateProjectModalOpen: observable.ref,
|
|
|
|
isCreateCycleModalOpen: observable.ref,
|
|
|
|
isCreateModuleModalOpen: observable.ref,
|
|
|
|
isCreateViewModalOpen: observable.ref,
|
|
|
|
isCreatePageModalOpen: observable.ref,
|
|
|
|
isCreateIssueModalOpen: observable.ref,
|
2023-10-23 11:54:43 +00:00
|
|
|
isDeleteIssueModalOpen: observable.ref,
|
|
|
|
isBulkDeleteIssueModalOpen: observable.ref,
|
2023-10-17 15:04:16 +00:00
|
|
|
// computed
|
2023-12-01 07:57:16 +00:00
|
|
|
isAnyModalOpen: computed,
|
2023-10-17 15:04:16 +00:00
|
|
|
// projectPages: computed,
|
|
|
|
// action
|
|
|
|
toggleCommandPaletteModal: action,
|
|
|
|
toggleShortcutModal: action,
|
|
|
|
toggleCreateProjectModal: action,
|
|
|
|
toggleCreateCycleModal: action,
|
|
|
|
toggleCreateViewModal: action,
|
|
|
|
toggleCreatePageModal: action,
|
|
|
|
toggleCreateIssueModal: action,
|
|
|
|
toggleCreateModuleModal: action,
|
2023-10-23 11:54:43 +00:00
|
|
|
toggleDeleteIssueModal: action,
|
2023-10-17 15:04:16 +00:00
|
|
|
toggleBulkDeleteIssueModal: action,
|
|
|
|
});
|
|
|
|
|
|
|
|
this.rootStore = _rootStore;
|
|
|
|
this.projectService = new ProjectService();
|
|
|
|
this.pageService = new PageService();
|
|
|
|
}
|
|
|
|
|
2023-12-01 07:57:16 +00:00
|
|
|
get isAnyModalOpen() {
|
|
|
|
return Boolean(
|
|
|
|
this.isCreateIssueModalOpen ||
|
|
|
|
this.isCreateCycleModalOpen ||
|
|
|
|
this.isCreatePageModalOpen ||
|
|
|
|
this.isCreateProjectModalOpen ||
|
|
|
|
this.isCreateModuleModalOpen ||
|
|
|
|
this.isCreateViewModalOpen ||
|
|
|
|
this.isShortcutModalOpen ||
|
|
|
|
this.isBulkDeleteIssueModalOpen ||
|
|
|
|
this.isDeleteIssueModalOpen
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2023-10-17 15:04:16 +00:00
|
|
|
toggleCommandPaletteModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isCommandPaletteOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isCommandPaletteOpen = !this.isCommandPaletteOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleShortcutModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isShortcutModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isShortcutModalOpen = !this.isShortcutModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleCreateProjectModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isCreateProjectModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isCreateProjectModalOpen = !this.isCreateProjectModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleCreateCycleModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isCreateCycleModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isCreateCycleModalOpen = !this.isCreateCycleModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleCreateViewModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isCreateViewModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isCreateViewModalOpen = !this.isCreateViewModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleCreatePageModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isCreatePageModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isCreatePageModalOpen = !this.isCreatePageModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-11-27 08:45:33 +00:00
|
|
|
toggleCreateIssueModal = (value?: boolean, storeType?: EProjectStore) => {
|
2023-10-17 15:04:16 +00:00
|
|
|
if (value) {
|
|
|
|
this.isCreateIssueModalOpen = value;
|
2023-11-27 08:45:33 +00:00
|
|
|
this.createIssueStoreType = storeType || EProjectStore.PROJECT;
|
2023-10-17 15:04:16 +00:00
|
|
|
} else {
|
|
|
|
this.isCreateIssueModalOpen = !this.isCreateIssueModalOpen;
|
2023-11-27 08:45:33 +00:00
|
|
|
this.createIssueStoreType = EProjectStore.PROJECT;
|
2023-10-17 15:04:16 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleDeleteIssueModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isDeleteIssueModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isDeleteIssueModalOpen = !this.isDeleteIssueModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleCreateModuleModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isCreateModuleModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isCreateModuleModalOpen = !this.isCreateModuleModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
toggleBulkDeleteIssueModal = (value?: boolean) => {
|
|
|
|
if (value) {
|
|
|
|
this.isBulkDeleteIssueModalOpen = value;
|
|
|
|
} else {
|
|
|
|
this.isBulkDeleteIssueModalOpen = !this.isBulkDeleteIssueModalOpen;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export default CommandPaletteStore;
|