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[];
placeholder?: string;
setValue: (x: string[]) => void;
segmentsSelector?: 'getDefaultSegments' | 'getSegments';
}
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,
label: segment.name,
count: segment.subscribers,

View File

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

View File

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

View File

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

View File

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