Skip to content

Commit 65ebb90

Browse files
authored
Merge branch 'master' into petra/add-faq
2 parents 97948d5 + 6bd99eb commit 65ebb90

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

app/src/remote_server/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,16 @@ pub(super) fn run_daemon_app(
5858
.spawn(warp_logging::rotate_log_files())
5959
.detach();
6060

61+
use crate::server::telemetry::context_provider::NoopTelemetryContextProvider;
6162
use repo_metadata::repositories::DetectedRepositories;
6263
use repo_metadata::watcher::DirectoryWatcher;
6364
use repo_metadata::RepoMetadataModel;
65+
66+
// Register a no-op telemetry context so that `send_telemetry_from_ctx!`
67+
// calls (e.g. from RepoMetadataModel on ExceededMaxFileLimit) don't
68+
// panic due to a missing TelemetryContextModel singleton.
69+
ctx.add_singleton_model(NoopTelemetryContextProvider::new_context_provider);
70+
6471
// Order matters: DetectedRepositories must be registered before
6572
// RepoMetadataModel because LocalRepoMetadataModel::new()
6673
// subscribes to DetectedRepositories::handle(ctx).

app/src/server/telemetry/context_provider.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,29 @@ impl TelemetryContextProvider for AppTelemetryContextProvider {
2424
auth_state.anonymous_id()
2525
}
2626
}
27+
28+
/// A no-op telemetry context provider for headless contexts (e.g. the remote
29+
/// server daemon) that run without authentication. Telemetry events that
30+
/// require a user/anonymous ID will silently produce empty identifiers,
31+
/// preventing panics from an unregistered `TelemetryContextModel` singleton.
32+
#[cfg_attr(target_family = "wasm", allow(dead_code))]
33+
pub struct NoopTelemetryContextProvider;
34+
35+
impl NoopTelemetryContextProvider {
36+
#[cfg_attr(target_family = "wasm", allow(dead_code))]
37+
pub fn new_context_provider(
38+
_ctx: &mut ModelContext<TelemetryContextModel>,
39+
) -> TelemetryContextModel {
40+
Box::new(Self)
41+
}
42+
}
43+
44+
impl TelemetryContextProvider for NoopTelemetryContextProvider {
45+
fn user_id(&self, _ctx: &AppContext) -> Option<String> {
46+
None
47+
}
48+
49+
fn anonymous_id(&self, _ctx: &AppContext) -> String {
50+
String::new()
51+
}
52+
}

0 commit comments

Comments
 (0)