Block Feature README
Implemented by: Cole Sanders & AI Agent Assistance
Date: December 16, 2025
- Overview: The block feature lets authenticated users block and unblock other users and view their blocked list. Blocking prevents interactions (tests cover messaging/friend requests blocked when appropriate).
Backend: core classes & routes
- DTO:
BlockDto— back-end/src/main/java/dto/BlockDto.java - DAO:
BlockDao— back-end/src/main/java/dao/BlockDao.java - Handlers / Routes (registered in the handler factory):
/blockUser→ back-end/src/main/java/handler/BlockUserHandler.java/unblockUser→ back-end/src/main/java/handler/UnblockUserHandler.java/getBlockedUsers→ back-end/src/main/java/handler/GetBlockedUsersHandler.java
Backend behavior summary
- Requests must be authenticated (see
AuthFilter). If not authenticated, handlers return 401. BlockDtofields:blocker(who blocked) andblocked(username blocked)./blockUser(POST): expects a JSON body withblocked(username). Validates target exists, prevents blocking self, prevents duplicates, then inserts aBlockDto. Responds with aRestApiAppResponsecontaining the created block object on success./unblockUser(POST): expects a JSON body withblocked. Removes the block for the authenticated user and returns success./getBlockedUsers(GET): returns a list ofBlockDtorecords for the authenticated user.
Frontend
- Main component: front-end/app/home/BlockedList.tsx
- Frontend routes used:
POST /api/blockUser— body{ "blocked": "username" }POST /api/unblockUser— body{ "blocked": "username" }GET /api/getBlockedUsers
- The component shows a small UI to add a username to block, lists blocked users, and enables unblocking. It expects standard JSON responses with a
statusboolean and optionaldataormessagefields.
Sample requests & expected responses
-
Block user (success)
Request: POST /api/blockUser
Body: { "blocked": "alice" }
Response (200):
{ "status": true, "data": [ { "blocker": "bob", "blocked": "alice" } ], "message": "User blocked" }
-
Get blocked users
Request: GET /api/getBlockedUsers
Response (200):
{ "status": true, "data": [ { "blocker": "bob", "blocked": "alice" } ], "message": null }
-
Unblock user
Request: POST /api/unblockUser
Body: { "blocked": "alice" }
Response (200):
{ "status": true, "data": null, "message": "User unblocked" }
Testing & notes
- Unit/integration tests exist under
back-end/src/test/java/applogic/BlockTests.javaand the target surefire reports show passing block tests in the repo. - The DAO stores documents in the
BlockDaocollection with fieldsblockerandblocked.