Safety screens: followers, blocking, reporting, admin
CI / check (push) Canceled after 0s

Web and mobile:
- Follower/following lists (tap the counts), with Follow buttons and
  "Remove" on your own followers.
- Profile ⋯ menu: block (with confirmation) / unblock, and report with a
  reason and optional note. "Follows you" label, "Follow back", and a
  banner on profiles you've blocked.
- Blocked accounts list in Settings, with unblock.
Web only: /admin for the admin account: stats, open/resolved reports,
resolve, suspend/unsuspend.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
This commit is contained in:
2026-10-06 12:53:28 -04:00
co-authored by Claude Opus 5.5
parent 13df568348
commit 45a7bd190a
21 changed files with 741 additions and 21 deletions
+4 -1
View File
@@ -1,7 +1,7 @@
'use client';
import useSWR from 'swr';
import type { MeDTO } from '@musicshare/shared';
import { createApiClient, type MeDTO } from '@musicshare/shared';
export const API_URL = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:4000';
@@ -45,3 +45,6 @@ export function useMe() {
});
return { me: data, isLoading, loggedOut: error?.status === 401, mutate };
}
/** The shared typed client, for calls not covered by `api` above. */
export const client = createApiClient({ baseUrl: API_URL, credentials: 'include' });