diff --git a/Cargo.lock b/Cargo.lock
index da2362670d421322ac3cf39dcbe488e285a5dad6..0448538c3554e170d53e62f945371b109e4fe6b6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -684,6 +684,20 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
+[[package]]
+name = "call"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "collections",
+ "futures",
+ "gpui",
+ "postage",
+ "project",
+ "util",
+]
+
[[package]]
name = "cap-fs-ext"
version = "0.24.4"
@@ -1023,6 +1037,7 @@ dependencies = [
"axum",
"axum-extra",
"base64",
+ "call",
"clap 3.2.8",
"client",
"collections",
@@ -1067,6 +1082,31 @@ dependencies = [
"workspace",
]
+[[package]]
+name = "collab_ui"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "call",
+ "client",
+ "clock",
+ "collections",
+ "editor",
+ "futures",
+ "fuzzy",
+ "gpui",
+ "log",
+ "menu",
+ "picker",
+ "postage",
+ "project",
+ "serde",
+ "settings",
+ "theme",
+ "util",
+ "workspace",
+]
+
[[package]]
name = "collections"
version = "0.1.0"
@@ -1108,54 +1148,6 @@ dependencies = [
"cache-padded",
]
-[[package]]
-name = "contacts_panel"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "client",
- "collections",
- "editor",
- "futures",
- "fuzzy",
- "gpui",
- "language",
- "log",
- "menu",
- "picker",
- "postage",
- "project",
- "serde",
- "settings",
- "theme",
- "util",
- "workspace",
-]
-
-[[package]]
-name = "contacts_status_item"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "client",
- "collections",
- "editor",
- "futures",
- "fuzzy",
- "gpui",
- "language",
- "log",
- "menu",
- "picker",
- "postage",
- "project",
- "serde",
- "settings",
- "theme",
- "util",
- "workspace",
-]
-
[[package]]
name = "context_menu"
version = "0.1.0"
@@ -7176,8 +7168,8 @@ name = "workspace"
version = "0.1.0"
dependencies = [
"anyhow",
+ "call",
"client",
- "clock",
"collections",
"context_menu",
"drag_and_drop",
@@ -7247,15 +7239,15 @@ dependencies = [
"auto_update",
"backtrace",
"breadcrumbs",
+ "call",
"chat_panel",
"chrono",
"cli",
"client",
"clock",
+ "collab_ui",
"collections",
"command_palette",
- "contacts_panel",
- "contacts_status_item",
"context_menu",
"ctor",
"diagnostics",
diff --git a/assets/icons/zed_22.svg b/assets/icons/zed_22.svg
deleted file mode 100644
index 68e7dc8e57c966d5723920bc027c313161b95af8..0000000000000000000000000000000000000000
--- a/assets/icons/zed_22.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/keymaps/default.json b/assets/keymaps/default.json
index a0bc8c39e6b2d29089292daa2863705a32e05ea4..e2adfc0f81d09bc6226079dd83713cf1b0dc79b5 100644
--- a/assets/keymaps/default.json
+++ b/assets/keymaps/default.json
@@ -395,7 +395,6 @@
"context": "Workspace",
"bindings": {
"shift-escape": "dock::FocusDock",
- "cmd-shift-c": "contacts_panel::ToggleFocus",
"cmd-shift-b": "workspace::ToggleRightSidebar"
}
},
diff --git a/crates/call/Cargo.toml b/crates/call/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..e725c7cfe3b053d36f1b04b81d1d5476e68e7bed
--- /dev/null
+++ b/crates/call/Cargo.toml
@@ -0,0 +1,35 @@
+[package]
+name = "call"
+version = "0.1.0"
+edition = "2021"
+
+[lib]
+path = "src/call.rs"
+doctest = false
+
+[features]
+test-support = [
+ "client/test-support",
+ "collections/test-support",
+ "gpui/test-support",
+ "project/test-support",
+ "util/test-support"
+]
+
+[dependencies]
+client = { path = "../client" }
+collections = { path = "../collections" }
+gpui = { path = "../gpui" }
+project = { path = "../project" }
+util = { path = "../util" }
+
+anyhow = "1.0.38"
+futures = "0.3"
+postage = { version = "0.4.1", features = ["futures-traits"] }
+
+[dev-dependencies]
+client = { path = "../client", features = ["test-support"] }
+collections = { path = "../collections", features = ["test-support"] }
+gpui = { path = "../gpui", features = ["test-support"] }
+project = { path = "../project", features = ["test-support"] }
+util = { path = "../util", features = ["test-support"] }
diff --git a/crates/call/src/call.rs b/crates/call/src/call.rs
new file mode 100644
index 0000000000000000000000000000000000000000..6b06d04375b8a1fca563ef3be558f823ce45cd1c
--- /dev/null
+++ b/crates/call/src/call.rs
@@ -0,0 +1,261 @@
+mod participant;
+pub mod room;
+
+use anyhow::{anyhow, Result};
+use client::{proto, Client, TypedEnvelope, User, UserStore};
+use gpui::{
+ AppContext, AsyncAppContext, Entity, ModelContext, ModelHandle, MutableAppContext,
+ Subscription, Task,
+};
+pub use participant::ParticipantLocation;
+use postage::watch;
+use project::Project;
+pub use room::Room;
+use std::sync::Arc;
+
+pub fn init(client: Arc, user_store: ModelHandle, cx: &mut MutableAppContext) {
+ let active_call = cx.add_model(|cx| ActiveCall::new(client, user_store, cx));
+ cx.set_global(active_call);
+}
+
+#[derive(Clone)]
+pub struct IncomingCall {
+ pub room_id: u64,
+ pub caller: Arc,
+ pub participants: Vec>,
+ pub initial_project: Option,
+}
+
+pub struct ActiveCall {
+ room: Option<(ModelHandle, Vec)>,
+ incoming_call: (
+ watch::Sender