Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS bindings [EthDenver] #365

Closed
richardhuaaa opened this issue Dec 11, 2023 · 6 comments
Closed

iOS bindings [EthDenver] #365

richardhuaaa opened this issue Dec 11, 2023 · 6 comments

Comments

@richardhuaaa
Copy link
Contributor

No description provided.

@richardhuaaa richardhuaaa converted this from a draft issue Dec 11, 2023
@neekolas
Copy link
Contributor

neekolas commented Jan 16, 2024

We talked about listing out the functions needed in the wrapped client SDKs. I'll take a stab at it here with this total pseudocode that should in no way be treated as an API spec.

General

  • create_client to create a V3 client

Client methods

  • account_address() -> String
  • installation_id() -> []byte
  • conversations() -> Conversations
  • register_identity(). This one is required today, although we are thinking about just making registration implicit on client creation. Shouldn't really be the callers job to figure out when to register.
  • list_my_installations() -> []Installation. Not implemented, but will be required when we get to building revocation
  • revoke_installation(). Not implemented. Will be required when we roll out revocation (which doesn't seem necessary for ETHDenver)
  • can_message() -> []boolean. Take an array of account addresses and check if they have MLS identities. Not implemented but should be easy

Conversations methods

  • create_group() -> Conversation
  • list() -> []Conversation
  • stream()
  • sync. Method to sync all conversations and welcomes

Conversation/Group methods

  • id() -> []byte get the unique identifier for the conversation
  • send()
  • sync()
  • find_messages() -> []Message
  • list_members() -> []ConversationMember
  • add_members()
  • remove_members()
  • stream()
  • leave(). Not implemented. Some way of leaving a conversation. What happens under the hood may change here as we improve the underlying implementation

@richardhuaaa
Copy link
Contributor Author

Adding on things as I think of them:

  • We may need a way to sync updates from all conversations (including welcomes, as well as for rendering an inbox view with snippets from all threads).
  • There will be changes to the registration flow (e.g., a preGrantMessagingAccess callback), I'm working on that now

@richardhuaaa
Copy link
Contributor Author

  • We need to figure out how consent, pushability and hmac keys will be exposed for libxmtp

@neekolas
Copy link
Contributor

neekolas commented Jan 17, 2024

We need to figure out how consent, pushability and hmac keys will be exposed for libxmtp

Think pushability and hmac keys are a separate convo, which might flow back into here. I do have some ideas around pushability at least.

@nplasterer
Copy link
Contributor

I added a tracking issue for this work in Kotlin so we can keep track of it as we do it. https://github.com/xmtp/xmtp-kotlin/issues/1

@neekolas
Copy link
Contributor

Added one more item. Some sort of can_message(), since we need to be able to check if a user has a V3 identity.

@bwcDvorak bwcDvorak changed the title iOS bindings iOS bindings [EthDenver] Jan 22, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in MLS Work Aug 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

4 participants