Repository navigation
feat(listings): add ignore list context menu to listing description - #497
Merged
orangecoding merged 7 commits intoOct 31, 2026
Merged
orangecoding merged 7 commits into
orangecoding merged 7 commits into
Conversation
orangecoding
requested changes
Oct 30, 2026
orangecoding
left a comment
Owner
There was a problem hiding this comment.
Backend part looks fine. The context menu needs work before this can go in: see the inline comments (shared jobs, error handling, the hijacked native menu, and the filter only seeing the search snippet).
…when no words added
Owner
|
lgtm. thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Allows users to highlight words or phrases in the listing description on the listing detail page, right-click, and directly add them to the parent job's ignore list (blacklist).
jobStorage.appendJobBlacklist(jobId, wordsToAppend)wrapped in a SQLite transaction with case-insensitive deduplication and whitespace trimming.POST /api/jobs/:jobId/blacklistendpoint validating user ownership (doesJobBelongsToUser), job existence, demo mode constraints, and payload terms.jobsData.addJobBlacklistWord(jobId, word)to store action state.onContextMenu) toListingDescriptionCardthat anchors a floating menu item to mouse click coordinates when text is selected.en,de,es,fr,it,tr).test/api/jobBlacklist.test.jstesting permission enforcement, 404s, input validation, deduplication, and admin modification.test/storage/jobStorage.test.js.Related issue
Closes #496
AI disclosure (required)
Fredy accepts AI assisted contributions, but they have to be declared. An
undeclared AI PR will be closed. Tick exactly one box:
ai:none- I wrote this myself. No AI generated code, text or commit messages.ai:assisted- AI helped with parts of it (autocomplete, refactoring, tests, docs). I reviewed and understand every line.ai:generated- AI produced most or all of this PR. I reviewed it, but it is largely machine written.If you ticked
ai:assistedorai:generated, the three answers below aremandatory. Keep them on the same line as the label.
Which AI: OMP, Gemini 3.8 Flash
How much: I gave my feature request to AI and let it generate the required changes.
Why: Prototype generation, feel free to adopt/reject
Checklist
yarn test:offlinepasses (oryarn testif the change touches a live provider)yarn lintandyarn format:checkpass