1 
    2 module Model.VolumeAccess.Types
    3   ( VolumeAccess(..)
    4   , getShareFullDefault
    5   ) where
    6 
    7 import Data.Int (Int16)
    8 
    9 import Model.Id.Types
   10 import Model.Permission.Types
   11 import Model.Volume.Types
   12 import Model.Party.Types
   13 
   14 data VolumeAccess = VolumeAccess
   15   { volumeAccessIndividual, volumeAccessChildren :: Permission
   16   , volumeAccessSort :: Maybe Int16
   17   , volumeAccessShareFull :: Maybe Bool
   18   , volumeAccessParty :: Party
   19   , volumeAccessVolume :: Volume
   20   }
   21 
   22 getShareFullDefault :: Party -> Permission -> Maybe Bool
   23 getShareFullDefault targetParty individualAccessLevel =
   24     if (getPartyId targetParty, individualAccessLevel) == (nobodyId, PermissionPUBLIC)
   25     then nobodyPublicLegacyDefault
   26     else generalDefault
   27   where
   28     nobodyId :: Id Party
   29     nobodyId = (getPartyId . accountParty . siteAccount) nobodySiteAuth
   30     nobodyPublicLegacyDefault = Just True
   31     generalDefault = Nothing