mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-17 23:44:39 -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:
parent
84739cca52
commit
37d9099d1a
1 changed files with 13 additions and 4 deletions
|
@ -3,7 +3,7 @@ import MemberAvatar from '../common/MemberGravatar';
|
||||||
import ActionButton from '../common/ActionButton';
|
import ActionButton from '../common/ActionButton';
|
||||||
import CloseButton from '../common/CloseButton';
|
import CloseButton from '../common/CloseButton';
|
||||||
import Switch from '../common/Switch';
|
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 {getDateString} from '../../utils/date-time';
|
||||||
import {ReactComponent as LoaderIcon} from '../../images/icons/loader.svg';
|
import {ReactComponent as LoaderIcon} from '../../images/icons/loader.svg';
|
||||||
import {ReactComponent as OfferTagIcon} from '../../images/icons/offer-tag.svg';
|
import {ReactComponent as OfferTagIcon} from '../../images/icons/offer-tag.svg';
|
||||||
|
@ -346,7 +346,7 @@ const AccountActions = () => {
|
||||||
|
|
||||||
function EmailNewsletterAction() {
|
function EmailNewsletterAction() {
|
||||||
const {member, site, onAction} = useContext(AppContext);
|
const {member, site, onAction} = useContext(AppContext);
|
||||||
const {subscribed} = member;
|
let {subscribed} = member;
|
||||||
|
|
||||||
if (hasMultipleNewsletters({site})) {
|
if (hasMultipleNewsletters({site})) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -355,9 +355,18 @@ function EmailNewsletterAction() {
|
||||||
let label = subscribed ? 'Subscribed' : 'Unsubscribed';
|
let label = subscribed ? 'Subscribed' : 'Unsubscribed';
|
||||||
const onToggleSubscription = (e, sub) => {
|
const onToggleSubscription = (e, sub) => {
|
||||||
e.preventDefault();
|
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 (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<div className='gh-portal-list-detail'>
|
<div className='gh-portal-list-detail'>
|
||||||
|
|
Loading…
Add table
Reference in a new issue