* fix: dashboard issue stats * chore: code refactor
This commit is contained in:
parent
c44bf861e0
commit
99a7867a5e
5 changed files with 19 additions and 29 deletions
1
packages/types/src/dashboard.d.ts
vendored
1
packages/types/src/dashboard.d.ts
vendored
|
|
@ -109,6 +109,7 @@ export type TWidgetIssue = TIssue & {
|
|||
project_id: string;
|
||||
relation_type: TIssueRelationTypes;
|
||||
sequence_id: number;
|
||||
type_id: string | null;
|
||||
}[];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -68,8 +68,10 @@ export const AssignedUpcomingIssueListItem: React.FC<IssueListItemProps> = obser
|
|||
? `${blockedByIssues.length} blockers`
|
||||
: blockedByIssueProjectDetails && (
|
||||
<IssueIdentifier
|
||||
issueId={blockedByIssues[0]?.id}
|
||||
projectIdentifier={blockedByIssueProjectDetails?.identifier}
|
||||
projectId={blockedByIssueProjectDetails?.id}
|
||||
issueSequenceId={blockedByIssues[0]?.sequence_id}
|
||||
issueTypeId={blockedByIssues[0]?.type_id}
|
||||
textContainerClassName="text-xs text-custom-text-200 font-medium"
|
||||
/>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -20,17 +20,10 @@ interface IIssuePeekOverview {
|
|||
embedRemoveCurrentNotification?: () => void;
|
||||
is_archived?: boolean;
|
||||
is_draft?: boolean;
|
||||
shouldReplaceIssueOnFetch?: boolean;
|
||||
}
|
||||
|
||||
export const IssuePeekOverview: FC<IIssuePeekOverview> = observer((props) => {
|
||||
const {
|
||||
embedIssue = false,
|
||||
embedRemoveCurrentNotification,
|
||||
is_archived = false,
|
||||
is_draft = false,
|
||||
shouldReplaceIssueOnFetch = true,
|
||||
} = props;
|
||||
const { embedIssue = false, embedRemoveCurrentNotification, is_archived = false, is_draft = false } = props;
|
||||
// router
|
||||
const pathname = usePathname();
|
||||
const {
|
||||
|
|
@ -67,8 +60,7 @@ export const IssuePeekOverview: FC<IIssuePeekOverview> = observer((props) => {
|
|||
workspaceSlug,
|
||||
projectId,
|
||||
issueId,
|
||||
is_archived ? "ARCHIVED" : is_draft ? "DRAFT" : "DEFAULT",
|
||||
shouldReplaceIssueOnFetch
|
||||
is_archived ? "ARCHIVED" : is_draft ? "DRAFT" : "DEFAULT"
|
||||
);
|
||||
setLoader(false);
|
||||
setError(false);
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ export interface IIssueStoreActions {
|
|||
workspaceSlug: string,
|
||||
projectId: string,
|
||||
issueId: string,
|
||||
issueType?: "DEFAULT" | "DRAFT" | "ARCHIVED",
|
||||
shouldReplace?: boolean
|
||||
issueType?: "DEFAULT" | "DRAFT" | "ARCHIVED"
|
||||
) => Promise<TIssue>;
|
||||
updateIssue: (workspaceSlug: string, projectId: string, issueId: string, data: Partial<TIssue>) => Promise<void>;
|
||||
removeIssue: (workspaceSlug: string, projectId: string, issueId: string) => Promise<void>;
|
||||
|
|
@ -62,13 +61,7 @@ export class IssueStore implements IIssueStore {
|
|||
});
|
||||
|
||||
// actions
|
||||
fetchIssue = async (
|
||||
workspaceSlug: string,
|
||||
projectId: string,
|
||||
issueId: string,
|
||||
issueType = "DEFAULT",
|
||||
shouldReplace = true
|
||||
) => {
|
||||
fetchIssue = async (workspaceSlug: string, projectId: string, issueId: string, issueType = "DEFAULT") => {
|
||||
const query = {
|
||||
expand: "issue_reactions,issue_attachment,issue_link,parent",
|
||||
};
|
||||
|
|
@ -114,7 +107,7 @@ export class IssueStore implements IIssueStore {
|
|||
is_subscribed: issue?.is_subscribed,
|
||||
};
|
||||
|
||||
this.rootIssueDetailStore.rootIssueStore.issues.addIssue([issuePayload], shouldReplace);
|
||||
this.rootIssueDetailStore.rootIssueStore.issues.addIssue([issuePayload]);
|
||||
|
||||
// store handlers from issue detail
|
||||
// parent
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import update from "lodash/update";
|
||||
import isEmpty from "lodash/isEmpty";
|
||||
import set from "lodash/set";
|
||||
import { action, makeObservable, observable, runInAction } from "mobx";
|
||||
|
|
@ -14,7 +15,7 @@ export type IIssueStore = {
|
|||
issuesMap: Record<string, TIssue>; // Record defines issue_id as key and TIssue as value
|
||||
// actions
|
||||
getIssues(workspaceSlug: string, projectId: string, issueIds: string[]): Promise<TIssue[]>;
|
||||
addIssue(issues: TIssue[], shouldReplace?: boolean): void;
|
||||
addIssue(issues: TIssue[]): void;
|
||||
updateIssue(issueId: string, issue: Partial<TIssue>): void;
|
||||
removeIssue(issueId: string): void;
|
||||
// helper methods
|
||||
|
|
@ -47,11 +48,12 @@ export class IssueStore implements IIssueStore {
|
|||
* @param {TIssue[]} issues
|
||||
* @returns {void}
|
||||
*/
|
||||
addIssue = (issues: TIssue[], shouldReplace = false) => {
|
||||
addIssue = (issues: TIssue[]) => {
|
||||
if (issues && issues.length <= 0) return;
|
||||
runInAction(() => {
|
||||
issues.forEach((issue) => {
|
||||
if (!this.issuesMap[issue.id] || shouldReplace) set(this.issuesMap, issue.id, issue);
|
||||
if (!this.issuesMap[issue.id]) set(this.issuesMap, issue.id, issue);
|
||||
else update(this.issuesMap, issue.id, (prevIssue) => ({ ...prevIssue, ...issue }));
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue