[WEB-2228] fix: dashboard peek overview issue stats #5442 (#5560)

* fix: dashboard issue stats

* chore: code refactor
This commit is contained in:
Anmol Singh Bhatia 2024-09-09 20:37:46 +05:30 committed by GitHub
parent c44bf861e0
commit 99a7867a5e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 19 additions and 29 deletions

View file

@ -109,6 +109,7 @@ export type TWidgetIssue = TIssue & {
project_id: string;
relation_type: TIssueRelationTypes;
sequence_id: number;
type_id: string | null;
}[];
};

View file

@ -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"
/>
)

View file

@ -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);

View file

@ -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

View file

@ -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 }));
});
});
};