@@ -409,11 +409,12 @@ impl ModelController {
409409 return Ok ( vec ! [ ] )
410410 }
411411 let user_id = user. user_id ( ) ?;
412- let watcheds = self . store . get_watched ( query, user_id, vec ! [ ] ) . await ?;
412+ let progress_user = self . get_optional_library_mapped_user ( library_id. as_deref ( ) , user. user_id ( ) ?) . await . ok ( ) . unwrap_or ( user_id) ;
413+ let watcheds = self . store . get_watched ( query, progress_user, vec ! [ ] ) . await ?;
413414 Ok ( watcheds)
414415 }
415416
416- pub async fn get_all_watched ( & self , user : & ConnectedUser ) -> RsResult < Vec < Watched > > {
417+ pub async fn get_all_watched ( & self , user : & ConnectedUser ) -> RsResult < Vec < Watched > > {
417418 user. check_role ( & UserRole :: Admin ) ?;
418419
419420 let watcheds = self . store . get_all_watched ( ) . await ?;
@@ -458,10 +459,17 @@ impl ModelController {
458459
459460 user. check_role ( & UserRole :: Read ) ?;
460461 let user_id = user. user_id ( ) ?;
461- let progress = self . store . get_view_progess ( ids, user_id. clone ( ) ) . await ?;
462+ let progress_user = self . get_optional_library_mapped_user ( library_id. as_deref ( ) , user. user_id ( ) ?) . await . ok ( ) . unwrap_or ( user_id) ;
463+ let progress = self . store . get_view_progess ( ids, progress_user) . await ?;
462464 Ok ( progress)
463465 }
464466
467+
468+ pub async fn get_view_progress_by_id ( & self , id : String , user : & ConnectedUser ) -> RsResult < Option < ViewProgress > > {
469+ let media_id = RsIds :: try_from ( id) ?;
470+ self . get_view_progress ( media_id, user, None ) . await
471+ }
472+
465473 pub async fn get_all_view_progress ( & self , query : HistoryQuery , user : & ConnectedUser , library_id : Option < String > ) -> RsResult < Vec < ViewProgress > > {
466474 if matches ! ( user, ConnectedUser :: ServerAdmin ) {
467475 return Ok ( vec ! [ ] )
@@ -470,23 +478,11 @@ impl ModelController {
470478
471479 user. check_role ( & UserRole :: Read ) ?;
472480 let user_id = user. user_id ( ) ?;
473- let progresses = self . store . get_all_view_progress ( query, user_id) . await ?;
481+ let progress_user = self . get_optional_library_mapped_user ( library_id. as_deref ( ) , user. user_id ( ) ?) . await . ok ( ) . unwrap_or ( user_id) ;
482+ let progresses = self . store . get_all_view_progress ( query, progress_user) . await ?;
474483 Ok ( progresses)
475484 }
476485
477- pub async fn get_view_progress_by_id ( & self , id : String , user : & ConnectedUser ) -> RsResult < Option < ViewProgress > > {
478- if matches ! ( user, ConnectedUser :: ServerAdmin ) {
479- return Ok ( None )
480- }
481-
482- user. check_role ( & UserRole :: Read ) ?;
483- let media_id = RsIds :: try_from ( id) ?;
484- let progress = match user {
485- ConnectedUser :: Server ( user) => self . store . get_view_progess ( media_id, user. id . clone ( ) ) . await ?,
486- _ => None
487- } ;
488- Ok ( progress)
489- }
490486
491487 pub async fn get_upload_key ( & self , key : String ) -> RsResult < UploadKey > {
492488 Ok ( self . store . get_upload_key ( key) . await ?)
0 commit comments