-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: added workspaceslug in renderChildren of project settings #5951
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,41 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import React, { forwardRef } from "react"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// editor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { EditorRefApi, IMentionHighlight, IRichTextEditor, RichTextEditorWithRef } from "@plane/editor"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// helpers | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { cn } from "@/helpers/common.helper"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { getEditorFileHandlers } from "@/helpers/editor.helper"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
interface RichTextEditorWrapperProps extends Omit<IRichTextEditor, "fileHandler" | "mentionHandler"> { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadFile: (file: File) => Promise<string>; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
export const RichTextEditor = forwardRef<EditorRefApi, RichTextEditorWrapperProps>((props, ref) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const { containerClassName, uploadFile, ...rest } = props; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// store hooks | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// use-mention | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// file size | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<RichTextEditorWithRef | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mentionHandler={{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
highlights: function (): Promise<IMentionHighlight[]> { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
throw new Error("Function not implemented."); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
suggestions: undefined, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ref={ref} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fileHandler={getEditorFileHandlers({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadFile, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
workspaceId: "", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
anchor: "", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
})} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+30
to
+34
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Empty workspaceId and anchor parameters will cause file operations to fail Based on the editor helper implementation, both
The
Example locations requiring fixes:
🔗 Analysis chainVerify workspaceId and anchor parameters. Empty strings are being passed for 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Check if these parameters are used meaningfully in the editor file handlers
rg -A 5 "workspaceId|anchor" "$(fd -t f "editor.helper")"
Length of output: 217 Script: #!/bin/bash
# Let's check the content of the editor helper file
cat space/helpers/editor.helper.ts
Length of output: 2257 Script: #!/bin/bash
# Let's also check where getEditorFileHandlers is used and its implementation
ast-grep --pattern 'getEditorFileHandlers'
Length of output: 1417 Script: #!/bin/bash
# Search for any file upload related functionality
rg -A 5 "uploadFile.*workspaceId|anchor.*upload"
Length of output: 774 Script: #!/bin/bash
# Let's check the implementation of rich-text-editor.tsx to see how these parameters should be passed
cat space/core/components/editor/rich-text-editor.tsx
Length of output: 1232 Script: #!/bin/bash
# Let's also check other implementations to see how they handle these parameters
rg -l "workspaceId.*anchor.*uploadFile" space/core/components/editor/
Length of output: 71 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{...rest} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
containerClassName={cn("relative pl-3 pb-3", containerClassName)} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+13
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add error handling for file uploads. The export const RichTextEditor = forwardRef<EditorRefApi, RichTextEditorWrapperProps>((props, ref) => {
const { containerClassName, uploadFile, ...rest } = props;
- // store hooks
-
- // use-mention
-
- // file size
+ const handleFileUpload = async (file: File): Promise<string> => {
+ try {
+ return await uploadFile(file);
+ } catch (error) {
+ console.error('File upload failed:', error);
+ throw new Error('Failed to upload file. Please try again.');
+ }
+ };
return (
<RichTextEditorWithRef
mentionHandler={{...}}
ref={ref}
fileHandler={getEditorFileHandlers({
- uploadFile,
+ uploadFile: handleFileUpload,
workspaceId: "",
anchor: "",
})}
{...rest}
containerClassName={cn("relative pl-3 pb-3", containerClassName)}
/>
);
}); 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RichTextEditor.displayName = "RichTextEditor"; |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -36,6 +36,7 @@ export interface IIssueDetailStore { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
updateIssueComment: (anchor: string, issueID: string, commentID: string, data: any) => Promise<any>; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleteIssueComment: (anchor: string, issueID: string, commentID: string) => void; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadCommentAsset: (file: File, anchor: string, commentID?: string) => Promise<TFileSignedURLResponse>; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadIssueAsset: (file: File, anchor: string, commentID?: string) => Promise<TFileSignedURLResponse>; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addCommentReaction: (anchor: string, issueID: string, commentID: string, reactionHex: string) => void; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
removeCommentReaction: (anchor: string, issueID: string, commentID: string, reactionHex: string) => void; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// reaction actions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -79,6 +80,7 @@ export class IssueDetailStore implements IIssueDetailStore { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
updateIssueComment: action, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
deleteIssueComment: action, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadCommentAsset: action, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadIssueAsset: action, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addCommentReaction: action, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
removeCommentReaction: action, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// reaction actions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -245,6 +247,23 @@ export class IssueDetailStore implements IIssueDetailStore { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uploadIssueAsset = async (file: File, anchor: string, commentID?: string) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const res = await this.fileService.uploadAsset( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
anchor, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
entity_identifier: commentID ?? "", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
entity_type: EFileAssetType.ISSUE_ATTACHMENT, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
file | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return res; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} catch (error) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.log("Error in uploading comment asset:", error); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
throw new Error("Asset upload failed. Please try again later."); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+250
to
+265
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve error handling and message accuracy. Several improvements can be made to enhance reliability and maintainability:
Consider applying these changes: uploadIssueAsset = async (file: File, anchor: string, commentID?: string) => {
try {
const res = await this.fileService.uploadAsset(
anchor,
{
- entity_identifier: commentID ?? "",
+ entity_identifier: commentID || "",
entity_type: EFileAssetType.ISSUE_ATTACHMENT,
},
file
);
return res;
} catch (error) {
- console.log("Error in uploading comment asset:", error);
+ console.error("Error in uploading issue asset:", error);
+ if (error instanceof Error) {
+ throw error;
+ }
throw new Error("Asset upload failed. Please try again later.");
}
}; Additionally, consider adding JSDoc documentation to clarify the purpose of the 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addCommentReaction = async (anchor: string, issueID: string, commentID: string, reactionHex: string) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const newReaction = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id: uuidv4(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
export type TIntakeIssueForm = { | ||
name: string; | ||
email: string; | ||
username: string; | ||
description_html: string; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implement mention handling instead of throwing an error.
The current implementation throws an error which could cause runtime issues. Either implement the mention handling functionality or return an empty array as a safer default.
📝 Committable suggestion