@@ -28,7 +28,7 @@ mod web_api;
2828mod windows;
2929
3030use audio:: AppSounds ;
31- use auth:: { AuthStore , AuthenticationInvalid , Plan } ;
31+ use auth:: { AuthStore , Plan } ;
3232use camera:: CameraPreviewState ;
3333use cap_editor:: { EditorInstance , EditorState } ;
3434use cap_project:: {
@@ -87,6 +87,7 @@ use tokio::sync::Mutex;
8787use tokio:: sync:: { RwLock , oneshot} ;
8888use tracing:: { error, trace, warn} ;
8989use upload:: { create_or_get_video, upload_image, upload_video} ;
90+ use web_api:: AuthedApiError ;
9091use web_api:: ManagerExt as WebManagerExt ;
9192use windows:: { CapWindowId , EditorWindowIds , ShowCapWindow , set_window_transparent} ;
9293
@@ -1084,7 +1085,7 @@ async fn upload_exported_video(
10841085
10851086 channel. send ( UploadProgress { progress : 0.0 } ) . ok ( ) ;
10861087
1087- let s3_config = async {
1088+ let s3_config = match async {
10881089 let video_id = match mode {
10891090 UploadMode :: Initial { pre_created_video } => {
10901091 if let Some ( pre_created) = pre_created_video {
@@ -1094,7 +1095,7 @@ async fn upload_exported_video(
10941095 }
10951096 UploadMode :: Reupload => {
10961097 let Some ( sharing) = meta. sharing . clone ( ) else {
1097- return Err ( "No sharing metadata found" . to_string ( ) ) ;
1098+ return Err ( "No sharing metadata found" . into ( ) ) ;
10981099 } ;
10991100
11001101 Some ( sharing. id )
@@ -1110,7 +1111,13 @@ async fn upload_exported_video(
11101111 )
11111112 . await
11121113 }
1113- . await ?;
1114+ . await
1115+ {
1116+ Ok ( data) => data,
1117+ Err ( AuthedApiError :: InvalidAuthentication ) => return Ok ( UploadResult :: NotAuthenticated ) ,
1118+ Err ( AuthedApiError :: UpgradeRequired ) => return Ok ( UploadResult :: UpgradeRequired ) ,
1119+ Err ( err) => return Err ( err. to_string ( ) ) ,
1120+ } ;
11141121
11151122 let screenshot_path = meta. project_path . join ( "screenshots/display.jpg" ) ;
11161123 meta. upload = Some ( UploadMeta :: SinglePartUpload {
@@ -1154,17 +1161,20 @@ async fn upload_exported_video(
11541161 NotificationType :: ShareableLinkCopied . send ( & app) ;
11551162 Ok ( UploadResult :: Success ( uploaded_video. link ) )
11561163 }
1164+ Err ( AuthedApiError :: UpgradeRequired ) => Ok ( UploadResult :: UpgradeRequired ) ,
11571165 Err ( e) => {
11581166 error ! ( "Failed to upload video: {e}" ) ;
11591167
11601168 NotificationType :: UploadFailed . send ( & app) ;
11611169
1162- meta. upload = Some ( UploadMeta :: Failed { error : e. clone ( ) } ) ;
1170+ meta. upload = Some ( UploadMeta :: Failed {
1171+ error : e. to_string ( ) ,
1172+ } ) ;
11631173 meta. save_for_project ( )
11641174 . map_err ( |e| error ! ( "Failed to save recording meta: {e}" ) )
11651175 . ok ( ) ;
11661176
1167- Err ( e)
1177+ Err ( e. to_string ( ) . into ( ) )
11681178 }
11691179 }
11701180}
@@ -1597,16 +1607,10 @@ async fn check_upgraded_and_update(app: AppHandle) -> Result<bool, String> {
15971607 . await
15981608 . map_err ( |e| {
15991609 println ! ( "Failed to fetch plan: {e}" ) ;
1600- format ! ( "Failed to fetch plan: {e}" )
1610+ e . to_string ( )
16011611 } ) ?;
16021612
16031613 println ! ( "Plan fetch response status: {}" , response. status( ) ) ;
1604- if response. status ( ) == reqwest:: StatusCode :: UNAUTHORIZED {
1605- println ! ( "Unauthorized response, clearing auth store" ) ;
1606- AuthStore :: set ( & app, None ) . map_err ( |e| e. to_string ( ) ) ?;
1607- return Ok ( false ) ;
1608- }
1609-
16101614 let plan_data = response. json :: < serde_json:: Value > ( ) . await . map_err ( |e| {
16111615 println ! ( "Failed to parse plan response: {e}" ) ;
16121616 format ! ( "Failed to parse plan response: {e}" )
@@ -1998,7 +2002,6 @@ pub async fn run(recording_logging_handle: LoggingHandle) {
19982002 RequestOpenSettings ,
19992003 RequestScreenCapturePrewarm ,
20002004 NewNotification ,
2001- AuthenticationInvalid ,
20022005 audio_meter:: AudioInputLevelChange ,
20032006 captions:: DownloadProgress ,
20042007 recording:: RecordingEvent ,
@@ -2548,7 +2551,7 @@ async fn resume_uploads(app: AppHandle) -> Result<(), String> {
25482551 error ! ( "Error completing resumed upload for video: {error}" ) ;
25492552
25502553 if let Ok ( mut meta) = RecordingMeta :: load_for_project ( & recording_dir) . map_err ( |err| error ! ( "Error loading project metadata: {err}" ) ) {
2551- meta. upload = Some ( UploadMeta :: Failed { error } ) ;
2554+ meta. upload = Some ( UploadMeta :: Failed { error : error . to_string ( ) } ) ;
25522555 meta. save_for_project ( ) . map_err ( |err| error ! ( "Error saving project metadata: {err}" ) ) . ok ( ) ;
25532556 }
25542557 } )
0 commit comments