fix profile draft and archived issues

This commit is contained in:
rahulramesha 2023-11-28 17:43:52 +05:30
parent edd1f6e423
commit 1fadcdd1f4
4 changed files with 45 additions and 34 deletions

View File

@ -1,12 +1,8 @@
import React, { ReactElement } from "react"; import React from "react";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import useSWR from "swr"; import useSWR from "swr";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
// layouts
import { AppLayout } from "layouts/app-layout";
import { ProfileAuthWrapper } from "layouts/user-profile-layout";
// components // components
import { UserProfileHeader } from "components/headers";
import { ProfileIssuesListLayout } from "components/issues/issue-layouts/list/roots/profile-issues-root"; import { ProfileIssuesListLayout } from "components/issues/issue-layouts/list/roots/profile-issues-root";
import { ProfileIssuesKanBanLayout } from "components/issues/issue-layouts/kanban/roots/profile-issues-root"; import { ProfileIssuesKanBanLayout } from "components/issues/issue-layouts/kanban/roots/profile-issues-root";
import { ProfileIssuesAppliedFiltersRoot } from "components/issues"; import { ProfileIssuesAppliedFiltersRoot } from "components/issues";
@ -31,12 +27,15 @@ export const ProfileIssuesPage = observer((props: IProfileIssuesPage) => {
workspaceProfileIssuesFilter: { issueFilters, fetchFilters }, workspaceProfileIssuesFilter: { issueFilters, fetchFilters },
}: RootStore = useMobxStore(); }: RootStore = useMobxStore();
useSWR(workspaceSlug && userId ? `CURRENT_WORKSPACE_PROFILE_ISSUES_${workspaceSlug}_${userId}` : null, async () => { useSWR(
workspaceSlug && userId ? `CURRENT_WORKSPACE_PROFILE_ISSUES_${workspaceSlug}_${userId}_${props.type}` : null,
async () => {
if (workspaceSlug && userId) { if (workspaceSlug && userId) {
await fetchFilters(workspaceSlug); await fetchFilters(workspaceSlug);
await fetchIssues(workspaceSlug, userId, getIssues ? "mutation" : "init-loader", props.type); await fetchIssues(workspaceSlug, userId, getIssues ? "mutation" : "init-loader", props.type);
} }
}); }
);
const activeLayout = issueFilters?.displayFilters?.layout || undefined; const activeLayout = issueFilters?.displayFilters?.layout || undefined;

View File

