Commit Graph
100 Commits
Author SHA1 Message Date
Antonio ScandurraandNathan Sobo e13fc58c5b 💄
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-23 17:32:37 +02:00
Antonio Scandurra eefda8ac3c Version the zrpc protocol using a X-ZRPC-VERSION header 2021-09-23 15:35:35 +02:00
Antonio Scandurra b1ee558a78 Leave joined worktrees when guest loses connection 2021-09-22 15:33:13 +02:00
Antonio Scandurra a3b0e59aa4 Maintain connections correctly when leaving or unsharing worktrees 2021-09-22 15:24:11 +02:00
Antonio Scandurra 6143d82ef7 Remove remote worktrees and close their buffers when host unshares 2021-09-22 14:50:32 +02:00
Antonio Scandurra d6249c7410 Allow leaving worktree while opening a buffer 2021-09-22 12:38:31 +02:00
Max Brunsfeld 104fa0cf04 💄 2021-09-21 13:48:34 -07:00
8dc1f6996d Allow joining worktrees by clicking them in the people panel
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-21 12:21:03 -07:00
Antonio ScandurraandNathan Sobo 0d114d8c89 Rename participants to guests in proto
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-21 18:30:49 +02:00
Antonio Scandurra b28ea8c4c5 Merge branch 'main' into people-panel 2021-09-21 17:29:07 +02:00
Antonio ScandurraandNathan Sobo c29ca9ff2b Use more concrete names for Store return values
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-21 17:21:30 +02:00
Antonio Scandurra 6489570bf6 Add Server::{state,state_mut} to catch most deadlocks statically 2021-09-21 12:19:52 +02:00
Antonio Scandurra 755b021f6d Remove deadlock and make integration tests pass again 2021-09-21 11:58:31 +02:00
Antonio Scandurra 17a66c2622 Replace returned tuples with named structs in Store 2021-09-21 11:38:50 +02:00
Nathan Sobo fb3150617d Fix remaining compilation errors 2021-09-20 19:44:30 -06:00
Max Brunsfeld 22e8bf0dcc WIP 2021-09-20 18:05:46 -07:00
Max BrunsfeldandNathan Sobo 72281d13e0 Maintain server state consistency when removing a connection
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-20 15:45:33 -07:00
Max BrunsfeldandNathan Sobo 5b63ff5408 Add ZED_IMPERSONATE env var, for testing
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-20 15:44:28 -07:00
Antonio Scandurra 27ada90ffc Add an integration test to verify collaborators are kept up to date 2021-09-20 16:40:31 +02:00
Antonio Scandurra 3f7221072e Maintain collaborators in UserStore 2021-09-20 15:05:41 +02:00
Antonio Scandurra f7a17b963c Turn UserStore into a model 2021-09-20 14:40:06 +02:00
Antonio Scandurra 6d36fa0d71 Fix integration tests 2021-09-20 12:52:13 +02:00
Antonio Scandurra a3ae536803 Update collaborators as worktrees are opened/shared/closed 2021-09-20 12:29:32 +02:00
Antonio ScandurraandNathan Sobo 80aca52e6e WIP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-17 18:37:00 +02:00
Antonio Scandurra dd4649bd2d Start on Presence as the backing model for the people panel 2021-09-17 16:18:41 +02:00
Antonio Scandurra 2dd8a34bd4 Implement proto::GetCollaborators request 2021-09-17 14:36:50 +02:00
Max Brunsfeld b8a8297352 Switch to a new flow for advertising, sharing and joining worktrees
Now, when you open a local worktree, we immediately send an `OpenWorktree` message
to the server, telling it the name of the folder that you've opened, and the names of all the
collaborators (based on a `.zed.toml` file). The server responds with a unique id for the
worktree.

When starting share this local worktree, you now include this previously-assigned id
in the `ShareWorktree` message.

When joining a worktree, there is no longer a need to provide an access token. The access
is controlled by the set of "collaborator logins" that were provided when the worktree
was initially opened by the host.
2021-09-16 18:39:29 -07:00
Nathan Sobo 2261f721ec Specify full TextStyles in EditorStyle 2021-09-16 14:12:38 -06:00
Max Brunsfeld 3c059f1495 Rename OpenWorktree message to JoinWorktree
We'll repurpose the name 'OpenWorktree' for opening a local
worktree while signed in, and advertising the open status to
the worktree's collaborators.
2021-09-16 12:57:19 -07:00
Nathan Sobo cd44296c4e Require a build_style callback to be passed to Editor on construction
We're going to use this to control the text style, so it really doesn't make sense to allow an editor to be constructed without it.
2021-09-16 13:20:12 -06:00
Max Brunsfeld 12b315a1a0 Always store an rpc client on local worktrees
Even before sharing, we now want to advertise that the user is working
on a certain worktree, to make that visible to all of the worktree's
collaborators.
2021-09-16 11:06:49 -07:00
Antonio Scandurra 057c1a7a22 Re-send pending messages after reconnecting 2021-09-16 16:23:43 +02:00
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