Allow WooCommerce and WP segments in shortcodes settings

[MAILPOET-3419]
This commit is contained in:
Rostislav Wolny
2021-02-12 13:31:33 +01:00
committed by Veljko V
parent cd776fe0cf
commit ab5720b4ca
5 changed files with 10 additions and 3 deletions

View File

@@ -8,10 +8,12 @@ type Props = {
value: string[]; value: string[];
placeholder?: string; placeholder?: string;
setValue: (x: string[]) => void; setValue: (x: string[]) => void;
segmentsSelector?: 'getDefaultSegments' | 'getSegments';
} }
export default (props: Props) => { export default (props: Props) => {
const segments = useSelector('getSegments')().map((segment) => ({ const selector = props.segmentsSelector ? props.segmentsSelector : 'getDefaultSegments';
const segments = useSelector(selector)().map((segment) => ({
value: segment.id, value: segment.id,
label: segment.name, label: segment.name,
count: segment.subscribers, count: segment.subscribers,

View File

@@ -38,6 +38,7 @@ export default function Shortcode({ name, title, description }: Props) {
setValue={setSegments} setValue={setSegments}
id={`${name}-shortcode-segments`} id={`${name}-shortcode-segments`}
placeholder={t('leaveEmptyToDisplayAll')} placeholder={t('leaveEmptyToDisplayAll')}
segmentsSelector="getSegments"
/> />
</Inputs> </Inputs>
</> </>

View File

@@ -51,6 +51,10 @@ export function getSegments(state: State) {
return state.segments; return state.segments;
} }
export function getDefaultSegments(state: State) {
return state.segments.filter((seg) => seg.type === 'default');
}
export function getPages(state: State) { export function getPages(state: State) {
return state.pages; return state.pages;
} }

View File

@@ -139,6 +139,7 @@ type Segment = {
id: string; id: string;
name: string; name: string;
subscribers: string; subscribers: string;
type: 'default' | 'wp_users' | 'woocommerce_users' | 'dynamic';
} }
type Page = { type Page = {
id: number; id: number;

View File

@@ -5,7 +5,6 @@ namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer; use MailPoet\AdminPages\PageRenderer;
use MailPoet\Config\Installer; use MailPoet\Config\Installer;
use MailPoet\Config\ServicesChecker; use MailPoet\Config\ServicesChecker;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Segments\SegmentsSimpleListRepository; use MailPoet\Segments\SegmentsSimpleListRepository;
use MailPoet\Settings\Hosts; use MailPoet\Settings\Hosts;
use MailPoet\Settings\Pages; use MailPoet\Settings\Pages;
@@ -72,7 +71,7 @@ class Settings {
$data = [ $data = [
'settings' => $settings, 'settings' => $settings,
'segments' => $this->segmentsListRepository->getListWithSubscribedSubscribersCounts([SegmentEntity::TYPE_DEFAULT]), 'segments' => $this->segmentsListRepository->getListWithSubscribedSubscribersCounts(),
'premium_key_valid' => !empty($premiumKeyValid), 'premium_key_valid' => !empty($premiumKeyValid),
'mss_key_valid' => !empty($mpApiKeyValid), 'mss_key_valid' => !empty($mpApiKeyValid),
'pages' => Pages::getAll(), 'pages' => Pages::getAll(),