@ -5,7 +5,7 @@ import { IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueFilterOption
import { EFilterType } from "store/issues/types"; import { EFilterType } from "store/issues/types";
import { handleIssueQueryParamsByLayout } from "helpers/issue.helper"; import { handleIssueQueryParamsByLayout } from "helpers/issue.helper";
import { IssueFilterBaseStore } from "../project-issues/base-issue-filter.store"; import { IssueFilterBaseStore } from "../project-issues/base-issue-filter.store";
import { isEmpty } from "lodash"; import isEmpty from "lodash/isEmpty";
interface IProjectIssuesFiltersOptions { interface IProjectIssuesFiltersOptions {
filters: IIssueFilterOptions; filters: IIssueFilterOptions;
@ -199,14 +199,14 @@ export class ProfileIssuesFilterStore extends IssueFilterBaseStore implements IP
try { try {
const displayProperties: IIssueDisplayProperties = { const displayProperties: IIssueDisplayProperties = {
assignee: true, assignee: true,
start_date: true, start_date: false,
due_date: true, due_date: false,
labels: false, labels: true,
key: false, key: true,
priority: true, priority: true,
state: false, state: false,
sub_issue_count: true, sub_issue_count: false,
link: true, link: false,
attachment_count: false, attachment_count: false,
estimate: false, estimate: false,
created_on: false, created_on: false,

View File

@ -19,7 +19,7 @@ export interface IProfileIssuesStore {
loader: TLoader; loader: TLoader;
issues: { [user_id: string]: IProfileIssueTabTypes } | undefined; issues: { [user_id: string]: IProfileIssueTabTypes } | undefined;
currentUserId: string | null; currentUserId: string | null;
currentUserIssueTab: "assigned" | "created" | "subscribed" | null; currentUserIssueTab: "assigned" | "created" | "subscribed" | undefined;
// computed // computed
getIssues: IIssueResponse | undefined; getIssues: IIssueResponse | undefined;
getIssuesIds: IGroupedIssues | ISubGroupedIssues | TUnGroupedIssues | undefined; getIssuesIds: IGroupedIssues | ISubGroupedIssues | TUnGroupedIssues | undefined;
@ -51,7 +51,7 @@ export class ProfileIssuesStore extends IssueBaseStore implements IProfileIssues
loader: TLoader = "init-loader"; loader: TLoader = "init-loader";
issues: { [user_id: string]: IProfileIssueTabTypes } | undefined = undefined; issues: { [user_id: string]: IProfileIssueTabTypes } | undefined = undefined;
currentUserId: string | null = null; currentUserId: string | null = null;
currentUserIssueTab: "assigned" | "created" | "subscribed" | null = null; currentUserIssueTab: "assigned" | "created" | "subscribed" | undefined = undefined;
// root store // root store
rootStore; rootStore;
// service // service
@ -86,7 +86,9 @@ export class ProfileIssuesStore extends IssueBaseStore implements IProfileIssues
if (!workspaceSlug || !this.currentUserId || !this.currentUserIssueTab) return; if (!workspaceSlug || !this.currentUserId || !this.currentUserIssueTab) return;
const userFilters = this.rootStore?.workspaceProfileIssuesFilter?.issueFilters?.filters; const userFilters = this.rootStore?.workspaceProfileIssuesFilter?.issueFilters?.filters;
if (userFilters) this.fetchIssues(workspaceSlug, this.currentUserId, "mutation", this.currentUserIssueTab); if (userFilters) {
this.fetchIssues(workspaceSlug, this.currentUserId, "mutation", this.currentUserIssueTab);
}
}); });
} }
@ -196,20 +198,12 @@ export class ProfileIssuesStore extends IssueBaseStore implements IProfileIssues
createIssue = async (workspaceSlug: string, userId: string, data: Partial<IIssue>) => { createIssue = async (workspaceSlug: string, userId: string, data: Partial<IIssue>) => {
try { try {
const projectId = data.project; const projectId = data.project;
const moduleId = data.module_id;
const cycleId = data.cycle_id;
if (!projectId) return; if (!projectId) return;
let response = {} as IIssue; let response = {} as IIssue;
response = await this.rootStore.projectIssues.createIssue(workspaceSlug, projectId, data); response = await this.rootStore.projectIssues.createIssue(workspaceSlug, projectId, data);
// if (moduleId)
// response = await this.rootStore.moduleIssues.addIssueToModule(workspaceSlug, projectId, moduleId, response);
// if (cycleId)
// response = await this.rootStore.cycleIssues.addIssueToCycle(workspaceSlug, projectId, cycleId, response);
let _issues = this.issues; let _issues = this.issues;
if (!_issues) _issues = {}; if (!_issues) _issues = {};
if (!_issues[userId]) _issues[userId] = { assigned: {}, created: {}, subscribed: {} }; if (!_issues[userId]) _issues[userId] = { assigned: {}, created: {}, subscribed: {} };
@ -237,8 +231,8 @@ export class ProfileIssuesStore extends IssueBaseStore implements IProfileIssues
let _issues = { ...this.issues }; let _issues = { ...this.issues };
if (!_issues) _issues = {}; if (!_issues) _issues = {};
if (!_issues[userId]) _issues[userId] = { assigned: {}, created: {}, subscribed: {} }; if (!_issues[userId]) _issues[userId] = { assigned: {}, created: {}, subscribed: {} };
_issues[projectId][this.currentUserIssueTab][userId] = { _issues[userId][this.currentUserIssueTab][userId] = {
..._issues[projectId][this.currentUserIssueTab][userId], ..._issues[userId][this.currentUserIssueTab][userId],
...data, ...data,
}; };

View File

@ -119,8 +119,17 @@ export class ProjectArchivedIssuesStore extends IssueBaseStore implements IProje
removeIssue = async (workspaceSlug: string, projectId: string, issueId: string) => { removeIssue = async (workspaceSlug: string, projectId: string, issueId: string) => {
try { try {
await this.archivedIssueService.unarchiveIssue(workspaceSlug, projectId, issueId); let _issues = { ...this.issues };
return; if (!_issues) _issues = {};
if (!_issues[projectId]) _issues[projectId] = {};
delete _issues?.[projectId]?.[issueId];
runInAction(() => {
this.issues = _issues;
});
const response = await this.archivedIssueService.deleteArchivedIssue(workspaceSlug, projectId, issueId);
return response;
} catch (error) { } catch (error) {
throw error; throw error;
} }
@ -128,8 +137,17 @@ export class ProjectArchivedIssuesStore extends IssueBaseStore implements IProje
removeIssueFromArchived = async (workspaceSlug: string, projectId: string, issueId: string) => { removeIssueFromArchived = async (workspaceSlug: string, projectId: string, issueId: string) => {
try { try {
await this.archivedIssueService.deleteArchivedIssue(workspaceSlug, projectId, issueId); let _issues = { ...this.issues };
return; if (!_issues) _issues = {};
if (!_issues[projectId]) _issues[projectId] = {};
delete _issues?.[projectId]?.[issueId];
runInAction(() => {
this.issues = _issues;
});
const response = await this.archivedIssueService.unarchiveIssue(workspaceSlug, projectId, issueId);
return response;
} catch (error) { } catch (error) {
throw error; throw error;
} }