Antonio Scandurra and Nathan 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 Scandurra and Nathan 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 Scandurra and Nathan 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 Brunsfeld and Nathan 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 Brunsfeld and Nathan 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 Scandurra and Nathan 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 Brunsfeld and Nathan 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 Sobo and Max 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 Sobo and Max 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 Sobo and Max 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 Scandurra and Nathan 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