Skip to content

Commit 4e86e95

Browse files
breakout into posthog module
1 parent 35748d7 commit 4e86e95

File tree

3 files changed

+62
-56
lines changed

3 files changed

+62
-56
lines changed

apps/desktop/src-tauri/src/lib.rs

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ mod hotkeys;
1616
mod notifications;
1717
mod permissions;
1818
mod platform;
19+
mod posthog;
1920
mod presets;
2021
mod recording;
2122
mod recording_settings;
@@ -74,7 +75,6 @@ use std::{
7475
process::Command,
7576
str::FromStr,
7677
sync::Arc,
77-
time::Duration,
7878
};
7979
use tauri::{AppHandle, Manager, State, Window, WindowEvent, ipc::Channel};
8080
use tauri_plugin_deep_link::DeepLinkExt;
@@ -1945,14 +1945,7 @@ pub async fn run(recording_logging_handle: LoggingHandle) {
19451945
})
19461946
.ok();
19471947

1948-
if let Some(env) = option_env!("VITE_POSTHOG_KEY") {
1949-
tokio::spawn(async move {
1950-
posthog_rs::init_global(env)
1951-
.await
1952-
.map_err(|err| error!("Error initializing PostHog: {err}"))
1953-
.ok();
1954-
});
1955-
}
1948+
posthog::init();
19561949

19571950
let tauri_context = tauri::generate_context!();
19581951

@@ -2772,44 +2765,3 @@ fn open_project_from_path(path: &Path, app: AppHandle) -> Result<(), String> {
27722765

27732766
Ok(())
27742767
}
2775-
2776-
#[derive(Debug)]
2777-
pub enum PostHogEvent {
2778-
MultpartUploadComplete { duration: Duration },
2779-
MultpartUploadFailed { duration: Duration, error: String },
2780-
}
2781-
2782-
impl From<PostHogEvent> for posthog_rs::Event {
2783-
fn from(event: PostHogEvent) -> Self {
2784-
match event {
2785-
PostHogEvent::MultpartUploadComplete { duration } => {
2786-
let mut e = posthog_rs::Event::new_anon("multipart_upload_complete");
2787-
e.insert_prop("duration", duration.as_secs())
2788-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
2789-
.ok();
2790-
e
2791-
}
2792-
PostHogEvent::MultpartUploadFailed { duration, error } => {
2793-
let mut e = posthog_rs::Event::new_anon("multipart_upload_failed");
2794-
e.insert_prop("duration", duration.as_secs())
2795-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
2796-
.ok();
2797-
e.insert_prop("error", error)
2798-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
2799-
.ok();
2800-
e
2801-
}
2802-
}
2803-
}
2804-
}
2805-
2806-
pub fn async_capture_event(event: PostHogEvent) {
2807-
if option_env!("VITE_POSTHOG_KEY").is_some() {
2808-
tokio::spawn(async move {
2809-
posthog_rs::capture(event.into())
2810-
.await
2811-
.map_err(|err| error!("Error sending event to PostHog: {err:?}"))
2812-
.ok();
2813-
});
2814-
}
2815-
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
use std::time::Duration;
2+
use tracing::error;
3+
4+
#[derive(Debug)]
5+
pub enum PostHogEvent {
6+
MultipartUploadComplete { duration: Duration },
7+
MultipartUploadFailed { duration: Duration, error: String },
8+
}
9+
10+
impl From<PostHogEvent> for posthog_rs::Event {
11+
fn from(event: PostHogEvent) -> Self {
12+
match event {
13+
PostHogEvent::MultipartUploadComplete { duration } => {
14+
let mut e = posthog_rs::Event::new_anon("multipart_upload_complete");
15+
e.insert_prop("duration", duration.as_secs())
16+
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
17+
.ok();
18+
e
19+
}
20+
PostHogEvent::MultipartUploadFailed { duration, error } => {
21+
let mut e = posthog_rs::Event::new_anon("multipart_upload_failed");
22+
e.insert_prop("duration", duration.as_secs())
23+
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
24+
.ok();
25+
e.insert_prop("error", error)
26+
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
27+
.ok();
28+
e
29+
}
30+
}
31+
}
32+
}
33+
34+
pub fn init() {
35+
if let Some(env) = option_env!("VITE_POSTHOG_KEY") {
36+
tokio::spawn(async move {
37+
posthog_rs::init_global(env)
38+
.await
39+
.map_err(|err| error!("Error initializing PostHog: {err}"))
40+
.ok();
41+
});
42+
}
43+
}
44+
45+
pub fn async_capture_event(event: PostHogEvent) {
46+
if option_env!("VITE_POSTHOG_KEY").is_some() {
47+
tokio::spawn(async move {
48+
posthog_rs::capture(event.into())
49+
.await
50+
.map_err(|err| error!("Error sending event to PostHog: {err:?}"))
51+
.ok();
52+
});
53+
}
54+
}

apps/desktop/src-tauri/src/upload.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// credit @filleduchaos
22

33
use crate::{
4-
PostHogEvent, UploadProgress, VideoUploadInfo,
4+
UploadProgress, VideoUploadInfo,
55
api::{self, PresignedS3PutRequest, PresignedS3PutRequestMethod, S3VideoMeta, UploadedPart},
6-
async_capture_event,
76
general_settings::GeneralSettingsStore,
7+
posthog::{PostHogEvent, async_capture_event},
88
upload_legacy,
99
web_api::{AuthedApiError, ManagerExt},
1010
};
@@ -151,10 +151,10 @@ pub async fn upload_video(
151151
tokio::join!(video_fut, thumbnail_fut);
152152

153153
async_capture_event(match &video_result {
154-
Ok(()) => PostHogEvent::MultpartUploadComplete {
154+
Ok(()) => PostHogEvent::MultipartUploadComplete {
155155
duration: start.elapsed(),
156156
},
157-
Err(err) => PostHogEvent::MultpartUploadFailed {
157+
Err(err) => PostHogEvent::MultipartUploadFailed {
158158
duration: start.elapsed(),
159159
error: err.to_string(),
160160
},
@@ -374,10 +374,10 @@ impl InstantMultipartUpload {
374374
)
375375
.await;
376376
async_capture_event(match &result {
377-
Ok(()) => PostHogEvent::MultpartUploadComplete {
377+
Ok(()) => PostHogEvent::MultipartUploadComplete {
378378
duration: start.elapsed(),
379379
},
380-
Err(err) => PostHogEvent::MultpartUploadFailed {
380+
Err(err) => PostHogEvent::MultipartUploadFailed {
381381
duration: start.elapsed(),
382382
error: err.to_string(),
383383
},

0 commit comments

Comments
 (0)