-
Notifications
You must be signed in to change notification settings - Fork 301
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
feat: add read only marker and read only mode #1899
Conversation
WalkthroughThe changes add a new Tip 🌐 Web search-backed reviews and chat
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 1
🧹 Nitpick comments (1)
frontend/app/view/preview/preview.tsx (1)
262-290
: LGTM! Consider extracting button styles to a shared constant.The conditional rendering for buttons is well-implemented, providing clear visual feedback for different file states. However, the button styles are duplicated across conditions.
Consider extracting the common button styles to a shared constant:
+const BUTTON_BASE_STYLES = "warning border-radius-4 vertical-padding-2 horizontal-padding-10 font-size-11 font-weight-500"; + if (fileInfo.state != "hasData") { viewTextChildren.push({ elemtype: "textbutton", text: "Loading ...", - className: clsx( - `grey warning border-radius-4 vertical-padding-2 horizontal-padding-10 font-size-11 font-weight-500` - ), + className: clsx(`grey ${BUTTON_BASE_STYLES}`), onClick: () => {}, }); } else if (fileInfo.data.readonly) { viewTextChildren.push({ elemtype: "textbutton", text: "Read Only", - className: clsx( - `yellow warning border-radius-4 vertical-padding-2 horizontal-padding-10 font-size-11 font-weight-500` - ), + className: clsx(`yellow ${BUTTON_BASE_STYLES}`), onClick: () => {}, }); } else { viewTextChildren.push({ elemtype: "textbutton", text: "Save", - className: clsx( - `${saveClassName} warning border-radius-4 vertical-padding-2 horizontal-padding-10 font-size-11 font-weight-500` - ), + className: clsx(`${saveClassName} ${BUTTON_BASE_STYLES}`), onClick: () => fireAndForget(this.handleFileSave.bind(this)), }); }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
frontend/app/view/codeeditor/codeeditor.tsx
(2 hunks)frontend/app/view/preview/preview.tsx
(3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Analyze (javascript-typescript)
- GitHub Check: Analyze (go)
- GitHub Check: Build for TestDriver.ai
🔇 Additional comments (5)
frontend/app/view/codeeditor/codeeditor.tsx (3)
122-122
: LGTM!The function signature is correctly updated to include the
fileinfo
parameter, maintaining consistency with the interface.
179-179
: LGTM!The dependency array is correctly updated to include
fileinfo.readonly
, ensuring that the editor options are recalculated when the read-only status changes.
115-115
: Verify the missing import forFileInfo
type.The
FileInfo
type is used but not imported. Please ensure that the type is properly imported from its source module.Run the following script to locate the
FileInfo
type definition:frontend/app/view/preview/preview.tsx (2)
958-958
: LGTM!The
fileInfo
variable is correctly retrieved using theuseAtomValue
hook from thestatFile
atom.
1010-1010
: LGTM!The
fileinfo
prop is correctly passed to theCodeEditor
component with the retrieved file info.
@@ -169,12 +170,13 @@ export function CodeEditor({ blockId, text, language, filename, meta, onChange, | |||
|
|||
const editorOpts = useMemo(() => { | |||
const opts = defaultEditorOptions(); | |||
opts.readOnly = fileinfo.readonly; |
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.
💡 Codebase verification
Issue Found: readonly
Property Missing on FileInfo Type
Our search indicates that the FileInfo
type defined in ./frontend/types/gotypes.d.ts
does not include a readonly
property, yet it is being accessed in frontend/app/view/codeeditor/codeeditor.tsx
(line 173).
- The only properties in the
FileInfo
type arepath
,dir
,name
,notfound
, andopts
. - This discrepancy can lead to potential runtime errors when setting
opts.readOnly
based onfileinfo.readonly
.
Please update the FileInfo
type definition to include the readonly: boolean
property if that information is expected to be available at runtime.
🔗 Analysis chain
Verify the existence of readonly
property on FileInfo
type.
Please ensure that the readonly
property exists on the FileInfo
type to prevent potential runtime errors.
Run the following script to verify the property:
I'm going to re-run a search that checks for FileInfo definitions including the "readonly" property in their context. This will help ensure that we manually verify the existence (or absence) of the property.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Search for readonly property in FileInfo type/interface.
# Test: Search for readonly property in FileInfo type
ast-grep --pattern 'type FileInfo = {
$$$
readonly: boolean
$$$
}'
# Test: Search for readonly property in FileInfo interface
ast-grep --pattern 'interface FileInfo {
$$$
readonly: boolean
$$$
}'
Length of output: 152
Script:
#!/bin/bash
# Search for FileInfo definitions and include several lines of context to capture the "readonly" property.
echo "Searching FileInfo interface definitions with context:"
rg -n "interface FileInfo" --context 5 .
echo "Searching FileInfo type definitions with context:"
rg -n "type FileInfo" --context 5 .
Length of output: 1974
No description provided.