Skip to content

Commit 4badfe4

Browse files
standard event struct
1 parent 485d508 commit 4badfe4

File tree

2 files changed

+48
-32
lines changed

2 files changed

+48
-32
lines changed

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

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ use std::{
7474
process::Command,
7575
str::FromStr,
7676
sync::Arc,
77+
time::Duration,
7778
};
7879
use tauri::{AppHandle, Manager, State, Window, WindowEvent, ipc::Channel};
7980
use tauri_plugin_deep_link::DeepLinkExt;
@@ -2772,10 +2773,40 @@ fn open_project_from_path(path: &Path, app: AppHandle) -> Result<(), String> {
27722773
Ok(())
27732774
}
27742775

2775-
pub fn async_capture_event(event: posthog_rs::Event) {
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) {
27762807
if option_env!("VITE_POSTHOG_KEY").is_some() {
27772808
tokio::spawn(async move {
2778-
posthog_rs::capture(event)
2809+
posthog_rs::capture(event.into())
27792810
.await
27802811
.map_err(|err| error!("Error sending event to PostHog: {err:?}"))
27812812
.ok();

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

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

33
use crate::{
4-
UploadProgress, VideoUploadInfo,
4+
PostHogEvent, UploadProgress, VideoUploadInfo,
55
api::{self, PresignedS3PutRequest, PresignedS3PutRequestMethod, S3VideoMeta, UploadedPart},
66
async_capture_event,
77
general_settings::GeneralSettingsStore,
@@ -151,20 +151,13 @@ pub async fn upload_video(
151151
tokio::join!(video_fut, thumbnail_fut);
152152

153153
async_capture_event(match &video_result {
154-
Ok(()) => {
155-
let mut e = posthog_rs::Event::new_anon("multipart_upload_complete");
156-
e.insert_prop("took", start.elapsed().as_millis())
157-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
158-
.ok();
159-
e
160-
}
161-
Err(err) => {
162-
let mut e = posthog_rs::Event::new_anon("multipart_upload_failed");
163-
e.insert_prop("error", err.to_string())
164-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
165-
.ok();
166-
e
167-
}
154+
Ok(()) => PostHogEvent::MultpartUploadComplete {
155+
duration: start.elapsed(),
156+
},
157+
Err(err) => PostHogEvent::MultpartUploadFailed {
158+
duration: start.elapsed(),
159+
error: err.to_string(),
160+
},
168161
});
169162

170163
let _ = (video_result?, thumbnail_result?);
@@ -210,7 +203,6 @@ pub async fn upload_image(
210203
.map_err(Into::into);
211204
}
212205

213-
let start = Instant::now();
214206
let file_name = file_path
215207
.file_name()
216208
.and_then(|name| name.to_str())
@@ -382,20 +374,13 @@ impl InstantMultipartUpload {
382374
)
383375
.await;
384376
async_capture_event(match &result {
385-
Ok(()) => {
386-
let mut e = posthog_rs::Event::new_anon("multipart_upload_complete");
387-
e.insert_prop("took", start.elapsed().as_millis())
388-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
389-
.ok();
390-
e
391-
}
392-
Err(err) => {
393-
let mut e = posthog_rs::Event::new_anon("multipart_upload_failed");
394-
e.insert_prop("error", err.to_string())
395-
.map_err(|err| error!("Error adding PostHog property: {err:?}"))
396-
.ok();
397-
e
398-
}
377+
Ok(()) => PostHogEvent::MultpartUploadComplete {
378+
duration: start.elapsed(),
379+
},
380+
Err(err) => PostHogEvent::MultpartUploadFailed {
381+
duration: start.elapsed(),
382+
error: err.to_string(),
383+
},
399384
});
400385

401386
result.map(|_| ())

0 commit comments

Comments
 (0)