Antonio Scandurra
3e65fb4267
Leave joined worktrees when guest loses connection
2021-09-22 15:33:13 +02:00
Antonio Scandurra
b47422ae28
Maintain connections correctly when leaving or unsharing worktrees
2021-09-22 15:24:11 +02:00
Antonio Scandurra
78fbd1307a
Remove remote worktrees and close their buffers when host unshares
2021-09-22 14:50:32 +02:00
Antonio Scandurra
d67227177a
Allow leaving worktree while opening a buffer
2021-09-22 12:38:31 +02:00
Max Brunsfeld
6d0b84a467
💄
2021-09-21 13:48:34 -07:00
Max Brunsfeld
412535420b
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
c90dc7235e
Rename participants
to guests
in proto
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-21 18:30:49 +02:00
Antonio Scandurra
4a723a1fb9
Merge branch 'main' into people-panel
2021-09-21 17:29:07 +02:00
Antonio Scandurra
7c10faeccf
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
d381020a60
Add Server::{state,state_mut}
to catch most deadlocks statically
2021-09-21 12:19:52 +02:00
Antonio Scandurra
0b11192fe3
Remove deadlock and make integration tests pass again
2021-09-21 11:58:31 +02:00
Antonio Scandurra
1954c6b00e
Replace returned tuples with named structs in Store
2021-09-21 11:38:50 +02:00
Nathan Sobo
aa671f1041
Fix remaining compilation errors
2021-09-20 19:44:30 -06:00
Max Brunsfeld
5dfd4be174
WIP
2021-09-20 18:05:46 -07:00
Max Brunsfeld
8f578e7521
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
a068019d94
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
67946b7224
Add an integration test to verify collaborators are kept up to date
2021-09-20 16:40:31 +02:00
Antonio Scandurra
3d4dbf3140
Maintain collaborators in UserStore
2021-09-20 15:05:41 +02:00
Antonio Scandurra
32111092bd
Turn UserStore
into a model
2021-09-20 14:40:06 +02:00
Antonio Scandurra
ae9fb65315
Fix integration tests
2021-09-20 12:52:13 +02:00
Antonio Scandurra
d8ea220acc
Update collaborators as worktrees are opened/shared/closed
2021-09-20 12:29:32 +02:00
Antonio Scandurra
f13af7dc59
WIP
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-17 18:37:00 +02:00
Antonio Scandurra
f2825cceba
Start on Presence
as the backing model for the people panel
2021-09-17 16:18:41 +02:00
Antonio Scandurra
12fa309b7c
Implement proto::GetCollaborators
request
2021-09-17 14:36:50 +02:00
Max Brunsfeld
e3c0d6980c
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
a1f0693599
Specify full TextStyles in EditorStyle
2021-09-16 14:12:38 -06:00
Max Brunsfeld
176ca9086e
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
606aa148a6
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
f0093974ee
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
79fb3aa8af
Add migration to add a nonce
column to channel_messages
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-16 17:43:43 +02:00
Antonio Scandurra
8973e250ca
Re-send pending messages after reconnecting
2021-09-16 16:23:43 +02:00
Max Brunsfeld
caf0f0e428
Fix duplicated results in get_users_by_ids
2021-09-15 16:45:41 -07:00
Max Brunsfeld
31b5602dc1
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
f6bf0792ce
Merge branch 'render-images'
2021-09-15 12:11:08 +02:00
Nathan Sobo
7e4d5b7d04
Clear cached credentials when establishing a websocket connection with an invalid token
2021-09-14 20:36:03 -06:00
Nathan Sobo
4a9918979e
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
44a457e8b6
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
aa7c1bfa2d
Fix type errors in server tests
2021-09-14 17:15:17 -07:00
Nathan Sobo
e0e0bdbc3a
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
84d4bb6186
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
4be17b7a9b
Fix signups query
2021-09-14 13:23:35 -06:00
Nathan Sobo
f0019e3725
WIP
2021-09-14 12:29:56 -06:00
Nathan Sobo
c14ebb264f
Make release notes look better with more than 1 release
2021-09-13 13:23:06 -06:00
Max Brunsfeld
c58e335b87
Make UpdateBuffer
a request, store unsent operations on worktree
2021-09-09 11:26:06 -07:00
Max Brunsfeld
38bfaba135
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
3c61a3e826
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
156fd4ba57
Add integration test simulating killing a connection while chatting
2021-09-09 13:27:44 +02:00
Antonio Scandurra
34d8f99714
Respond to RPC pings in the server
2021-09-09 11:08:41 +02:00
Antonio Scandurra
ad7631de9f
Refactor and write a simple unit test to verify reconnection logic
2021-09-09 11:00:43 +02:00
Max Brunsfeld
b6eac57f63
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