0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:36:14 -05:00

Wired subscribed toggle to single site newsletter

refs https://github.com/TryGhost/Team/issues/1554

With multiple newsletters, the subscribed property on a member is replaced by newsletter(s) [] which defines member's subscription instead.

- wires existing subscribe toggle on account home to new newsletter backend
This commit is contained in:
Rishabh 2022-04-25 18:12:08 +05:30
parent 84739cca52
commit 37d9099d1a

View file

@ -3,7 +3,7 @@ import MemberAvatar from '../common/MemberGravatar';
import ActionButton from '../common/ActionButton';
import CloseButton from '../common/CloseButton';
import Switch from '../common/Switch';
import {getMemberSubscription, getMemberTierName, getUpdatedOfferPrice, hasMultipleNewsletters, hasMultipleProductsFeature, hasOnlyFreePlan, isComplimentaryMember} from '../../utils/helpers';
import {getMemberSubscription, getMemberTierName, getSiteNewsletters, getUpdatedOfferPrice, hasMultipleNewsletters, hasMultipleProductsFeature, hasOnlyFreePlan, isComplimentaryMember} from '../../utils/helpers';
import {getDateString} from '../../utils/date-time';
import {ReactComponent as LoaderIcon} from '../../images/icons/loader.svg';
import {ReactComponent as OfferTagIcon} from '../../images/icons/offer-tag.svg';
@ -346,7 +346,7 @@ const AccountActions = () => {
function EmailNewsletterAction() {
const {member, site, onAction} = useContext(AppContext);
const {subscribed} = member;
let {subscribed} = member;
if (hasMultipleNewsletters({site})) {
return null;
@ -355,9 +355,18 @@ function EmailNewsletterAction() {
let label = subscribed ? 'Subscribed' : 'Unsubscribed';
const onToggleSubscription = (e, sub) => {
e.preventDefault();
onAction('updateNewsletter', {subscribed: !sub});
const newsletters = getSiteNewsletters({site});
if (newsletters?.length === 1) {
const subscribedNewsletters = !member?.newsletters?.length ? newsletters : [];
onAction('updateNewsletterPreference', {newsletters: subscribedNewsletters});
} else {
onAction('updateNewsletter', {subscribed: !sub});
}
};
const newsletters = getSiteNewsletters({site});
if (newsletters?.length > 0) {
subscribed = !!member?.newsletters?.length;
}
return (
<section>
<div className='gh-portal-list-detail'>