wip: refactor

This commit is contained in:
2024-12-26 08:44:51 +07:00
parent 0745b497f0
commit 5e5f286cfe
5 changed files with 221 additions and 241 deletions

188
Cargo.lock generated
View File

@@ -84,9 +84,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.94" version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
[[package]] [[package]]
name = "arbitrary" name = "arbitrary"
@@ -102,7 +102,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -163,9 +163,9 @@ dependencies = [
[[package]] [[package]]
name = "async-broadcast" name = "async-broadcast"
version = "0.7.1" version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
dependencies = [ dependencies = [
"event-listener 5.3.1", "event-listener 5.3.1",
"event-listener-strategy", "event-listener-strategy",
@@ -357,7 +357,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -392,7 +392,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -532,7 +532,7 @@ dependencies = [
"regex", "regex",
"rustc-hash 1.1.0", "rustc-hash 1.1.0",
"shlex", "shlex",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -695,7 +695,7 @@ source = "git+https://github.com/kvark/blade?rev=099555282605c7c4cca9e66a8f40148
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -770,22 +770,22 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]] [[package]]
name = "bytemuck" name = "bytemuck"
version = "1.20.0" version = "1.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
dependencies = [ dependencies = [
"bytemuck_derive", "bytemuck_derive",
] ]
[[package]] [[package]]
name = "bytemuck_derive" name = "bytemuck_derive"
version = "1.8.0" version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -854,7 +854,7 @@ dependencies = [
"quote", "quote",
"serde", "serde",
"serde_json", "serde_json",
"syn 2.0.90", "syn 2.0.91",
"tempfile", "tempfile",
"toml", "toml",
] ]
@@ -1040,7 +1040,7 @@ dependencies = [
[[package]] [[package]]
name = "collections" name = "collections"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"rustc-hash 1.1.0", "rustc-hash 1.1.0",
] ]
@@ -1313,7 +1313,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
dependencies = [ dependencies = [
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -1362,13 +1362,13 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustc_version", "rustc_version",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
name = "derive_refineable" name = "derive_refineable"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -1435,7 +1435,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -1539,7 +1539,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -1799,7 +1799,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -1922,7 +1922,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -2080,7 +2080,7 @@ dependencies = [
[[package]] [[package]]
name = "gpui" name = "gpui"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"as-raw-xcb-connection", "as-raw-xcb-connection",
@@ -2165,7 +2165,7 @@ dependencies = [
[[package]] [[package]]
name = "gpui_macros" name = "gpui_macros"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -2376,7 +2376,7 @@ dependencies = [
[[package]] [[package]]
name = "http_client" name = "http_client"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bytes", "bytes",
@@ -2417,9 +2417,9 @@ dependencies = [
[[package]] [[package]]
name = "hyper-rustls" name = "hyper-rustls"
version = "0.27.4" version = "0.27.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6884a48c6826ec44f524c7456b163cebe9e55a18d7b5e307cb4f100371cc767" checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"http", "http",
@@ -2591,7 +2591,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -2700,7 +2700,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -2920,7 +2920,7 @@ checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -3041,7 +3041,7 @@ dependencies = [
[[package]] [[package]]
name = "media" name = "media"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bindgen", "bindgen",
@@ -3208,7 +3208,7 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
[[package]] [[package]]
name = "nostr" name = "nostr"
version = "0.37.0" version = "0.37.0"
source = "git+https://github.com/rust-nostr/nostr#2efdc69ad385b51b1c5f93706bfeeff5b6dd4d41" source = "git+https://github.com/rust-nostr/nostr#53e453ee99158a11eea8249dce536917917bcd15"
dependencies = [ dependencies = [
"aes", "aes",
"async-trait", "async-trait",
@@ -3239,7 +3239,7 @@ dependencies = [
[[package]] [[package]]
name = "nostr-database" name = "nostr-database"
version = "0.37.0" version = "0.37.0"
source = "git+https://github.com/rust-nostr/nostr#2efdc69ad385b51b1c5f93706bfeeff5b6dd4d41" source = "git+https://github.com/rust-nostr/nostr#53e453ee99158a11eea8249dce536917917bcd15"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"flatbuffers", "flatbuffers",
@@ -3250,7 +3250,7 @@ dependencies = [
[[package]] [[package]]
name = "nostr-lmdb" name = "nostr-lmdb"
version = "0.37.0" version = "0.37.0"
source = "git+https://github.com/rust-nostr/nostr#2efdc69ad385b51b1c5f93706bfeeff5b6dd4d41" source = "git+https://github.com/rust-nostr/nostr#53e453ee99158a11eea8249dce536917917bcd15"
dependencies = [ dependencies = [
"async-utility", "async-utility",
"heed", "heed",
@@ -3262,7 +3262,7 @@ dependencies = [
[[package]] [[package]]
name = "nostr-relay-pool" name = "nostr-relay-pool"
version = "0.37.0" version = "0.37.0"
source = "git+https://github.com/rust-nostr/nostr#2efdc69ad385b51b1c5f93706bfeeff5b6dd4d41" source = "git+https://github.com/rust-nostr/nostr#53e453ee99158a11eea8249dce536917917bcd15"
dependencies = [ dependencies = [
"async-utility", "async-utility",
"async-wsocket", "async-wsocket",
@@ -3278,7 +3278,7 @@ dependencies = [
[[package]] [[package]]
name = "nostr-sdk" name = "nostr-sdk"
version = "0.37.0" version = "0.37.0"
source = "git+https://github.com/rust-nostr/nostr#2efdc69ad385b51b1c5f93706bfeeff5b6dd4d41" source = "git+https://github.com/rust-nostr/nostr#53e453ee99158a11eea8249dce536917917bcd15"
dependencies = [ dependencies = [
"async-utility", "async-utility",
"lnurl-pay", "lnurl-pay",
@@ -3294,7 +3294,7 @@ dependencies = [
[[package]] [[package]]
name = "nostr-zapper" name = "nostr-zapper"
version = "0.37.0" version = "0.37.0"
source = "git+https://github.com/rust-nostr/nostr#2efdc69ad385b51b1c5f93706bfeeff5b6dd4d41" source = "git+https://github.com/rust-nostr/nostr#53e453ee99158a11eea8249dce536917917bcd15"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"nostr", "nostr",
@@ -3369,7 +3369,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -3433,9 +3433,9 @@ dependencies = [
[[package]] [[package]]
name = "object" name = "object"
version = "0.36.5" version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]
@@ -3651,7 +3651,7 @@ dependencies = [
"phf_shared", "phf_shared",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -3686,7 +3686,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -3720,9 +3720,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]] [[package]]
name = "png" name = "png"
version = "0.17.15" version = "0.17.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b67582bd5b65bdff614270e2ea89a1cf15bef71245cc1e5f7ea126977144211d" checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"crc32fast", "crc32fast",
@@ -3812,7 +3812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -3849,7 +3849,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
dependencies = [ dependencies = [
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -3889,7 +3889,7 @@ dependencies = [
"rustc-hash 2.1.0", "rustc-hash 2.1.0",
"rustls", "rustls",
"socket2 0.5.8", "socket2 0.5.8",
"thiserror 2.0.8", "thiserror 2.0.9",
"tokio", "tokio",
"tracing", "tracing",
] ]
@@ -3908,7 +3908,7 @@ dependencies = [
"rustls", "rustls",
"rustls-pki-types", "rustls-pki-types",
"slab", "slab",
"thiserror 2.0.8", "thiserror 2.0.9",
"tinyvec", "tinyvec",
"tracing", "tracing",
"web-time", "web-time",
@@ -4094,7 +4094,7 @@ dependencies = [
[[package]] [[package]]
name = "refineable" name = "refineable"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"derive_refineable", "derive_refineable",
] ]
@@ -4221,7 +4221,7 @@ dependencies = [
[[package]] [[package]]
name = "reqwest_client" name = "reqwest_client"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bytes", "bytes",
@@ -4298,7 +4298,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rust-embed-utils", "rust-embed-utils",
"syn 2.0.90", "syn 2.0.91",
"walkdir", "walkdir",
] ]
@@ -4499,7 +4499,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"serde_derive_internals", "serde_derive_internals",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -4617,7 +4617,7 @@ checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe"
[[package]] [[package]]
name = "semantic_version" name = "semantic_version"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"serde", "serde",
@@ -4646,7 +4646,7 @@ checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -4657,7 +4657,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -4671,9 +4671,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.133" version = "1.0.134"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"itoa", "itoa",
@@ -4690,7 +4690,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -4931,7 +4931,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustversion", "rustversion",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -4943,7 +4943,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]] [[package]]
name = "sum_tree" name = "sum_tree"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"log", "log",
@@ -5068,9 +5068,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.90" version = "2.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -5103,7 +5103,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -5218,11 +5218,11 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "2.0.8" version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc"
dependencies = [ dependencies = [
"thiserror-impl 2.0.8", "thiserror-impl 2.0.9",
] ]
[[package]] [[package]]
@@ -5233,18 +5233,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "2.0.8" version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -5315,9 +5315,9 @@ dependencies = [
[[package]] [[package]]
name = "tinyvec" name = "tinyvec"
version = "1.8.0" version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
dependencies = [ dependencies = [
"tinyvec_macros", "tinyvec_macros",
] ]
@@ -5354,7 +5354,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -5467,7 +5467,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -5562,9 +5562,9 @@ dependencies = [
[[package]] [[package]]
name = "unicase" name = "unicase"
version = "2.8.0" version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]] [[package]]
name = "unicode-bidi" name = "unicode-bidi"
@@ -5706,7 +5706,7 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]] [[package]]
name = "util" name = "util"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/zed-industries/zed#3632b36fde4c4e73eadc7e231d7b040a3b7fb55b" source = "git+https://github.com/zed-industries/zed#95911aaa1450b6e613139298b676e15cdb928ec1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-fs 1.6.0", "async-fs 1.6.0",
@@ -5716,6 +5716,8 @@ dependencies = [
"futures", "futures",
"futures-lite 1.13.0", "futures-lite 1.13.0",
"globset", "globset",
"itertools 0.13.0",
"libc",
"log", "log",
"regex", "regex",
"rust-embed", "rust-embed",
@@ -5875,7 +5877,7 @@ dependencies = [
"log", "log",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@@ -5910,7 +5912,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@@ -6125,7 +6127,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -6136,7 +6138,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -6491,7 +6493,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"synstructure", "synstructure",
] ]
@@ -6578,7 +6580,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"zvariant_utils 2.1.0", "zvariant_utils 2.1.0",
] ]
@@ -6591,7 +6593,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"zbus_names 4.1.0", "zbus_names 4.1.0",
"zvariant 5.1.0", "zvariant 5.1.0",
"zvariant_utils 3.0.2", "zvariant_utils 3.0.2",
@@ -6644,7 +6646,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -6664,7 +6666,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"synstructure", "synstructure",
] ]
@@ -6685,7 +6687,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -6707,7 +6709,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -6772,7 +6774,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"zvariant_utils 2.1.0", "zvariant_utils 2.1.0",
] ]
@@ -6785,7 +6787,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
"zvariant_utils 3.0.2", "zvariant_utils 3.0.2",
] ]
@@ -6797,7 +6799,7 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.90", "syn 2.0.91",
] ]
[[package]] [[package]]
@@ -6810,6 +6812,6 @@ dependencies = [
"quote", "quote",
"serde", "serde",
"static_assertions", "static_assertions",
"syn 2.0.90", "syn 2.0.91",
"winnow", "winnow",
] ]

View File

@@ -14,7 +14,7 @@ pub struct Room {
} }
impl Room { impl Room {
pub fn new(event: Event) -> Self { pub fn new(event: &Event) -> Self {
let owner = event.pubkey; let owner = event.pubkey;
let last_seen = event.created_at; let last_seen = event.created_at;
// Get all members from event's tag // Get all members from event's tag

View File

@@ -1,150 +1,33 @@
use std::sync::Arc; use coop_ui::{theme::ActiveTheme, StyledExt};
use coop_ui::{theme::ActiveTheme, Selectable, StyledExt};
use gpui::*; use gpui::*;
use nostr_sdk::prelude::*; use nostr_sdk::prelude::*;
use prelude::FluentBuilder; use prelude::FluentBuilder;
use std::sync::Arc;
use crate::{ use crate::{
constants::IMAGE_SERVICE, constants::IMAGE_SERVICE,
get_client, get_client,
states::{chat::Room, metadata::MetadataRegistry, signal::SignalRegistry}, states::{chat::Room, metadata::MetadataRegistry, signal::SignalRegistry},
utils::{ago, show_npub}, utils::{ago, get_room_id, show_npub},
views::app::AddPanel, views::app::AddPanel,
}; };
#[derive(IntoElement)]
struct Item {
id: ElementId,
room: Arc<Room>,
metadata: Option<Metadata>,
// Interactive
base: Div,
selected: bool,
}
impl Item {
pub fn new(room: Arc<Room>, metadata: Option<Metadata>) -> Self {
let id = SharedString::from(room.owner.to_hex()).into();
Self {
id,
room,
metadata,
base: div(),
selected: false,
}
}
}
impl Selectable for Item {
fn selected(mut self, selected: bool) -> Self {
self.selected = selected;
self
}
fn element_id(&self) -> &gpui::ElementId {
&self.id
}
}
impl InteractiveElement for Item {
fn interactivity(&mut self) -> &mut gpui::Interactivity {
self.base.interactivity()
}
}
impl RenderOnce for Item {
fn render(self, cx: &mut WindowContext) -> impl IntoElement {
let ago = ago(self.room.last_seen.as_u64());
let fallback_name = show_npub(self.room.owner, 16);
let mut content = div()
.font_medium()
.text_color(cx.theme().sidebar_accent_foreground);
if let Some(metadata) = self.metadata.clone() {
content = content
.flex()
.items_center()
.gap_2()
.map(|this| {
if let Some(picture) = metadata.picture {
this.flex_shrink_0().child(
img(format!(
"{}/?url={}&w=100&h=100&n=-1",
IMAGE_SERVICE, picture
))
.size_6()
.rounded_full()
.object_fit(ObjectFit::Cover),
)
} else {
this.flex_shrink_0()
.child(img("brand/avatar.png").size_6().rounded_full())
}
})
.map(|this| {
if let Some(display_name) = metadata.display_name {
this.child(display_name)
} else {
this.child(fallback_name)
}
})
} else {
content = content
.flex()
.items_center()
.gap_2()
.child(
img("brand/avatar.png")
.flex_shrink_0()
.size_6()
.rounded_full(),
)
.child(fallback_name)
}
self.base
.id(self.id)
.h_8()
.px_1()
.flex()
.items_center()
.justify_between()
.text_xs()
.rounded_md()
.hover(|this| {
this.bg(cx.theme().sidebar_accent)
.text_color(cx.theme().sidebar_accent_foreground)
})
.child(content)
.child(
div()
.child(ago)
.text_color(cx.theme().sidebar_accent_foreground.opacity(0.7)),
)
.on_click(move |_, cx| {
cx.dispatch_action(Box::new(AddPanel {
room: Arc::clone(&self.room),
position: coop_ui::dock::DockPlacement::Center,
}))
})
}
}
pub struct InboxItem { pub struct InboxItem {
room: Arc<Room>, id: SharedString,
event: Event,
metadata: Model<Option<Metadata>>, metadata: Model<Option<Metadata>>,
} }
impl InboxItem { impl InboxItem {
pub fn new(event: Event, cx: &mut ViewContext<'_, Self>) -> Self { pub fn new(event: Event, cx: &mut ViewContext<'_, Self>) -> Self {
let room = Arc::new(Room::new(event)); let pubkeys: Vec<PublicKey> = event.tags.public_keys().copied().collect();
let id = get_room_id(&event.pubkey, &pubkeys).into();
let metadata = cx.new_model(|_| None); let metadata = cx.new_model(|_| None);
drop(pubkeys);
// Request metadata // Request metadata
_ = cx.global::<SignalRegistry>().tx.send(room.owner); _ = cx.global::<SignalRegistry>().tx.send(event.pubkey);
// Reload when received metadata // Reload when received metadata
cx.observe_global::<MetadataRegistry>(|chat, cx| { cx.observe_global::<MetadataRegistry>(|chat, cx| {
@@ -152,11 +35,15 @@ impl InboxItem {
}) })
.detach(); .detach();
Self { room, metadata } Self {
id,
event,
metadata,
}
} }
pub fn load_metadata(&mut self, cx: &mut ViewContext<Self>) { pub fn load_metadata(&mut self, cx: &mut ViewContext<Self>) {
let public_key = self.room.owner; let public_key = self.event.pubkey;
let async_metadata = self.metadata.clone(); let async_metadata = self.metadata.clone();
let mut async_cx = cx.to_async(); let mut async_cx = cx.to_async();
@@ -179,19 +66,92 @@ impl InboxItem {
} }
pub fn id(&self) -> String { pub fn id(&self) -> String {
self.room.id.clone().into() self.id.clone().into()
} }
fn render_item(&self, cx: &mut ViewContext<Self>) -> impl IntoElement { pub fn action(&self, cx: &mut WindowContext<'_>) {
let metadata = self.metadata.read(cx).clone(); println!("Test");
let room = Arc::clone(&self.room); let room = Arc::new(Room::new(&self.event));
Item::new(room, metadata) cx.dispatch_action(Box::new(AddPanel {
room,
position: coop_ui::dock::DockPlacement::Center,
}))
} }
} }
impl Render for InboxItem { impl Render for InboxItem {
fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement { fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
div().child(self.render_item(cx)) let ago = ago(self.event.created_at.as_u64());
let fallback_name = show_npub(self.event.pubkey, 16);
let mut content = div()
.font_medium()
.text_color(cx.theme().sidebar_accent_foreground);
if let Some(metadata) = self.metadata.read(cx).as_ref() {
content = content
.flex()
.items_center()
.gap_2()
.map(|this| {
if let Some(picture) = metadata.picture.clone() {
this.flex_shrink_0().child(
img(format!(
"{}/?url={}&w=100&h=100&n=-1",
IMAGE_SERVICE, picture
))
.size_6()
.rounded_full()
.object_fit(ObjectFit::Cover),
)
} else {
this.flex_shrink_0()
.child(img("brand/avatar.png").size_6().rounded_full())
}
})
.map(|this| {
if let Some(display_name) = metadata.display_name.clone() {
this.child(display_name)
} else {
this.child(fallback_name)
}
})
} else {
content = content
.flex()
.items_center()
.gap_2()
.child(
img("brand/avatar.png")
.flex_shrink_0()
.size_6()
.rounded_full(),
)
.child(fallback_name)
}
div()
.id(self.id.clone())
.h_8()
.px_1()
.flex()
.items_center()
.justify_between()
.text_xs()
.rounded_md()
.hover(|this| {
this.bg(cx.theme().sidebar_accent)
.text_color(cx.theme().sidebar_accent_foreground)
})
.child(content)
.child(
div()
.child(ago)
.text_color(cx.theme().sidebar_accent_foreground.opacity(0.7)),
)
.on_click(cx.listener(|this, _, cx| {
this.action(cx);
}))
} }
} }

View File

@@ -43,9 +43,11 @@ impl Inbox {
.into_iter() .into_iter()
.filter(|m| { .filter(|m| {
let keys = m.event.tags.public_keys().copied().collect::<Vec<_>>(); let keys = m.event.tags.public_keys().copied().collect::<Vec<_>>();
let nid = get_room_id(&m.event.pubkey, &keys); let new_id = get_room_id(&m.event.pubkey, &keys);
current_rooms.iter().any(|id| id == &nid) drop(keys);
!current_rooms.iter().any(|id| id == &new_id)
}) })
.map(|m| cx.new_view(|cx| InboxItem::new(m.event, cx))) .map(|m| cx.new_view(|cx| InboxItem::new(m.event, cx)))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
@@ -78,6 +80,14 @@ impl Inbox {
// Hide loading indicator // Hide loading indicator
self.set_loading(cx); self.set_loading(cx);
let items = self.items.read(cx).as_ref();
// Get all current rooms id
let current_rooms: Vec<String> = if let Some(items) = items {
items.iter().map(|item| item.model.read(cx).id()).collect()
} else {
Vec::new()
};
let async_items = self.items.clone(); let async_items = self.items.clone();
let mut async_cx = cx.to_async(); let mut async_cx = cx.to_async();
@@ -109,12 +119,25 @@ impl Inbox {
let views: Vec<View<InboxItem>> = events let views: Vec<View<InboxItem>> = events
.into_iter() .into_iter()
.filter(|ev| {
let keys = ev.tags.public_keys().copied().collect::<Vec<_>>();
let new_id = get_room_id(&ev.pubkey, &keys);
drop(keys);
!current_rooms.iter().any(|id| id == &new_id)
})
.map(|ev| async_cx.new_view(|cx| InboxItem::new(ev, cx)).unwrap()) .map(|ev| async_cx.new_view(|cx| InboxItem::new(ev, cx)).unwrap())
.collect(); .collect();
async_cx.update_model(&async_items, |a, b| { async_cx.update_model(&async_items, |model, cx| {
*a = Some(views); if let Some(items) = model {
b.notify(); items.extend(views);
} else {
*model = Some(views);
}
cx.notify();
}) })
}) })
.detach(); .detach();

View File

@@ -1,10 +1,5 @@
use gpui::{ use gpui::*;
div, prelude::FluentBuilder, px, rems, AppContext, Corner, DefiniteLength, DismissEvent, use prelude::FluentBuilder;
DragMoveEvent, Empty, Entity, EventEmitter, FocusHandle, FocusableView,
InteractiveElement as _, IntoElement, ParentElement, Pixels, Render, ScrollHandle,
SharedString, StatefulInteractiveElement, Styled, View, ViewContext, VisualContext as _,
WeakView, WindowContext,
};
use std::sync::Arc; use std::sync::Arc;
use super::{ use super::{