export function getSiteComputedAttributes( state, siteId ) { const site = getRawSite( state, siteId ); if ( ! site ) { return null; } const computedAttributes = { domain: getSiteDomain( state, siteId ), hasConflict: isSiteConflicting( state, siteId ), is_customizable: !! canCurrentUser( state, siteId, 'edit_theme_options' ), is_previewable: !! isSitePreviewable( state, siteId ), options: getSiteOptions( state, siteId ), slug: getSiteSlug( state, siteId ), title: getSiteTitle( state, siteId ), }; // If a WordPress.com site has a mapped domain create a `wpcom_url` // attribute to allow site selection with either domain. if ( getSiteOption( state, siteId, 'is_mapped_domain' ) && ! isJetpackSite( state, siteId ) ) { computedAttributes.wpcom_url = withoutHttp( getSiteOption( state, siteId, 'unmapped_url' ) ); } // we only need to use the unmapped URL for conflicting sites if ( computedAttributes.hasConflict ) { computedAttributes.URL = getSiteOption( state, siteId, 'unmapped_url' ); } return computedAttributes; }
export function canCurrentUserUseAds( state, siteId = null ) { if ( ! siteId ) { siteId = getSelectedSiteId( state ); } const site = getSite( state, siteId ); const canUserManageOptions = canCurrentUser( state, siteId, 'manage_options' ); return site && site.options.wordads && canUserManageOptions; }
export function canCurrentUserUpgradeSite( state, siteId = null ) { if ( ! siteId ) { siteId = getSelectedSiteId( state ); } const canUserManageOptions = canCurrentUser( state, siteId, 'manage_options' ); if ( ! canUserManageOptions ) { return false; } const isPaid = isCurrentPlanPaid( state, siteId ); return ! isPaid || isCurrentUserCurrentPlanOwner( state, siteId ); }
export function canCurrentUserUseStore( state, siteId = null ) { if ( ! siteId ) { siteId = getSelectedSiteId( state ); } const canUserManageOptions = canCurrentUser( state, siteId, 'manage_options' ); const isSiteAT = !! isSiteAutomatedTransfer( state, siteId ); const hasSitePendingAT = hasSitePendingAutomatedTransfer( state, siteId ); const transferStatus = getAutomatedTransferStatus( state, siteId ); const siteHasBackgroundTransfer = hasSitePendingAT && transferStatus !== transferStates.ERROR; return ( ( canUserManageOptions && isSiteAT ) || ( config.isEnabled( 'signup/atomic-store-flow' ) && siteHasBackgroundTransfer ) ); }
function canDeleteSite( state, siteId ) { const canManageOptions = canCurrentUser( state, siteId, 'manage_options' ); if ( ! siteId || ! canManageOptions ) { // Current user doesn't have manage options to delete the site return false; } if ( isJetpackSite( state, siteId ) && ! isSiteAutomatedTransfer( state, siteId ) ) { // Current user can't delete a Jetpack site, but can request to delete an Atomic site return false; } if ( isVipSite( state, siteId ) ) { // Current user can't delete a VIP site return false; } return true; }
return siteIds.some( siteId => canCurrentUser( state, siteId, 'manage_options' ) );
export const canUserEditSettingsOfSelectedSite = state => { const siteId = getSelectedSiteId( state ); return siteId ? canCurrentUser( state, siteId, 'manage_options' ) : false; };