Commit Graph
102 Commits
Author SHA1 Message Date
Nathan Sobo 5839c594d8 Fix formatting 2023-04-06 15:54:44 -06:00
Nathan Sobo d937660683 Merge MutableAppContext into AppContext
There may have been a good reason for the difference at some point, or I was
still learning Rust. But now it's just &mut AppContext vs &AppContext.
2023-04-06 15:49:03 -06:00
Max Brunsfeld 1b86129ae2 Close remote project windows when leaving a call 2023-03-15 15:24:58 -07:00
Max BrunsfeldandAntonio Scandurra 9342332495 Fix failure to see screenshare tracks that were started prior to joining a call
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2023-03-13 11:15:22 -07:00
Antonio ScandurraandMax Brunsfeld 3c81933fbc Leave room on quit
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2023-03-13 17:52:10 +01:00
JuliaandAntonio Scandurra c86117f852 Increase reconnect timeout
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-03-03 13:10:08 -08:00
Julia aae083923c Differentiate between follow state on a per-project basis 2023-02-24 00:07:17 -05:00
Antonio Scandurra 7a0c129ad6 Avoid trying to reconnect to a room if client is signed out 2023-02-23 14:53:10 +01:00
Julia 8946fbd17d Highlight face pile which local user is following 2023-02-22 11:22:37 -05:00
Julia fa56590cd7 Following face piles finally take their first breath 2023-02-22 11:21:23 -05:00
Julia 988f9c1266 Abuse a closure instead of abusing options/iterators quite so much 2023-02-22 11:21:23 -05:00
Julia 3d9742d272 Absolute pain of the iterator kind (start laying out a user's followers) 2023-02-22 11:21:23 -05:00
JuliaandAntonio Scandurra a3d474af23 Begin tracking follow states on collab server
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2023-02-22 11:21:23 -05:00
JuliaandPetros Amoiridis fe1c6df418 Tell project when it has been unshared
Co-Authored-By: Petros Amoiridis <petros@zed.dev>
2023-02-22 11:21:23 -05:00
Julia e13d10cdb5 Move share button and support unsharing 2023-02-22 11:21:23 -05:00
Antonio Scandurra c656fa9e61 Avoid creating more than one room when inviting multiple people at once
Previously, when initiating a call by calling multiple people, only
the first person would get the call while all the others would briefly
show a "pending" status but never get the call.

This would happen because `ActiveCall` was trying to a create a different
room for each person called, because the original room creation hadn't finished
and so a `ModelHandle<Room>` wasn't being store in the active call.

With this commit, only one room can be created at any given time and further
invites have to wait until that room creation is done.
2023-02-14 12:03:30 +01:00
Kay Simmons b9419d9523 Move sharing status indicator out of the call crate and into collab_ui in order so that the model doesn't depend on the view 2023-02-03 11:17:50 -08:00
Kay Simmons 632074c2c8 Add setting to disable the call icon 2023-02-01 16:21:53 -08:00
Kay Simmons 431a74bb3a Add call status indicator to the status bar 2023-01-31 15:00:49 -08:00
Antonio ScandurraandNathan Sobo 1ac1bd1838 Share new worktrees when resharing project
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2023-01-06 12:58:19 -07:00
Antonio Scandurra 2aedbfec7a Couple worktree sharing with project metadata updates 2023-01-06 10:31:36 -07:00
Nathan Sobo 01d051d43d Introduce completed_scan_id to worktree
We need to know the most recent scan id we have actually completed. This is to
handle the case where a guest disconnects when we're in the middle of streaming
worktree entries to them. When they reconnect, they need to report a scan_id
from before we started streaming the entries, because we have no record of when
the stream was interrupted.

Next failure:
SEED=5051 ITERATIONS=1 OPERATIONS=200 cargo test --release --package=collab random -- --nocapture
2023-01-03 18:26:57 -07:00
Max Brunsfeld fb1f3b5c4d Clean up projects when leaving a room 2022-12-20 16:44:57 -08:00
Max BrunsfeldandAntonio Scandurra 3470889fb2 Handle unshared projects when rejoining a room
Also, construct remote projects via the room, to guarantee
that the room can manage the projects' sharing lifecycle.

Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-12-20 11:10:46 -08:00
Antonio Scandurra 458b07bc3a Make host reconnection test pass when mutating worktree while offline 2022-12-20 17:30:58 +01:00
Antonio Scandurra 97e3f2da09 Fix project reconnection test to ensure rooms actually reconnects 2022-12-20 14:51:46 +01:00
Max BrunsfeldandNathan Sobo c9fa0ff03f Start work on rejoining rooms, supplying all project info at once
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-12-19 17:50:43 -08:00
Max Brunsfeld 36d40f44ac WIP - Retain hosts' project state when they disconnect 2022-12-19 11:38:08 -08:00
Antonio Scandurra 1c7d888e94 Fix test ensuring room is left when disconnected from LiveKit 2022-12-16 10:52:32 +01:00
Max Brunsfeld e5718bced7 Identify LiveKit room participants by user id, not peer id
This way, their participant id can remain the same when they reconnect.
2022-12-15 17:19:32 -08:00
Antonio Scandurra f7070792a9 Introduce an epoch to ConnectionId and PeerId 2022-12-14 15:55:56 +01:00
Antonio Scandurra 58a552dd2f Add more logging to Room 2022-12-14 11:43:12 +01:00
Antonio Scandurra 7f9c82f759 Allow server to see client disconnection before giving up on reconnecting 2022-12-13 12:17:21 +01:00
Antonio Scandurra eb27691bc1 Include room_id in CallCanceled message
This ensures we don't accidentally cancel old calls.
2022-12-13 11:43:09 +01:00
Antonio Scandurra d96ef3d256 Delete stale rooms/participants after RECONNECT_TIMEOUT 2022-12-13 11:32:37 +01:00
Antonio Scandurra 21aacbb216 Allow re-joining room after server restarts 2022-12-12 16:03:21 +01:00
Antonio Scandurra bfec91b3ba Introduce random reconnections in the randomized test 2022-12-12 11:43:08 +01:00
Antonio Scandurra 7b91966883 Re-join room when client temporarily loses connection 2022-12-12 11:43:08 +01:00
Antonio Scandurra 7b26fceb7b Remove version from Room
We won't need it once we add the per-room lock.
2022-11-18 20:18:48 +01:00
Antonio ScandurraandNathan Sobo bf3e4936b5 Always use strings to represent paths over the wire
Previously, the protocol used a mix of strings and bytes without any consistency.

When we go to multiple platforms, we won't be able to mix encodings of paths anyway.
We don't know this is the right approach, but it at least makes things consistent
and easy to read in the database, on the wire, etc. Really, we should be using entry
ids etc to refer to entries on the wire anyway, but there's a chance this is the
wrong decision.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-11-15 16:46:17 +01:00
Antonio Scandurra 75dcc65ac9 Skip applying room updates if they're older than the local room state 2022-11-14 15:35:39 +01:00
Antonio Scandurra 05b8ba4fd0 Wait for acknowledgment before sending the next project update 2022-11-14 15:32:49 +01:00
Antonio Scandurra 1f0709bbef Leave room when connection is dropped 2022-11-14 10:13:36 +01:00
Antonio Scandurra 6406495a37 Remove calls table and use just room_participants 2022-11-11 15:22:04 +01:00
Antonio Scandurra 01127d8733 Start moving Store state into the database 2022-11-11 12:06:43 +01:00
Antonio Scandurra e12739a29c Show a Calling indicator right away when initiating a call 2022-10-25 11:05:57 +02:00
Antonio Scandurra a63f6b99d8 Set location on ActiveCall even before there's a room
We will automatically call `Room::set_location` once a room has been
assigned.
2022-10-24 15:07:25 +02:00
Antonio Scandurra 493bc28cc6 Simplify room events 2022-10-24 10:53:44 +02:00
Antonio Scandurra 8325be5b10 Show shared screen as a pane item 2022-10-24 10:04:08 +02:00
Antonio Scandurra 03b5a26fd6 Leave Zed room when LiveKit room disconnects 2022-10-21 14:21:45 +02:00