@@ -25,10 +25,11 @@ mod tray;
2525mod upload;
2626mod upload_legacy;
2727mod web_api;
28+ mod window_exclusion;
2829mod windows;
2930
3031use audio:: AppSounds ;
31- use auth:: { AuthStore , AuthenticationInvalid , Plan } ;
32+ use auth:: { AuthStore , Plan } ;
3233use camera:: CameraPreviewState ;
3334use cap_editor:: { EditorInstance , EditorState } ;
3435use cap_project:: {
@@ -87,6 +88,7 @@ use tokio::sync::Mutex;
8788use tokio:: sync:: { RwLock , oneshot} ;
8889use tracing:: { error, trace, warn} ;
8990use upload:: { create_or_get_video, upload_image, upload_video} ;
91+ use web_api:: AuthedApiError ;
9092use web_api:: ManagerExt as WebManagerExt ;
9193use windows:: { CapWindowId , EditorWindowIds , ShowCapWindow , set_window_transparent} ;
9294
@@ -1084,7 +1086,7 @@ async fn upload_exported_video(
10841086
10851087 channel. send ( UploadProgress { progress : 0.0 } ) . ok ( ) ;
10861088
1087- let s3_config = async {
1089+ let s3_config = match async {
10881090 let video_id = match mode {
10891091 UploadMode :: Initial { pre_created_video } => {
10901092 if let Some ( pre_created) = pre_created_video {
@@ -1094,7 +1096,7 @@ async fn upload_exported_video(
10941096 }
10951097 UploadMode :: Reupload => {
10961098 let Some ( sharing) = meta. sharing . clone ( ) else {
1097- return Err ( "No sharing metadata found" . to_string ( ) ) ;
1099+ return Err ( "No sharing metadata found" . into ( ) ) ;
10981100 } ;
10991101
11001102 Some ( sharing. id )
@@ -1110,7 +1112,13 @@ async fn upload_exported_video(
11101112 )
11111113 . await
11121114 }
1113- . await ?;
1115+ . await
1116+ {
1117+ Ok ( data) => data,
1118+ Err ( AuthedApiError :: InvalidAuthentication ) => return Ok ( UploadResult :: NotAuthenticated ) ,
1119+ Err ( AuthedApiError :: UpgradeRequired ) => return Ok ( UploadResult :: UpgradeRequired ) ,
1120+ Err ( err) => return Err ( err. to_string ( ) ) ,
1121+ } ;
11141122
11151123 let screenshot_path = meta. project_path . join ( "screenshots/display.jpg" ) ;
11161124 meta. upload = Some ( UploadMeta :: SinglePartUpload {
@@ -1154,17 +1162,20 @@ async fn upload_exported_video(
11541162 NotificationType :: ShareableLinkCopied . send ( & app) ;
11551163 Ok ( UploadResult :: Success ( uploaded_video. link ) )
11561164 }
1165+ Err ( AuthedApiError :: UpgradeRequired ) => Ok ( UploadResult :: UpgradeRequired ) ,
11571166 Err ( e) => {
11581167 error ! ( "Failed to upload video: {e}" ) ;
11591168
11601169 NotificationType :: UploadFailed . send ( & app) ;
11611170
1162- meta. upload = Some ( UploadMeta :: Failed { error : e. clone ( ) } ) ;
1171+ meta. upload = Some ( UploadMeta :: Failed {
1172+ error : e. to_string ( ) ,
1173+ } ) ;
11631174 meta. save_for_project ( )
11641175 . map_err ( |e| error ! ( "Failed to save recording meta: {e}" ) )
11651176 . ok ( ) ;
11661177
1167- Err ( e)
1178+ Err ( e. to_string ( ) . into ( ) )
11681179 }
11691180 }
11701181}
@@ -1597,16 +1608,10 @@ async fn check_upgraded_and_update(app: AppHandle) -> Result<bool, String> {
15971608 . await
15981609 . map_err ( |e| {
15991610 println ! ( "Failed to fetch plan: {e}" ) ;
1600- format ! ( "Failed to fetch plan: {e}" )
1611+ e . to_string ( )
16011612 } ) ?;
16021613
16031614 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-
16101615 let plan_data = response. json :: < serde_json:: Value > ( ) . await . map_err ( |e| {
16111616 println ! ( "Failed to parse plan response: {e}" ) ;
16121617 format ! ( "Failed to parse plan response: {e}" )
@@ -1914,6 +1919,8 @@ pub async fn run(recording_logging_handle: LoggingHandle) {
19141919 recording:: list_capture_displays,
19151920 recording:: list_displays_with_thumbnails,
19161921 recording:: list_windows_with_thumbnails,
1922+ windows:: refresh_window_content_protection,
1923+ general_settings:: get_default_excluded_windows,
19171924 take_screenshot,
19181925 list_audio_devices,
19191926 close_recordings_overlay_window,
@@ -1998,7 +2005,6 @@ pub async fn run(recording_logging_handle: LoggingHandle) {
19982005 RequestOpenSettings ,
19992006 RequestScreenCapturePrewarm ,
20002007 NewNotification ,
2001- AuthenticationInvalid ,
20022008 audio_meter:: AudioInputLevelChange ,
20032009 captions:: DownloadProgress ,
20042010 recording:: RecordingEvent ,
@@ -2014,7 +2020,8 @@ pub async fn run(recording_logging_handle: LoggingHandle) {
20142020 . typ :: < hotkeys:: HotkeysStore > ( )
20152021 . typ :: < general_settings:: GeneralSettingsStore > ( )
20162022 . typ :: < recording_settings:: RecordingSettingsStore > ( )
2017- . typ :: < cap_flags:: Flags > ( ) ;
2023+ . typ :: < cap_flags:: Flags > ( )
2024+ . typ :: < crate :: window_exclusion:: WindowExclusion > ( ) ;
20182025
20192026 #[ cfg( debug_assertions) ]
20202027 specta_builder
@@ -2114,7 +2121,7 @@ pub async fn run(recording_logging_handle: LoggingHandle) {
21142121 CapWindowId :: CaptureArea . label ( ) . as_str ( ) ,
21152122 CapWindowId :: Camera . label ( ) . as_str ( ) ,
21162123 CapWindowId :: RecordingsOverlay . label ( ) . as_str ( ) ,
2117- CapWindowId :: InProgressRecording . label ( ) . as_str ( ) ,
2124+ CapWindowId :: RecordingControls . label ( ) . as_str ( ) ,
21182125 CapWindowId :: Upgrade . label ( ) . as_str ( ) ,
21192126 ] )
21202127 . map_label ( |label| match label {
@@ -2548,7 +2555,7 @@ async fn resume_uploads(app: AppHandle) -> Result<(), String> {
25482555 error ! ( "Error completing resumed upload for video: {error}" ) ;
25492556
25502557 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 } ) ;
2558+ meta. upload = Some ( UploadMeta :: Failed { error : error . to_string ( ) } ) ;
25522559 meta. save_for_project ( ) . map_err ( |err| error ! ( "Error saving project metadata: {err}" ) ) . ok ( ) ;
25532560 }
25542561 } )
0 commit comments