Commit Graph
68 Commits
Author SHA1 Message Date
Max Brunsfeld 095f52f78a Fix duplicated results in get_users_by_ids 2021-09-15 16:45:41 -07:00
Max BrunsfeldandNathan Sobo 4381e7b645 Get server integration tests passing again
* Set up UserStore to have the current user, so that
  channel messages can be sent. This is needed now that
  pending messages are represented more similarly to
  regular messages.
* Drop buffer inside of an `AppContext.update` block, so that
  the Buffer's release hook is called in time.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-15 16:17:07 -07:00
Antonio Scandurra 4c0236020f Merge branch 'render-images' 2021-09-15 12:11:08 +02:00
Nathan Sobo e0a48ec727 Clear cached credentials when establishing a websocket connection with an invalid token 2021-09-14 20:36:03 -06:00
Nathan SoboandMax Brunsfeld e541e06cdc WIP: Clear cached credentials if authentication fails
Still need to actually handle an HTTP response from the server indicating there was an invalid token.

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-09-14 19:19:11 -06:00
Nathan SoboandMax Brunsfeld 96a00d43c0 Cache credentials in memory separately from connection status
This prevents us from re-prompting for keychain access when we retry connections after the connection is lost.

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-09-14 18:21:46 -06:00
Max Brunsfeld 97767ced01 Fix type errors in server tests 2021-09-14 17:15:17 -07:00
Nathan SoboandMax Brunsfeld 5cc7bf0881 Synthesize GitHub avatar URL and follow redirects when fetching it
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-09-14 16:28:26 -06:00
Max Brunsfeld 0813e912f3 Introduce HttpClient trait, use it to fetch avatars in UserStore
* Add a FakeHttpClient for tests
2021-09-14 13:42:44 -07:00
Nathan Sobo c36f05a9ce Fix signups query 2021-09-14 13:23:35 -06:00
Nathan Sobo f745016771 WIP 2021-09-14 12:29:56 -06:00
Max Brunsfeld fb820b40eb Make UpdateBuffer a request, store unsent operations on worktree 2021-09-09 11:26:06 -07:00
Max Brunsfeld 8e01d93231 Add a generic Ack message, use it instead of Pong
Remove the `id` field from `Ping`, because it isn't used.
There is already an id on the message envelope.
2021-09-09 11:24:16 -07:00
Antonio ScandurraandNathan Sobo 672241640c Ensure client A and B can communicate after reconnection
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-09 15:40:35 +02:00
Antonio Scandurra a0d615cf30 Add integration test simulating killing a connection while chatting 2021-09-09 13:27:44 +02:00
Antonio Scandurra 7bec00197d Respond to RPC pings in the server 2021-09-09 11:08:41 +02:00
Antonio Scandurra c63b87af09 Refactor and write a simple unit test to verify reconnection logic 2021-09-09 11:00:43 +02:00
Max Brunsfeld ecc590fd12 Introduce a concrete Conn type for peer's websocket connection
This is mostly to set us up to test the rpc::Client's reconnect
logic.

There are multiple ways that the `rpc::Client` may establish
its websocket connection: (SSL in production, plain TCP during
local development, and using an in-memory connection for tests).
Now we can represent all of those connections using a common type.

Also, several long methods no longer need to be generic, which
is good for compile time.
2021-09-08 18:14:47 -07:00
Antonio ScandurraandMax Brunsfeld c3948e9d38 WIP
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-09-08 18:58:59 +02:00
Antonio Scandurra 841260f783 Start on a Client::status method that can be observed 2021-09-08 15:58:16 +02:00
Antonio Scandurra 5458f0714e Focus chat input editor after signing in 2021-09-07 13:57:30 +02:00
Antonio Scandurra c7f0983acd Bundle and use Inconsolata v2.012
There's a newer version of the font available but ligatures seem
broken googlefonts/Inconsolata#58 and googlefonts/Inconsolata#52.

