Commit Graph

2 Commits

Author SHA1 Message Date
jules
c117284381 Social bindings — profiles, articles, board, favourites, subs, notifications
Typed wrappers for /api/v1/social/* on arcadia-app. Built over the
generic client.GET/POST surface rather than openapi-fetch — the spec
hasn't been regenerated to cover these endpoints, but the shapes
mirror the Phoenix JSON modules exactly and can migrate to the typed
surface later without caller changes.

Factory `createSocialBindings(client)` returns a SocialBindings
object with one method per operation:

  Profiles:    getMyProfile, updateMyProfile, getProfile, listProfiles
  Articles:    listArticles, getArticle, createArticle, updateArticle,
               deleteArticle
  Board:       listFeed, getThread, createPost, reply, updatePost,
               deletePost
  Favourites:  listFavourites, addFavourite, removeFavourite
  Subs:        listSubscriptions, addSubscription, removeSubscription
  Notifs:      listNotifications, markNotificationRead,
               markAllNotificationsRead

addSubscription takes an optional `lastSeenDnaHash` so callers can
record "the version I just vetted" — the platform's
on_dna_change fanout only pings users whose stored hash differs
from the new value, so passing it on subscribe means the user only
hears about *real* changes, not a notification at the value they
were already looking at.

Wire types mirror the Phoenix JSON modules; SocialNotificationKind
is `"mention" | "post_reply" | "dna_change" | (string & ...)` so
the union stays open to future kinds added platform-side.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 12:53:07 +10:00
Giuliano Silvestro
262a56c2e5 init: initial commit
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 08:26:34 +10:00