Remove redundant property theme
Because we can write and read meta field directly, we don't need our own implementation. [MAILPOET-5640]
This commit is contained in:
@@ -11,9 +11,9 @@ import {
|
|||||||
} from '@wordpress/components';
|
} from '@wordpress/components';
|
||||||
import { __ } from '@wordpress/i18n';
|
import { __ } from '@wordpress/i18n';
|
||||||
import { useEntityProp } from '@wordpress/core-data';
|
import { useEntityProp } from '@wordpress/core-data';
|
||||||
import { useDispatch, useSelect } from '@wordpress/data';
|
import { useSelect } from '@wordpress/data';
|
||||||
import { isEqual } from 'lodash';
|
import { isEqual } from 'lodash';
|
||||||
import { EmailStyles, storeName } from '../../store';
|
import { EmailTheme, storeName } from '../../store';
|
||||||
|
|
||||||
export function DimensionsPanel() {
|
export function DimensionsPanel() {
|
||||||
const availableUnits = useSetting('spacing.units') as string[];
|
const availableUnits = useSetting('spacing.units') as string[];
|
||||||
@@ -21,11 +21,11 @@ export function DimensionsPanel() {
|
|||||||
availableUnits,
|
availableUnits,
|
||||||
});
|
});
|
||||||
|
|
||||||
const [mailpoetEmailData] = useEntityProp(
|
const [meta, setMeta] = useEntityProp('postType', 'mailpoet_email', 'meta');
|
||||||
'postType',
|
const emailTheme = meta?.mailpoet_email_theme as EmailTheme;
|
||||||
'mailpoet_email',
|
const updateEmailTheme = (newValue) => {
|
||||||
'mailpoet_data',
|
setMeta({ ...meta, mailpoet_email_theme: newValue });
|
||||||
);
|
};
|
||||||
|
|
||||||
const { styles } = useSelect((select) => ({
|
const { styles } = useSelect((select) => ({
|
||||||
styles: select(storeName).getStyles(),
|
styles: select(storeName).getStyles(),
|
||||||
@@ -33,77 +33,74 @@ export function DimensionsPanel() {
|
|||||||
const defaultPadding = styles.spacing.padding ?? undefined;
|
const defaultPadding = styles.spacing.padding ?? undefined;
|
||||||
const defaultBlockGap = styles.spacing.blockGap ?? undefined;
|
const defaultBlockGap = styles.spacing.blockGap ?? undefined;
|
||||||
|
|
||||||
const { updateEmailMailPoetTheme } = useDispatch(storeName);
|
|
||||||
|
|
||||||
// Padding
|
// Padding
|
||||||
const paddingValues =
|
const paddingValues = emailTheme?.styles?.spacing?.padding ?? defaultPadding;
|
||||||
mailpoetEmailData.theme?.styles?.spacing?.padding ?? defaultPadding;
|
|
||||||
const resetPadding = () => {
|
const resetPadding = () => {
|
||||||
void updateEmailMailPoetTheme({
|
updateEmailTheme({
|
||||||
...mailpoetEmailData.theme,
|
...emailTheme,
|
||||||
styles: {
|
styles: {
|
||||||
...mailpoetEmailData.theme?.styles,
|
...emailTheme?.styles,
|
||||||
spacing: {
|
spacing: {
|
||||||
...mailpoetEmailData.theme?.styles?.spacing,
|
...emailTheme?.styles?.spacing,
|
||||||
padding: defaultPadding ?? undefined,
|
padding: defaultPadding ?? undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as EmailStyles);
|
});
|
||||||
};
|
};
|
||||||
const setPaddingValues = (value) => {
|
const setPaddingValues = (value) => {
|
||||||
void updateEmailMailPoetTheme({
|
updateEmailTheme({
|
||||||
...mailpoetEmailData.theme,
|
...emailTheme,
|
||||||
styles: {
|
styles: {
|
||||||
...mailpoetEmailData.theme?.styles,
|
...emailTheme?.styles,
|
||||||
spacing: {
|
spacing: {
|
||||||
...mailpoetEmailData.theme?.styles?.spacing,
|
...emailTheme?.styles?.spacing,
|
||||||
padding: value,
|
padding: value,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as EmailStyles);
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Block spacing
|
// Block spacing
|
||||||
const blockGapValue =
|
const blockGapValue =
|
||||||
mailpoetEmailData.theme?.styles?.spacing?.blockGap ?? defaultBlockGap;
|
emailTheme?.styles?.spacing?.blockGap ?? defaultBlockGap;
|
||||||
const resetBlockGap = () => {
|
const resetBlockGap = () => {
|
||||||
void updateEmailMailPoetTheme({
|
updateEmailTheme({
|
||||||
...mailpoetEmailData.theme,
|
...emailTheme,
|
||||||
styles: {
|
styles: {
|
||||||
...mailpoetEmailData.theme?.styles,
|
...emailTheme?.styles,
|
||||||
spacing: {
|
spacing: {
|
||||||
...styles.spacing,
|
...styles.spacing,
|
||||||
blockGap: undefined,
|
blockGap: undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as EmailStyles);
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const setBlockGapValue = (value) => {
|
const setBlockGapValue = (value) => {
|
||||||
void updateEmailMailPoetTheme({
|
updateEmailTheme({
|
||||||
...mailpoetEmailData.theme,
|
...emailTheme,
|
||||||
styles: {
|
styles: {
|
||||||
...mailpoetEmailData.theme?.styles,
|
...emailTheme?.styles,
|
||||||
spacing: {
|
spacing: {
|
||||||
...mailpoetEmailData.theme?.styles?.spacing,
|
...emailTheme?.styles?.spacing,
|
||||||
blockGap: value.top || styles.spacing.blockGap,
|
blockGap: value.top || styles.spacing.blockGap,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as EmailStyles);
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const resetAll = () => {
|
const resetAll = () => {
|
||||||
void updateEmailMailPoetTheme({
|
updateEmailTheme({
|
||||||
...mailpoetEmailData.theme,
|
...emailTheme,
|
||||||
styles: {
|
styles: {
|
||||||
...mailpoetEmailData.theme?.styles,
|
...emailTheme?.styles,
|
||||||
spacing: {
|
spacing: {
|
||||||
...styles.spacing,
|
...styles.spacing,
|
||||||
padding: defaultPadding ?? undefined,
|
padding: defaultPadding ?? undefined,
|
||||||
blockGap: defaultBlockGap ?? undefined,
|
blockGap: defaultBlockGap ?? undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} as EmailStyles);
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@@ -21,15 +21,11 @@ export function ThemeStyles(): JSX.Element {
|
|||||||
[],
|
[],
|
||||||
);
|
);
|
||||||
|
|
||||||
const [mailpoetEmailData] = useEntityProp(
|
const [meta] = useEntityProp('postType', 'mailpoet_email', 'meta');
|
||||||
'postType',
|
|
||||||
'mailpoet_email',
|
|
||||||
'mailpoet_data',
|
|
||||||
);
|
|
||||||
|
|
||||||
const mergedConfig = useMemo(
|
const mergedConfig = useMemo(
|
||||||
() => merge({}, theme, mailpoetEmailData?.theme) as EmailStyles,
|
() => merge({}, theme, meta?.mailpoet_email_theme) as EmailStyles,
|
||||||
[theme, mailpoetEmailData],
|
[theme, meta],
|
||||||
);
|
);
|
||||||
|
|
||||||
const [styles] = useGlobalStylesOutputWithConfig(mergedConfig);
|
const [styles] = useGlobalStylesOutputWithConfig(mergedConfig);
|
||||||
|
@@ -6,7 +6,7 @@ import { store as noticesStore } from '@wordpress/notices';
|
|||||||
import { __ } from '@wordpress/i18n';
|
import { __ } from '@wordpress/i18n';
|
||||||
import { apiFetch } from '@wordpress/data-controls';
|
import { apiFetch } from '@wordpress/data-controls';
|
||||||
import { storeName, mainSidebarEmailTab } from './constants';
|
import { storeName, mainSidebarEmailTab } from './constants';
|
||||||
import { SendingPreviewStatus, State, Feature, EmailStyles } from './types';
|
import { SendingPreviewStatus, State, Feature } from './types';
|
||||||
|
|
||||||
export const toggleFeature =
|
export const toggleFeature =
|
||||||
(feature: Feature) =>
|
(feature: Feature) =>
|
||||||
@@ -124,30 +124,6 @@ export function* updateEmailMailPoetProperty(name: string, value: string) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function* updateEmailMailPoetTheme(theme: EmailStyles) {
|
|
||||||
const postId = select(storeName).getEmailPostId();
|
|
||||||
// There can be a better way how to get the edited post data
|
|
||||||
const editedPost = select(coreDataStore).getEditedEntityRecord(
|
|
||||||
'postType',
|
|
||||||
'mailpoet_email',
|
|
||||||
postId,
|
|
||||||
);
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore
|
|
||||||
const mailpoetData = editedPost?.mailpoet_data || {};
|
|
||||||
yield dispatch(coreDataStore).editEntityRecord(
|
|
||||||
'postType',
|
|
||||||
'mailpoet_email',
|
|
||||||
postId,
|
|
||||||
{
|
|
||||||
mailpoet_data: {
|
|
||||||
...mailpoetData,
|
|
||||||
theme,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function* requestSendingNewsletterPreview(
|
export function* requestSendingNewsletterPreview(
|
||||||
newsletterId: number,
|
newsletterId: number,
|
||||||
email: string,
|
email: string,
|
||||||
|
@@ -34,7 +34,6 @@ class EmailApiController {
|
|||||||
'subject' => $newsletter ? $newsletter->getSubject() : '',
|
'subject' => $newsletter ? $newsletter->getSubject() : '',
|
||||||
'preheader' => $newsletter ? $newsletter->getPreheader() : '',
|
'preheader' => $newsletter ? $newsletter->getPreheader() : '',
|
||||||
'preview_url' => $this->newsletterUrl->getViewInBrowserUrl($newsletter),
|
'preview_url' => $this->newsletterUrl->getViewInBrowserUrl($newsletter),
|
||||||
'theme' => get_post_meta($postEmailData['id'], \MailPoet\EmailEditor\Engine\EmailEditor::MAILPOET_EMAIL_META_THEME_TYPE, true),
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,8 +49,6 @@ class EmailApiController {
|
|||||||
throw new UnexpectedValueException('Newsletter ID does not match the post ID');
|
throw new UnexpectedValueException('Newsletter ID does not match the post ID');
|
||||||
}
|
}
|
||||||
|
|
||||||
update_post_meta($emailPost->ID, \MailPoet\EmailEditor\Engine\EmailEditor::MAILPOET_EMAIL_META_THEME_TYPE, $data['theme']);
|
|
||||||
|
|
||||||
$newsletter->setSubject($data['subject']);
|
$newsletter->setSubject($data['subject']);
|
||||||
$newsletter->setPreheader($data['preheader']);
|
$newsletter->setPreheader($data['preheader']);
|
||||||
$this->newsletterRepository->flush();
|
$this->newsletterRepository->flush();
|
||||||
@@ -63,7 +60,6 @@ class EmailApiController {
|
|||||||
'subject' => Builder::string(),
|
'subject' => Builder::string(),
|
||||||
'preheader' => Builder::string(),
|
'preheader' => Builder::string(),
|
||||||
'preview_url' => Builder::string(),
|
'preview_url' => Builder::string(),
|
||||||
'theme' => Builder::object(),
|
|
||||||
])->toArray();
|
])->toArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user