Skip to content

feat(snippets): implement public/private/shared snippet visibility #156 - #203

Merged
SudiptaPaul-31 merged 1 commit into
SudiptaPaul-31:mainfrom
Jimma08:fix/snippet-visibility-156
Oct 3, 2026
Merged

SudiptaPaul-31 merged 1 commit into
SudiptaPaul-31:mainfrom
Jimma08:fix/snippet-visibility-156

Conversation

@Jimma08

@Jimma08 Jimma08 commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Implements public / private / shared snippet visibility with database support, API authorization, UI controls, and audit logging for visibility changes.

Related Issue

Closes #156

Changes

Database

  • [ADD] scripts/add-visibility.sql — visibility column (default private), share_token, snippet_share_users table, indexes and CHECK constraint.

Repository / Service

  • [MODIFY] snippet.repository.ts — persist visibility on create; visibility-aware findAll/search (anonymous → public only; authenticated → public + own + shared); shared-user helpers.
  • [MODIFY] snippet.service.ts — setVisibility / getSharedUsers with activity-log audit trail; register sharedWith grants on create.
  • [MODIFY] snippet.validator.ts — accept optional sharedWith on create.

API

  • [ADD] app/api/snippets/[id]/visibility/route.ts — GET/PATCH visibility (owner-only changes).
  • [MODIFY] app/api/snippets/[id]/route.ts — enforce private/shared/public access (share token + shared users).
  • [MODIFY] app/api/snippets/route.ts — visibility-aware listing via wallet header / visibility query.

UI

  • [MODIFY] SnippetForm.tsx / SnippetDetailModal.tsx — visibility selector and shared-with wallets.
  • [MODIFY] form validation + types + activity-logger event names.

Tests

  • [ADD] lib/snippet.visibility.test.ts and visibility route tests covering private/public/shared scenarios.

Verification Results

Visibility validation + setVisibility unit coverage added
Authorization paths implemented for private / public / shared
Audit events: snippet.visibility_changed, shared_user_added/removed
Acceptance Criteria Status
Visibility field stored Covered — column + create/update persistence
Private snippets protected Covered — owner-only GET
Public snippets accessible Covered — unauthenticated public GET + listing
Shared snippets restricted Covered — share users + shareToken
UI controls available Covered — form + detail modal
Audit logs maintained Covered — activity logger events
Tests included Covered — visibility unit/route tests

Closes #156

@vercel

vercel Bot commented Sep 24, 2026

Copy link
Copy Markdown

@Jimma08 is attempting to deploy a commit to the Sudipta 's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Sep 24, 2026

Copy link
Copy Markdown

@Jimma08 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@SudiptaPaul-31
SudiptaPaul-31 merged commit ca0b6d1 into SudiptaPaul-31:main Oct 3, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Public/Private Snippet Visibility

2 participants