Clean up Client API

Open
#145 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
22/100
Issue type
Refactor
Clarity
Needs clarification
Activity status
Stale
Tech stack
go, javascript, rust
Domain
api, backend

Research direction

Start by inventorying the Client API areas named in the issue: ClientCreationOpts, Must... variants, Event, GetNotification, and the verification RPCs. Review the linked pull requests and the Server.WaiterStart/Server.WaiterPoll functions before deciding scope. Done requires an agreed API cleanup, implemented missing RPCs, and documented or versioned RPC compatibility.

Written by the indexing model from the issue text.

Description

It has grown organically so we could test JS/Rust SDK. It's now time to think about the API more before we open it up to everyone.

Thoughts on each part of the API:

  • ClientCreationOpts : Addition of extra options in https://github.com/matrix-org/complement-crypto/pull/144 keeps it extensible. We should cut down on as many fields as possible.
  • Must... variants: Remove them and decorate the Client API in tests with Must variants. It's crazy that impls need to implement MustStartSyncing AND StartSyncing, when the caller can just do the err != nil check on their end. https://github.com/matrix-org/complement-crypto/pull/146
  • Event: re-check rust SDK and try to make it match the wire format for events as much as possible.
  • GetNotification: it's useful as other SDKs have push-notification-like code path, but it's very rust SDK specific currently.

RPC-wise:

  • RequestOwnUserVerification and ListenForVerificationRequests: we need to implement them. Can probably poll like we do with the waiters?
  • Check RPC-only functions for sanity:
    • Server.WaiterStart
    • Server.WaiterPoll

Probably worth having a version handshake initially along with the port (e.g 56434 v1). If we don't, we may have missing RPC functions or missing fields etc. This means we need to document the RPC API. Can we automate it?

Dominant language
Go
Stars
18
Forks
12
Avg merge
2d 12h
Merged PRs (30d)
6

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from matrix-org/complement-crypto

All issues in matrix-org/complement-crypto

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.