* WIP
* Add push notifications example
* Ignore this
* Remove prints
* Format
* remember to set this
* Make push server configurable
* remove prints
* remove comment
* format
* remove print
* remove this
* add comment
* fix lint
* wip
* Fix recovering key signed keys
* Found an issue in v2 conversation header generation
* Swift can talk to JS V2 now
* Skip this in ci again
* Fix lint
* Fix up v1 messaging
* Add more fields to DecodedMessage to display/sort better
Also style message list a little bit
* tiny style tweak
* Fix up warnings
* Fix lint
* Fix typo
* skip integration test
* Add more tests
* skip integration again
* Fix up preview client provider
* Remove print
* Fix flakey test
* Fix lint
* Introduce FakeApiClient for testing
* Add Conversations.newConversation
* Add message streaming for conversations
* Remove print()
* Remove unused imports
* Add coverage for filtering
* No need to detach these
* Didn't end up needing this
* Formatting
* Clarify test date and use milliseconds helper
* Add message streaming for conversations
* Remove print()
* Remove unused imports
* Add coverage for filtering
* No need to detach these
* Didn't end up needing this
* Formatting
* Remove second message since we're not filtering sender messages anymore
Also remove @MainActor bits since we don't actually need that
* Don't filter out sender messages
* Skip integration tests in CI
* Rename variable for clarity
* Move MessageCellView to its own file
* Ensure published key bundle is signed by wallet
* formatting
* Continue integration of progress into sample app
* More integration
* no need for these copies
* remove unnecessary print
This PR starts exposing the public interface for the SDK. In the course of doing so, I realized that V2 messages weren't getting encoded/decoded properly, so I fixed that and added tests.
(Sidenote: I've been doing a lot of testing with a local node and a script in xmtp-js so I can verify the stuff I'm generating works properly with that. At some point it might be nice to try to standardize a format for end to end integration testing like that.)
This PR lets us use an actual wallet as a SigningKey instead of just a private key which was what we used in #2.
It also introduces the very beginnings of an example app that will get fleshed out as we start building an actual Client.
It also also introduces some very basic swiftlint rules.