[Feature Request]: Add `chat.bsky.group` namespace and group join-link embed

Abierto
#321 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
swift
Área
api

Línea de trabajo

Start by reading the existing chat lexicon models under Sources/ATProtoKit/Models/Lexicons/chat.bsky/ and API methods under Sources/ATProtoKit/APIReference/ChatBskyAPI/ to follow their conventions. Then compare the listed missing lexicons with the upstream lexicon references and add the typed group wrappers and join-link embed. Done when the listed group operations and embed are represented in the typed pipeline with api.bsky.chat routing.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

new feature
Summary

The upstream lexicon now ships a full chat.bsky.group.* namespace (group lifecycle, membership, join links, join requests) plus a chat.bsky.embed.joinLink embed object. None of these are reflected in ATProtoKit, so group conversation management is unreachable through the typed pipeline.

Pain points

The entire group surface (lifecycle, membership, join links, join requests, and the messageInput.embed join-link) has to be hand-built on raw XRPC, re-implementing the api.bsky.chat routing and auth plumbing that ATProtoBlueskyChat already handles for every other chat call.

Considered Alternatives

Raw XRPC for the entire group surface — loses typed pipeline, isRelatedToBskyChat host routing, and forces every consumer to repeat the same auth plumbing.

Is this a breaking change?

No

Library Examples

N/A

Additional Context
Missing lexicons
Lexicon Suggested wrapper
chat.bsky.embed.joinLink ChatBskyLexicon.Embed.JoinLink embed object, selectable in the sendMessage messageInput.embed union
chat.bsky.group.addMembers addMembers(to:memberDIDs:)
chat.bsky.group.approveJoinRequest approveJoinRequest(for:requesterDID:)
chat.bsky.group.createGroup createGroup(name:memberDIDs:memberLimit:)
chat.bsky.group.createJoinLink createJoinLink(for:)
chat.bsky.group.defs types only
chat.bsky.group.disableJoinLink disableJoinLink(for:)
chat.bsky.group.editGroup editGroup(by:name:)
chat.bsky.group.editJoinLink editJoinLink(for:expiresAt:)
chat.bsky.group.enableJoinLink enableJoinLink(for:)
chat.bsky.group.getJoinLinkPreviews getJoinLinkPreviews(for:)
chat.bsky.group.listJoinRequests listJoinRequests(for:limit:cursor:)
chat.bsky.group.listMutualGroups listMutualGroups(with:limit:cursor:)
chat.bsky.group.rejectJoinRequest rejectJoinRequest(for:requesterDID:)
chat.bsky.group.removeMembers removeMembers(from:memberDIDs:)
chat.bsky.group.requestJoin requestJoin(by:)
chat.bsky.group.updateJoinRequestsRead updateJoinRequestsRead(for:)
chat.bsky.group.withdrawJoinRequest withdrawJoinRequest(by:)

Wrappers follow the existing ATProtoBlueskyChat convention (method name mirrors the lexicon's final segment, no artificial Group prefix — matching getConversation, listConversations). All sit on api.bsky.chat and require isRelatedToBskyChat: true routing, and the group namespace maps to ChatBskyLexicon.Group.

Cross-reference
  • The convo-side discriminator (convoView.kind → #groupConvo) and the 4 convo-level endpoints (getConvoMembers, listConvoRequests, lockConvo, unlockConvo) are tracked in a separate feature request #320.
References
Lenguaje dominante
Swift
Estrellas
226
Forks
40
Merge medio
5 h 8 min
PR fusionados (30 d)
3

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de MasterJ93/ATProtoKit

Todos los issues de MasterJ93/ATProtoKit

Issues similares

Más issues de Swift

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.