11import { Policy , Video } from "@cap/web-domain" ;
2- import { Effect , Option } from "effect" ;
2+ import { Array , Effect , Option } from "effect" ;
33
44import { OrganisationsRepo } from "../Organisations/OrganisationsRepo" ;
55import { SpacesRepo } from "../Spaces/SpacesRepo" ;
@@ -29,11 +29,18 @@ export class VideosPolicy extends Effect.Service<VideosPolicy>()(
2929 if ( ! video . public ) {
3030 const [ videoOrgShareMembership , videoSpaceShareMembership ] =
3131 yield * Effect . all ( [
32- orgsRepo . membershipForVideo ( userId , video . id ) ,
33- spacesRepo . membershipForVideo ( userId , video . id ) ,
32+ orgsRepo
33+ . membershipForVideo ( userId , video . id )
34+ . pipe ( Effect . map ( Array . get ( 0 ) ) ) ,
35+ spacesRepo
36+ . membershipForVideo ( userId , video . id )
37+ . pipe ( Effect . map ( Array . get ( 0 ) ) ) ,
3438 ] ) ;
3539
36- if ( ! videoSpaceShareMembership || ! videoOrgShareMembership )
40+ if (
41+ Option . isNone ( videoSpaceShareMembership ) &&
42+ Option . isNone ( videoOrgShareMembership )
43+ )
3744 return false ;
3845 }
3946 } else {
@@ -60,6 +67,10 @@ export class VideosPolicy extends Effect.Service<VideosPolicy>()(
6067
6168 return { canView, isOwner } ;
6269 } ) ,
63- dependencies : [ VideosRepo . Default , OrganisationsRepo . Default , SpacesRepo . Default ] ,
70+ dependencies : [
71+ VideosRepo . Default ,
72+ OrganisationsRepo . Default ,
73+ SpacesRepo . Default ,
74+ ] ,
6475 } ,
65- ) { }
76+ ) { }
0 commit comments