[WEB-2709] chore: intake issue navigation improvement (#5891)

* chore: intake issue navigation improvement

* chore: code refactor

* chore: intake issue navigation improvement

* chore: intake issue navigation improvement
This commit is contained in:
Anmol Singh Bhatia
2024-10-23 15:19:43 +05:30
committed by GitHub
parent c4421f5f97
commit cbfcbba5d1
3 changed files with 17 additions and 14 deletions

View File

@@ -67,7 +67,7 @@ export const InboxIssueMainContent: React.FC<Props> = observer((props) => {
},
update: async (_workspaceSlug: string, _projectId: string, _issueId: string, data: Partial<TIssue>) => {
try {
await inboxIssue.updateIssue(data);
await inboxIssue.updateIssue({ ...data, id: _issueId });
captureIssueEvent({
eventName: "Inbox issue updated",
payload: { ...data, state: "SUCCESS", element: "Inbox" },

View File

@@ -59,12 +59,12 @@ export const IssueDescriptionInput: FC<IssueDescriptionInputProps> = observer((p
});
const handleDescriptionFormSubmit = useCallback(
async (formData: Partial<TIssue>) => {
await issueOperations.update(workspaceSlug, projectId, issueId, {
async (formData: Partial<TIssue>, _issueId: string) => {
await issueOperations.update(workspaceSlug, projectId, _issueId, {
description_html: formData.description_html ?? "<p></p>",
});
},
[workspaceSlug, projectId, issueId, issueOperations]
[workspaceSlug, projectId, issueOperations]
);
const { getWorkspaceBySlug } = useWorkspace();
@@ -84,14 +84,17 @@ export const IssueDescriptionInput: FC<IssueDescriptionInputProps> = observer((p
});
}, [initialValue, issueId, reset]);
// ADDING handleDescriptionFormSubmit TO DEPENDENCY ARRAY PRODUCES ADVERSE EFFECTS
// TODO: Verify the exhaustive-deps warning
// eslint-disable-next-line react-hooks/exhaustive-deps
const debouncedHandleDescriptionFormSubmit = debounce(async (data: Partial<TIssue>, _issueId: string) => {
await handleDescriptionFormSubmit(data, _issueId);
setIsSubmitting("submitted");
}, 1500);
const debouncedFormSave = useCallback(
debounce(async () => {
handleSubmit(handleDescriptionFormSubmit)().finally(() => setIsSubmitting("submitted"));
}, 1500),
[handleSubmit, issueId]
(_issueId: string) =>
handleSubmit((data) => {
debouncedHandleDescriptionFormSubmit(data, _issueId);
})(),
[debouncedHandleDescriptionFormSubmit, handleSubmit]
);
return (
@@ -113,7 +116,7 @@ export const IssueDescriptionInput: FC<IssueDescriptionInputProps> = observer((p
onChange={(_description: object, description_html: string) => {
setIsSubmitting("submitting");
onChange(description_html);
debouncedFormSave();
debouncedFormSave(issueId);
}}
placeholder={
placeholder ? placeholder : (isFocused, value) => getDescriptionPlaceholder(isFocused, value)

View File

@@ -151,12 +151,12 @@ export class InboxIssueStore implements IInboxIssueStore {
updateIssue = async (issue: Partial<TIssue>) => {
const inboxIssue = clone(this.issue);
try {
if (!this.issue.id) return;
if (!issue.id) return;
Object.keys(issue).forEach((key) => {
const issueKey = key as keyof TIssue;
set(this.issue, issueKey, issue[issueKey]);
});
await this.inboxIssueService.updateIssue(this.workspaceSlug, this.projectId, this.issue.id, issue);
await this.inboxIssueService.updateIssue(this.workspaceSlug, this.projectId, issue.id, issue);
// fetching activity
this.fetchIssueActivity();
} catch {