@@ -5,7 +5,7 @@ use crate::{
55 api:: { self , PresignedS3PutRequest , PresignedS3PutRequestMethod , S3VideoMeta , UploadedPart } ,
66 general_settings:: GeneralSettingsStore ,
77 upload_legacy,
8- web_api:: ManagerExt ,
8+ web_api:: { AuthedApiError , ManagerExt } ,
99} ;
1010use async_stream:: { stream, try_stream} ;
1111use axum:: http:: Uri ;
@@ -17,6 +17,7 @@ use flume::Receiver;
1717use futures:: { Stream , StreamExt , TryStreamExt , stream} ;
1818use image:: { ImageReader , codecs:: jpeg:: JpegEncoder } ;
1919use reqwest:: StatusCode ;
20+ use sentry:: types:: Auth ;
2021use serde:: { Deserialize , Serialize } ;
2122use specta:: Type ;
2223use std:: {
@@ -129,7 +130,7 @@ pub async fn upload_video(
129130 stream:: once ( async move { Ok :: < _ , std:: io:: Error > ( bytes:: Bytes :: from ( bytes) ) } ) ,
130131 ) ;
131132
132- let ( video_result, thumbnail_result) : ( Result < _ , String > , Result < _ , String > ) =
133+ let ( video_result, thumbnail_result) : ( Result < _ , AuthedApiError > , Result < _ , AuthedApiError > ) =
133134 tokio:: join!( video_fut, thumbnail_fut) ;
134135
135136 let _ = ( video_result?, thumbnail_result?) ;
@@ -154,7 +155,10 @@ async fn file_reader_stream(path: impl AsRef<Path>) -> Result<(ReaderStream<File
154155 Ok ( ( ReaderStream :: new ( file) , metadata. len ( ) ) )
155156}
156157
157- pub async fn upload_image ( app : & AppHandle , file_path : PathBuf ) -> Result < UploadedItem , String > {
158+ pub async fn upload_image (
159+ app : & AppHandle ,
160+ file_path : PathBuf ,
161+ ) -> Result < UploadedItem , AuthedApiError > {
158162 let is_new_uploader_enabled = GeneralSettingsStore :: get ( app)
159163 . map_err ( |err| error ! ( "Error checking status of new uploader flow from settings: {err}" ) )
160164 . ok ( )
@@ -167,7 +171,8 @@ pub async fn upload_image(app: &AppHandle, file_path: PathBuf) -> Result<Uploade
167171 . map ( |v| UploadedItem {
168172 link : v. link ,
169173 id : v. id ,
170- } ) ;
174+ } )
175+ . map_err ( Into :: into) ;
171176 }
172177
173178 let file_name = file_path
@@ -205,7 +210,7 @@ pub async fn create_or_get_video(
205210 name : Option < String > ,
206211 meta : Option < S3VideoMeta > ,
207212) -> Result < S3UploadMeta , AuthedApiError > {
208- return Err ( AuthedApiError :: InvalidAuthentication ) ; // TODO
213+ return Err ( AuthedApiError :: Other ( "A made up error" . into ( ) ) ) ; // TODO
209214
210215 let mut s3_config_url = if let Some ( id) = video_id {
211216 format ! ( "/api/desktop/video/create?recordingMode=desktopMP4&videoId={id}" )
@@ -315,7 +320,7 @@ pub async fn compress_image(path: PathBuf) -> Result<Vec<u8>, String> {
315320}
316321
317322pub struct InstantMultipartUpload {
318- pub handle : tokio:: task:: JoinHandle < Result < ( ) , String > > ,
323+ pub handle : tokio:: task:: JoinHandle < Result < ( ) , AuthedApiError > > ,
319324}
320325
321326impl InstantMultipartUpload {
@@ -345,7 +350,7 @@ impl InstantMultipartUpload {
345350 pre_created_video : VideoUploadInfo ,
346351 realtime_video_done : Option < Receiver < ( ) > > ,
347352 recording_dir : PathBuf ,
348- ) -> Result < ( ) , String > {
353+ ) -> Result < ( ) , AuthedApiError > {
349354 let is_new_uploader_enabled = GeneralSettingsStore :: get ( & app)
350355 . map_err ( |err| {
351356 error ! ( "Error checking status of new uploader flow from settings: {err}" )
@@ -362,7 +367,8 @@ impl InstantMultipartUpload {
362367 pre_created_video,
363368 realtime_video_done,
364369 )
365- . await ;
370+ . await
371+ . map_err ( Into :: into) ;
366372 }
367373
368374 let video_id = pre_created_video. id . clone ( ) ;
@@ -594,7 +600,7 @@ fn multipart_uploader(
594600 video_id : String ,
595601 upload_id : String ,
596602 stream : impl Stream < Item = io:: Result < Chunk > > ,
597- ) -> impl Stream < Item = Result < UploadedPart , String > > {
603+ ) -> impl Stream < Item = Result < UploadedPart , AuthedApiError > > {
598604 debug ! ( "Initializing multipart uploader for video {video_id:?}" ) ;
599605
600606 try_stream ! {
@@ -647,7 +653,7 @@ pub async fn singlepart_uploader(
647653 request : PresignedS3PutRequest ,
648654 total_size : u64 ,
649655 stream : impl Stream < Item = io:: Result < Bytes > > + Send + ' static ,
650- ) -> Result < ( ) , String > {
656+ ) -> Result < ( ) , AuthedApiError > {
651657 let presigned_url = api:: upload_signed ( & app, request) . await ?;
652658
653659 let url = Uri :: from_str ( & presigned_url)
0 commit comments