[ENG-980] Barebones, essential telemetry (#1237)

* rename everything to "full" telemetry and re-word onboarding

* impl the `ping` event every 4.5 mins, or on path change

* fix debug popover

* update mobile

* remove callback (and cargo lock update?)

* add to mobile, remove eslint ignore, remove console log

---------

Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
This commit is contained in:
jake 2023-08-23 07:28:25 +01:00 committed by GitHub
parent e4b03619d2
commit 6acc47ef09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 283 additions and 210 deletions

309
Cargo.lock generated
View file

@ -156,9 +156,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
version = "1.0.3"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a"
dependencies = [
"memchr",
]
@ -244,9 +244,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.72"
version = "1.0.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
[[package]]
name = "aovec"
@ -420,18 +420,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
name = "async-trait"
version = "0.1.72"
version = "0.1.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -689,9 +689,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.3.3"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
[[package]]
name = "bitvec"
@ -945,9 +945,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.0.82"
version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
dependencies = [
"jobserver",
"libc",
@ -1122,9 +1122,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.3.21"
version = "4.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
checksum = "03aef18ddf7d879c15ce20f04826ef8418101c7e528014c3eeea13321047dca3"
dependencies = [
"clap_builder",
"clap_derive",
@ -1133,9 +1133,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.3.21"
version = "4.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
checksum = "f8ce6fffb678c9b80a70b6b6de0aad31df727623a70fd9a842c30cd573e2fa98"
dependencies = [
"anstream",
"anstyle",
@ -1152,7 +1152,7 @@ dependencies = [
"heck 0.4.1",
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -1495,7 +1495,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -1584,18 +1584,31 @@ dependencies = [
[[package]]
name = "curve25519-dalek"
version = "4.0.0-rc.1"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d4ba9852b42210c7538b75484f9daa0655e9a3ac04f693747bb0f02cf3cfe16"
checksum = "f711ade317dd348950a9910f81c5947e3d8907ebd2b83f76203ff1807e6a2bc2"
dependencies = [
"cfg-if",
"cpufeatures",
"curve25519-dalek-derive",
"fiat-crypto",
"packed_simd_2",
"platforms",
"rustc_version",
"subtle",
"zeroize",
]
[[package]]
name = "curve25519-dalek-derive"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
]
[[package]]
name = "darling"
version = "0.14.4"
@ -1641,7 +1654,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -1663,7 +1676,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
dependencies = [
"darling_core 0.20.3",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -1781,9 +1794,9 @@ dependencies = [
[[package]]
name = "deranged"
version = "0.3.7"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
dependencies = [
"serde",
]
@ -1928,7 +1941,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -2129,7 +2142,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -2140,7 +2153,7 @@ checksum = "b893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -2319,9 +2332,9 @@ checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33"
[[package]]
name = "flate2"
version = "1.0.26"
version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
dependencies = [
"crc32fast",
"miniz_oxide",
@ -2434,13 +2447,15 @@ dependencies = [
[[package]]
name = "futures-concurrency"
version = "7.3.0"
version = "7.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b726119e6cd29cf120724495b2085e1ed3d17821ea17b86de54576d1aa565f5e"
checksum = "0cf49eababd62240534b6e7178bd8b20fac90318ed4295917b0565b6708ed670"
dependencies = [
"bitvec",
"futures-core",
"pin-project",
"slab",
"smallvec 1.11.0",
]
[[package]]
@ -2501,7 +2516,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -2816,7 +2831,7 @@ version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
dependencies = [
"aho-corasick 1.0.3",
"aho-corasick 1.0.4",
"bstr",
"fnv",
"log",
@ -3135,9 +3150,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
[[package]]
name = "httpdate"
version = "1.0.2"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "httpz"
@ -3518,7 +3533,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
dependencies = [
"hermit-abi",
"rustix 0.38.7",
"rustix 0.38.8",
"windows-sys 0.48.0",
]
@ -3771,12 +3786,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "libm"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
[[package]]
name = "libp2p"
version = "0.51.3"
@ -4170,9 +4179,9 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.19"
version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
name = "loom"
@ -4457,9 +4466,9 @@ dependencies = [
[[package]]
name = "mini-moka"
version = "0.10.1"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "452ebc1428a585e31e637b928b76355ef2fd72d765b2530d72fe475e514cd1eb"
checksum = "23e0b72e7c9042467008b10279fc732326bd605459ae03bda88825909dd19b56"
dependencies = [
"crossbeam-channel",
"crossbeam-utils",
@ -4897,9 +4906,9 @@ dependencies = [
[[package]]
name = "num-complex"
version = "0.4.3"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
dependencies = [
"num-traits",
]
@ -5101,7 +5110,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -5227,16 +5236,6 @@ dependencies = [
"sha2 0.10.7",
]
[[package]]
name = "packed_simd_2"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282"
dependencies = [
"cfg-if",
"libm",
]
[[package]]
name = "pango"
version = "0.15.10"
@ -5335,7 +5334,7 @@ dependencies = [
"libc",
"redox_syscall 0.3.5",
"smallvec 1.11.0",
"windows-targets 0.48.1",
"windows-targets 0.48.5",
]
[[package]]
@ -5433,7 +5432,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -5572,7 +5571,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -5625,9 +5624,9 @@ dependencies = [
[[package]]
name = "png"
version = "0.17.9"
version = "0.17.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11"
checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
@ -5721,7 +5720,7 @@ dependencies = [
[[package]]
name = "prisma-client-rust"
version = "0.6.8"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f00f2689f26dcc818fb0d05b0c4d8826973a2989"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f4f98ab7f30b6f6550cd058e9889570a58501822"
dependencies = [
"base64 0.13.1",
"bigdecimal",
@ -5754,7 +5753,7 @@ dependencies = [
[[package]]
name = "prisma-client-rust-cli"
version = "0.6.8"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f00f2689f26dcc818fb0d05b0c4d8826973a2989"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f4f98ab7f30b6f6550cd058e9889570a58501822"
dependencies = [
"directories",
"flate2",
@ -5774,7 +5773,7 @@ dependencies = [
[[package]]
name = "prisma-client-rust-generator"
version = "0.6.8"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f00f2689f26dcc818fb0d05b0c4d8826973a2989"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f4f98ab7f30b6f6550cd058e9889570a58501822"
dependencies = [
"directories",
"flate2",
@ -5794,7 +5793,7 @@ dependencies = [
[[package]]
name = "prisma-client-rust-macros"
version = "0.6.8"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f00f2689f26dcc818fb0d05b0c4d8826973a2989"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f4f98ab7f30b6f6550cd058e9889570a58501822"
dependencies = [
"convert_case 0.6.0",
"proc-macro2",
@ -5806,7 +5805,7 @@ dependencies = [
[[package]]
name = "prisma-client-rust-sdk"
version = "0.6.8"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f00f2689f26dcc818fb0d05b0c4d8826973a2989"
source = "git+https://github.com/Brendonovich/prisma-client-rust?branch=spacedrive#f4f98ab7f30b6f6550cd058e9889570a58501822"
dependencies = [
"convert_case 0.5.0",
"dmmf",
@ -5926,13 +5925,13 @@ dependencies = [
[[package]]
name = "prometheus-client-derive-encode"
version = "0.4.1"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b6a5217beb0ad503ee7fa752d451c905113d70721b937126158f3106a48cc1"
checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
"syn 2.0.29",
]
[[package]]
@ -6160,9 +6159,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.32"
version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
@ -6398,7 +6397,7 @@ version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
dependencies = [
"aho-corasick 1.0.3",
"aho-corasick 1.0.4",
"memchr",
"regex-automata 0.3.6",
"regex-syntax 0.7.4",
@ -6419,7 +6418,7 @@ version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
dependencies = [
"aho-corasick 1.0.3",
"aho-corasick 1.0.4",
"memchr",
"regex-syntax 0.7.4",
]
@ -6722,11 +6721,11 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.38.7"
version = "0.38.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399"
checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f"
dependencies = [
"bitflags 2.3.3",
"bitflags 2.4.0",
"errno",
"libc",
"linux-raw-sys 0.4.5",
@ -7342,9 +7341,9 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.183"
version = "1.0.185"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
checksum = "be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31"
dependencies = [
"serde_derive",
]
@ -7388,20 +7387,20 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.183"
version = "1.0.185"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
checksum = "dc59dfdcbad1437773485e0367fea4b090a2e0a16d9ffc46af47764536a298ec"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
name = "serde_json"
version = "1.0.104"
version = "1.0.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360"
dependencies = [
"indexmap 2.0.0",
"itoa 1.0.9",
@ -7427,7 +7426,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -7469,9 +7468,9 @@ dependencies = [
[[package]]
name = "serde_with"
version = "3.2.0"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1402f54f9a3b9e2efe71c1cea24e648acce55887983553eeb858cf3115acfd49"
checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237"
dependencies = [
"base64 0.21.2",
"chrono",
@ -7480,7 +7479,7 @@ dependencies = [
"indexmap 2.0.0",
"serde",
"serde_json",
"serde_with_macros 3.2.0",
"serde_with_macros 3.3.0",
"time 0.3.25",
]
@ -7493,19 +7492,19 @@ dependencies = [
"darling 0.20.3",
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
name = "serde_with_macros"
version = "3.2.0"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9197f1ad0e3c173a0222d3c4404fb04c3afe87e962bcb327af73e8301fa203c7"
checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c"
dependencies = [
"darling 0.20.3",
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -7716,14 +7715,14 @@ checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
[[package]]
name = "snow"
version = "0.9.2"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ccba027ba85743e09d15c03296797cad56395089b832b48b5a5217880f57733"
checksum = "0c9d1425eb528a21de2755c75af4c9b5d57f50a0d4c3b7f1828a4cd03f8ba155"
dependencies = [
"aes-gcm 0.9.4",
"blake2",
"chacha20poly1305 0.9.1",
"curve25519-dalek 4.0.0-rc.1",
"curve25519-dalek 4.0.0",
"rand_core 0.6.4",
"ring",
"rustc_version",
@ -8080,9 +8079,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.28"
version = "2.0.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
dependencies = [
"proc-macro2",
"quote",
@ -8237,9 +8236,9 @@ dependencies = [
[[package]]
name = "tao-macros"
version = "0.1.1"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b27a4bcc5eb524658234589bdffc7e7bfb996dbae6ce9393bfd39cb4159b445"
checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2"
dependencies = [
"proc-macro2",
"quote",
@ -8461,7 +8460,7 @@ dependencies = [
"semver",
"serde",
"serde_json",
"serde_with 3.2.0",
"serde_with 3.3.0",
"thiserror",
"url",
"walkdir",
@ -8490,14 +8489,14 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.7.1"
version = "3.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651"
checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
dependencies = [
"cfg-if",
"fastrand 2.0.0",
"redox_syscall 0.3.5",
"rustix 0.38.7",
"rustix 0.38.8",
"windows-sys 0.48.0",
]
@ -8529,22 +8528,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
[[package]]
name = "thiserror"
version = "1.0.44"
version = "1.0.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90"
checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.44"
version = "1.0.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96"
checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -8633,9 +8632,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.30.0"
version = "1.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d3ce25f50619af8b0aec2eb23deebe84249e19e2ddd393a6e16e3300a6dadfd"
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
dependencies = [
"backtrace",
"bytes",
@ -8658,7 +8657,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -8762,7 +8761,7 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55ae70283aba8d2a8b411c695c437fe25b8b5e44e23e780662002fc72fb47a82"
dependencies = [
"bitflags 2.3.3",
"bitflags 2.4.0",
"bytes",
"futures-core",
"futures-util",
@ -8835,7 +8834,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -8845,7 +8844,7 @@ source = "git+https://github.com/tokio-rs/tracing?rev=29146260fb4615d271d2e899ad
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]
@ -9404,7 +9403,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
"wasm-bindgen-shared",
]
@ -9438,7 +9437,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@ -9622,9 +9621,9 @@ dependencies = [
[[package]]
name = "webrtc-dtls"
version = "0.7.1"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "942be5bd85f072c3128396f6e5a9bfb93ca8c1939ded735d177b7bcba9a13d05"
checksum = "c4a00f4242f2db33307347bd5be53263c52a0331c96c14292118c9a6bb48d267"
dependencies = [
"aes 0.6.0",
"aes-gcm 0.10.2",
@ -9639,12 +9638,11 @@ dependencies = [
"hkdf 0.12.3",
"hmac 0.12.1",
"log",
"oid-registry 0.6.1",
"p256",
"p384",
"rand 0.8.5",
"rand_core 0.6.4",
"rcgen 0.9.3",
"rcgen 0.10.0",
"ring",
"rustls 0.19.1",
"sec1",
@ -9657,7 +9655,7 @@ dependencies = [
"tokio",
"webpki 0.21.4",
"webrtc-util",
"x25519-dalek 2.0.0-pre.1",
"x25519-dalek 2.0.0",
"x509-parser 0.13.2",
]
@ -9912,7 +9910,7 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
dependencies = [
"windows-targets 0.48.1",
"windows-targets 0.48.5",
]
[[package]]
@ -9971,7 +9969,7 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
"windows-targets 0.48.1",
"windows-targets 0.48.5",
]
[[package]]
@ -9991,17 +9989,17 @@ dependencies = [
[[package]]
name = "windows-targets"
version = "0.48.1"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
"windows_aarch64_gnullvm 0.48.0",
"windows_aarch64_msvc 0.48.0",
"windows_i686_gnu 0.48.0",
"windows_i686_msvc 0.48.0",
"windows_x86_64_gnu 0.48.0",
"windows_x86_64_gnullvm 0.48.0",
"windows_x86_64_msvc 0.48.0",
"windows_aarch64_gnullvm 0.48.5",
"windows_aarch64_msvc 0.48.5",
"windows_i686_gnu 0.48.5",
"windows_i686_msvc 0.48.5",
"windows_x86_64_gnu 0.48.5",
"windows_x86_64_gnullvm 0.48.5",
"windows_x86_64_msvc 0.48.5",
]
[[package]]
@ -10018,9 +10016,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_msvc"
@ -10048,9 +10046,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_i686_gnu"
@ -10078,9 +10076,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_msvc"
@ -10108,9 +10106,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_i686_msvc"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_x86_64_gnu"
@ -10138,9 +10136,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnullvm"
@ -10150,9 +10148,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_msvc"
@ -10180,15 +10178,15 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.0"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "winnow"
version = "0.5.4"
version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acaaa1190073b2b101e15083c38ee8ec891b5e05cbee516521e94ec008f61e64"
checksum = "d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97"
dependencies = [
"memchr",
]
@ -10303,12 +10301,13 @@ dependencies = [
[[package]]
name = "x25519-dalek"
version = "2.0.0-pre.1"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48df"
checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96"
dependencies = [
"curve25519-dalek 3.2.0",
"curve25519-dalek 4.0.0",
"rand_core 0.6.4",
"serde",
"zeroize",
]
@ -10419,7 +10418,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.28",
"syn 2.0.29",
]
[[package]]

View file

@ -25,7 +25,9 @@ import {
initPlausible,
useClientContext,
useInvalidateQuery,
usePlausiblePageViewMonitor
usePlausibleEvent,
usePlausiblePageViewMonitor,
usePlausiblePingMonitor
} from '@sd/client';
import { GlobalModals } from './components/modal/GlobalModals';
import { useTheme } from './hooks/useTheme';
@ -46,6 +48,7 @@ changeTwTheme('dark');
function AppNavigation() {
const { libraries, library } = useClientContext();
const plausibleEvent = usePlausibleEvent();
// TODO: Make sure library has actually been loaded by this point - precache with useCachedLibraries?
// if (library === undefined) throw new Error("Tried to render AppNavigation before libraries fetched!")
@ -56,6 +59,19 @@ function AppNavigation() {
const [currentPath, setCurrentPath] = useState<string>('/');
usePlausiblePageViewMonitor({ currentPath });
usePlausiblePingMonitor({ currentPath });
useEffect(() => {
const interval = setInterval(() => {
plausibleEvent({
event: {
type: 'ping'
}
});
}, 270 * 1000);
return () => clearInterval(interval);
}, []);
if (library === null && libraries.data) {
currentLibraryStore.id = libraries.data[0]?.uuid ?? null;

View file

@ -34,7 +34,7 @@ const CreatingLibraryScreen = ({ navigation }: OnboardingStackScreenProps<'Creat
]);
// Switch to the new library
currentLibraryStore.id = lib.uuid;
if (obStore.shareTelemetry) {
if (obStore.shareFullTelemetry) {
submitPlausibleEvent({ event: { type: 'libraryCreate' } });
}
},
@ -48,7 +48,7 @@ const CreatingLibraryScreen = ({ navigation }: OnboardingStackScreenProps<'Creat
const created = useRef(false);
const create = async () => {
telemetryStore.shareTelemetry = obStore.shareTelemetry;
telemetryStore.shareFullTelemetry = obStore.shareFullTelemetry;
createLibrary.mutate({ name: obStore.newLibraryName });
};

View file

@ -39,12 +39,12 @@ const RadioButton = ({ title, description, isSelected, style }: RadioButtonProps
};
const PrivacyScreen = ({ navigation }: OnboardingStackScreenProps<'Privacy'>) => {
const [shareTelemetry, setShareTelemetry] = useState<'share-telemetry' | 'no-share-telemetry'>(
const [shareTelemetry, setShareTelemetry] = useState<'share-telemetry' | 'share-minimal'>(
'share-telemetry'
);
const onPress = () => {
getOnboardingStore().shareTelemetry = shareTelemetry === 'share-telemetry';
getOnboardingStore().shareFullTelemetry = shareTelemetry === 'share-telemetry';
navigation.navigate('CreatingLibrary');
};
@ -65,13 +65,13 @@ const PrivacyScreen = ({ navigation }: OnboardingStackScreenProps<'Privacy'>) =>
/>
</Pressable>
<Pressable
testID="share-nothing"
onPress={() => setShareTelemetry('no-share-telemetry')}
testID="share-minimal"
onPress={() => setShareTelemetry('share-minimal')}
>
<RadioButton
title="Share nothing"
description="Do not share any telemetry data with the developers"
isSelected={shareTelemetry === 'no-share-telemetry'}
title="Share the bare minimum"
description="Only share that I am an active user of Spacedrive and a few technical bits"
isSelected={shareTelemetry === 'share-minimal'}
/>
</Pressable>
</View>

View file

@ -2,14 +2,14 @@ appId: com.spacedrive.app
---
- launchApp:
clearState: true
- tapOn: 'Get Started'
- tapOn: "Get Started"
- tapOn:
id: 'library-name'
- inputText: 'TestLib'
- tapOn: 'New Library'
id: "library-name"
- inputText: "TestLib"
- tapOn: "New Library"
- tapOn:
id: 'share-nothing'
- tapOn: 'Continue'
id: "share-minimal"
- tapOn: "Continue"
- tapOn:
id: 'drawer-toggle'
- assertVisible: 'TestLib'
id: "drawer-toggle"
- assertVisible: "TestLib"

View file

@ -47,13 +47,16 @@ export default () => {
description="Share telemetry, even in debug mode (telemetry sharing must also be enabled in your client settings)"
>
<Switch
checked={debugState.shareTelemetry}
checked={debugState.shareFullTelemetry}
onClick={() => {
// if debug telemetry sharing is about to be disabled, but telemetry logging is enabled
// then disable it
if (!debugState.shareTelemetry === false && debugState.telemetryLogging)
if (
!debugState.shareFullTelemetry === false &&
debugState.telemetryLogging
)
getDebugState().telemetryLogging = false;
getDebugState().shareTelemetry = !debugState.shareTelemetry;
getDebugState().shareFullTelemetry = !debugState.shareFullTelemetry;
}}
/>
</Setting>
@ -67,8 +70,11 @@ export default () => {
onClick={() => {
// if telemetry logging is about to be enabled, but debug telemetry sharing is disabled
// then enable it
if (!debugState.telemetryLogging && debugState.shareTelemetry === false)
getDebugState().shareTelemetry = true;
if (
!debugState.telemetryLogging &&
debugState.shareFullTelemetry === false
)
getDebugState().shareFullTelemetry = true;
getDebugState().telemetryLogging = !debugState.telemetryLogging;
}}
/>

View file

@ -1,12 +1,14 @@
import clsx from 'clsx';
import { Suspense, useMemo, useRef } from 'react';
import { Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { Navigate, Outlet } from 'react-router-dom';
import {
ClientContextProvider,
LibraryContextProvider,
initPlausible,
useClientContext,
usePlausiblePageViewMonitor
usePlausibleEvent,
usePlausiblePageViewMonitor,
usePlausiblePingMonitor
} from '@sd/client';
import { useRootContext } from '~/app/RootContext';
import { LibraryIdParamsSchema } from '~/app/route-schemas';
@ -20,6 +22,7 @@ import Toasts from './Toasts';
const Layout = () => {
const { libraries, library } = useClientContext();
const os = useOperatingSystem();
const plausibleEvent = usePlausibleEvent();
const layoutRef = useRef<HTMLDivElement>(null);
@ -30,6 +33,19 @@ const Layout = () => {
const { rawPath } = useRootContext();
usePlausiblePageViewMonitor({ currentPath: rawPath });
usePlausiblePingMonitor({ currentPath: rawPath });
useEffect(() => {
const interval = setInterval(() => {
plausibleEvent({
event: {
type: 'ping'
}
});
}, 270 * 1000);
return () => clearInterval(interval);
}, []);
const ctxValue = useMemo(() => ({ ref: layoutRef }), [layoutRef]);

View file

@ -4,19 +4,21 @@ import { Heading } from '../Layout';
import Setting from '../Setting';
export const Component = () => {
const shareTelemetry = useTelemetryState().shareTelemetry;
const fullTelemetry = useTelemetryState().shareFullTelemetry;
return (
<>
<Heading title="Privacy" description="" />
<Setting
mini
title="Share Telemetry and Usage Data"
description="Share anonymous usage data to help us improve the app."
title="Share Additional Telemetry and Usage Data"
description="Enable to share extra usage information and telemetry with developers in order to further improve the app.
If disabled, the only data sent is that you are an active user, which version of the app and core you're using, and which platform you're on
(e.g. mobile, web or desktop)."
>
<Switch
checked={shareTelemetry}
onClick={() => (telemetryStore.shareTelemetry = !shareTelemetry)}
checked={fullTelemetry}
onClick={() => (telemetryStore.shareFullTelemetry = !fullTelemetry)}
className="m-2 ml-4"
size="md"
/>

View file

@ -33,16 +33,16 @@ export const useContextValue = () => {
export const shareTelemetry = RadioGroupField.options([
z.literal('share-telemetry'),
z.literal('no-telemetry')
z.literal('minimal-telemetry')
]).details({
'share-telemetry': {
heading: 'Share anonymous usage',
description:
'Share completely anonymous telemetry data to help the developers improve the app'
},
'no-telemetry': {
heading: 'Share nothing',
description: 'Do not share any telemetry data with the developers'
'minimal-telemetry': {
heading: 'Share the bare minimum',
description: 'Only share that I am an active user of Spacedrive and a few technical bits'
}
});
@ -74,7 +74,7 @@ const useFormState = () => {
// opted to place this here as users could change their mind before library creation/onboarding finalization
// it feels more fitting to configure it here (once)
telemetryStore.shareTelemetry = getOnboardingStore().shareTelemetry;
telemetryStore.shareFullTelemetry = getOnboardingStore().shareFullTelemetry;
try {
// show creation screen for a bit for smoothness
@ -90,7 +90,7 @@ const useFormState = () => {
library
]);
if (telemetryStore.shareTelemetry) {
if (telemetryStore.shareFullTelemetry) {
submitPlausibleEvent({ event: { type: 'libraryCreate' } });
}

View file

@ -10,7 +10,7 @@ export default function OnboardingPrivacy() {
<Form
form={form}
onSubmit={(e) => {
getOnboardingStore().shareTelemetry =
getOnboardingStore().shareFullTelemetry =
form.getValues('shareTelemetry') === 'share-telemetry';
return onSubmit(e);
}}

View file

@ -6,7 +6,7 @@ export interface DebugState {
enabled: boolean;
rspcLogger: boolean;
reactQueryDevtools: 'enabled' | 'disabled' | 'invisible';
shareTelemetry: boolean; // used for sending telemetry even if the app is in debug mode, and ONLY if client settings also allow telemetry sharing
shareFullTelemetry: boolean; // used for sending telemetry even if the app is in debug mode
telemetryLogging: boolean;
}
@ -14,7 +14,7 @@ const debugState: DebugState = valtioPersist('sd-debugState', {
enabled: globalThis.isDev,
rspcLogger: false,
reactQueryDevtools: globalThis.isDev ? 'invisible' : 'enabled',
shareTelemetry: false,
shareFullTelemetry: false,
telemetryLogging: false
});

View file

@ -13,7 +13,7 @@ const onboardingStoreDefaults = () => ({
newLibraryName: '',
unlockedScreens: ['alpha'],
lastActiveScreen: null as string | null,
shareTelemetry: true,
shareFullTelemetry: true,
useCases: [] as UseCase[],
grantedFullDiskAccess: false
});

View file

@ -6,7 +6,8 @@ import { PlausiblePlatformType, telemetryStore, useTelemetryState } from './useT
/**
* This should be in sync with the Core's version.
*/
const VERSION = '0.1.0';
const CORE_VERSION = '0.1.0'; // This will need to be embedded accordingly
const APP_VERSION = '0.1.0'; // This is specific to desktop/web/mobile and will need to be embedded accordingly
const DOMAIN = 'app.spacedrive.com';
const MOBILE_DOMAIN = 'mobile.spacedrive.com';
@ -86,6 +87,8 @@ type TagCreateEvent = BasePlausibleEvent<'tagCreate'>;
type TagDeleteEvent = BasePlausibleEvent<'tagDelete'>;
type TagAssignEvent = BasePlausibleEvent<'tagAssign'>;
type PingEvent = BasePlausibleEvent<'ping'>;
/**
* All union of available, ready-to-use events.
*
@ -99,7 +102,8 @@ type PlausibleEvent =
| LocationDeleteEvent
| TagCreateEvent
| TagDeleteEvent
| TagAssignEvent;
| TagAssignEvent
| PingEvent;
/**
* An event information wrapper for internal use only.
@ -110,7 +114,9 @@ interface PlausibleTrackerEvent {
eventName: string;
props: {
platform: PlausiblePlatformType;
version: string;
fullTelemetry: boolean;
coreVersion: string;
appVersion: string;
debug: boolean;
};
options: PlausibleTrackerOptions;
@ -135,18 +141,18 @@ interface SubmitEventProps {
*/
screenWidth?: number;
/**
* Whether or not telemetry sharing is enabled for the current client.
* Whether or not full telemetry sharing is enabled for the current client.
*
* It is **crucial** that this is the direct output of `useTelemetryState().shareTelemetry`,
* It is **crucial** that this is the direct output of `useTelemetryState().shareFullTelemetry`,
* regardless of other conditions that may affect whether we share it (such as event overrides).
*/
shareTelemetry: boolean;
shareFullTelemetry: boolean;
/**
* It is **crucial** that this is sourced from the output of `useDebugState()`
*/
debugState: {
enabled: boolean;
shareTelemetry: boolean;
shareFullTelemetry: boolean;
telemetryLogging: boolean;
};
}
@ -175,11 +181,11 @@ interface SubmitEventProps {
*/
const submitPlausibleEvent = async ({ event, debugState, ...props }: SubmitEventProps) => {
if (props.platformType === 'unknown') return;
if (debugState.enabled && debugState.shareTelemetry !== true) return;
// if (debugState.enabled && debugState.shareFullTelemetry !== true) return;
if (
'plausibleOptions' in event && 'telemetryOverride' in event.plausibleOptions
? event.plausibleOptions.telemetryOverride !== true
: props.shareTelemetry !== true
: props.shareFullTelemetry !== true && event.type !== 'ping'
)
return;
@ -187,7 +193,9 @@ const submitPlausibleEvent = async ({ event, debugState, ...props }: SubmitEvent
eventName: event.type,
props: {
platform: props.platformType,
version: VERSION,
fullTelemetry: props.shareFullTelemetry,
coreVersion: CORE_VERSION,
appVersion: APP_VERSION,
debug: debugState.enabled
},
options: {
@ -270,7 +278,7 @@ export const usePlausibleEvent = () => {
submitPlausibleEvent({
debugState,
shareTelemetry: telemetryState.shareTelemetry,
shareFullTelemetry: telemetryState.shareFullTelemetry,
platformType: telemetryState.platform,
...props
});
@ -279,7 +287,7 @@ export const usePlausibleEvent = () => {
);
};
export interface PageViewMonitorProps {
export interface PlausibleMonitorProps {
/**
* This should be sanitized, containing no user-specific information.
*
@ -313,7 +321,7 @@ export interface PageViewMonitorProps {
* });
* ```
*/
export const usePlausiblePageViewMonitor = ({ currentPath }: PageViewMonitorProps) => {
export const usePlausiblePageViewMonitor = ({ currentPath }: PlausibleMonitorProps) => {
const plausibleEvent = usePlausibleEvent();
useEffect(() => {
@ -326,6 +334,32 @@ export const usePlausiblePageViewMonitor = ({ currentPath }: PageViewMonitorProp
}, [currentPath, plausibleEvent]);
};
/**
* A Plausible Analytics `ping` monitoring hook. It watches the router's current
* path, and sends events if a change in the path is detected.
*
* This should be included next to the {@link usePlausiblePageViewMonitor}.
*
* For desktop/web, we use this hook in the `$libraryId` layout and it covers the
* entire app (excluding onboarding, which should not be monitored).
*
* @remarks
* This will submit an 'ping' event, independently of what the currernt telemetry
* sharing settings are (minimum or full).
*
*/
export const usePlausiblePingMonitor = ({ currentPath }: PlausibleMonitorProps) => {
const plausibleEvent = usePlausibleEvent();
useEffect(() => {
plausibleEvent({
event: {
type: 'ping'
}
});
}, [currentPath, plausibleEvent]);
};
export const initPlausible = ({ platformType }: { platformType: PlausiblePlatformType }) => {
telemetryStore.platform = platformType;
return;

View file

@ -10,12 +10,12 @@ import { valtioPersist } from '../lib';
export type PlausiblePlatformType = 'web' | 'mobile' | 'desktop' | 'unknown';
type TelemetryState = {
shareTelemetry: boolean;
shareFullTelemetry: boolean;
platform: PlausiblePlatformType;
};
export const telemetryStore = valtioPersist<TelemetryState>('sd-telemetryStore', {
shareTelemetry: false, // false by default, so functions cannot accidentally send data if the user has not decided
shareFullTelemetry: false, // false by default
platform: 'unknown'
});