fix: protect unpublished notes and saved page edits#435
Conversation
Co-authored-by: theg1239 <theg1239@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR adds a missing
Confidence Score: 4/5Safe to merge — all three changes fix real defects with no new logic paths introduced. Both the note-visibility guard and the page-editor state fix are targeted, well-scoped corrections that match existing patterns in the codebase. The only non-functional observation is a commit-message style note. No files require special attention; all changed files are straightforward. Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant NoteDetailPage
participant getNoteDetail
participant DB
User->>NoteDetailPage: "GET /notes/{id}"
NoteDetailPage->>getNoteDetail: getNoteDetail(id)
getNoteDetail->>DB: "SELECT ... WHERE id=? AND isClear=true"
alt note is published
DB-->>getNoteDetail: row(s)
getNoteDetail-->>NoteDetailPage: noteDetail
NoteDetailPage-->>User: Render note
else note is unpublished / not found
DB-->>getNoteDetail: []
getNoteDetail-->>NoteDetailPage: null
NoteDetailPage-->>User: notFound() → 404
end
note over User,DB: Page-editor save flow
User->>NoteDetailPage: Save page edits
NoteDetailPage->>NoteDetailPage: "setSavedPageEdits(responseValue) propKey = normalizedInitialPageEditsKey"
NoteDetailPage-->>User: UI reflects saved value immediately
NoteDetailPage->>NoteDetailPage: refresh() → server re-render
alt server props updated (new key)
NoteDetailPage->>NoteDetailPage: propKey ≠ normalizedInitialPageEditsKey → fall back to new server props
else server props still stale (same key)
NoteDetailPage->>NoteDetailPage: "propKey === normalizedInitialPageEditsKey → retain locally saved value"
end
|
Summary
isClear = truein note detail lookups so direct/notes/{id}access cannot expose unapproved uploads.Validation
pnpm exec tsc --noEmitpnpm build/notes/{id}, and verified the response did not contain the note title or PDF URL.