As part of this commit I also upgraded rust-embed to use the new
exclusion feature, which allows us to skip embedding OS files like
`.DS_Store`.
2021-09-04 17:02:20 +02:00
aea839f9f8 Include sanitized message in SendChannelMessageResponse
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-09-02 18:31:24 +02:00
Antonio ScandurraandNathan Sobo b5c3798c39 Make scrolling up in chat panel smoother
This increases the threshold at which we start loading new messages
as well as the amount of messages we get back from the server every
time we fetch.

Also, we restructured the seed binary to use the methods in `Db` to
generate seed data and added random chat messages.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-02 16:05:34 +02:00
Antonio ScandurraandNathan Sobo a866a893f8 Take &mut self in View::render
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-30 17:51:26 +02:00
Max Brunsfeld 919822acc9 Don't allow empty chat messages 2021-08-27 17:21:53 -07:00
Max Brunsfeld b6cf3d2d65 Trim whitespace from chat messages and limit their length
Add a way for the server to respond to any request with an error
2021-08-27 17:21:35 -07:00
Max Brunsfeld 0ad00f298a Drop the word 'recent' from get_channel_messages db method name 2021-08-27 15:50:45 -07:00
Max BrunsfeldandNathan Sobo 168aa11e64 Fetch older messages when scrolling up in the chat message list
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-27 14:58:28 -07:00
Antonio ScandurraandNathan Sobo c837b9b078 Remove lock from element states
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-27 18:04:21 +02:00
72f50bb66a Overhaul handling of font families
* Specify font families in the theme.
* Load fonts eagerly when loading themes, instead of loading
  them lazily when rendering.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-26 15:06:00 -07:00
Antonio Scandurra dbb53093f5 Fix retrieving recent channel messages 2021-08-26 14:14:22 +02:00
Antonio Scandurra 1469db51f5 Extract a TestDb to setup and tear down a database instance 2021-08-26 12:51:48 +02:00
Nathan SoboandMax Brunsfeld b97e81c814 Associate messages with their sender, fetching senders if necessary
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-08-25 14:20:03 -06:00
Antonio Scandurra 4b37b16791 Render chat messages in ChatPanel 2021-08-24 12:23:50 +02:00
Max Brunsfeld 8192b67458 Add ChannelList to AppState 2021-08-23 15:03:45 -07:00
Nathan Sobo ad339f0743 Get project compiling with type-safe actions 2021-08-22 21:02:48 -06:00
Antonio ScandurraandNathan Sobo 5a647cb6bc Forbid parking earlier in server integration tests
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-20 16:41:10 +02:00
Antonio ScandurraandNathan Sobo 555d5132b7 Make database interactions deterministic in test
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-20 16:24:33 +02:00
Antonio ScandurraandNathan Sobo d5f0833b67 💄
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-20 15:00:08 +02:00
Antonio ScandurraandNathan Sobo 1128405fa5 Extract a Db::close method and remove deref to PgPool
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-20 14:58:14 +02:00
Antonio ScandurraandNathan Sobo eb53ffcbbd Implement and test channel cleanup as clients leave
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-20 14:32:53 +02:00
Antonio Scandurra 1d58a6f629 Save messages received from the server 2021-08-20 11:16:59 +02:00
Max Brunsfeld 460d56ff9e Start work on sending channel messages 2021-08-19 18:04:49 -07:00
Nathan Sobo 7387633ec0 Fetch messages when joining a channel 2021-08-19 15:25:20 -06:00
Max Brunsfeld 29bfd78b0b WIP 2021-08-19 13:07:28 -07:00
Max BrunsfeldandNathan Sobo 0d06ef784a Move Arc outside of rpc::Client
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-19 12:56:50 -07:00
Max BrunsfeldandNathan Sobo e734f58c97 Consolidate server's rpc state into the rpc::Server struct
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-19 12:17:52 -07:00
cdb374b2aa Remove remaining instances of router
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-08-19 19:38:17 +02:00
Antonio Scandurra 3f68dcf5f0 Re-register message handlers in RPC server 2021-08-19 15:35:03 +02:00