mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-04 02:01:58 -05:00
clean up repetitive code
This commit is contained in:
parent
e79fe1cbe3
commit
10c190837d
1 changed files with 40 additions and 55 deletions
|
@ -59,6 +59,38 @@ export default function UnsubscribePage() {
|
||||||
const {comments_enabled: commentsEnabled} = site;
|
const {comments_enabled: commentsEnabled} = site;
|
||||||
const {enable_comment_notifications: enableCommentNotifications = false} = member || {};
|
const {enable_comment_notifications: enableCommentNotifications = false} = member || {};
|
||||||
|
|
||||||
|
const updateNewsletters = async (newsletters) => {
|
||||||
|
const updatedData = await updateMemberNewsletters({api, memberUuid: pageData.uuid, newsletters});
|
||||||
|
setSubscribedNewsletters(updatedData.newsletters);
|
||||||
|
// Keep the member data in sync if logged in
|
||||||
|
if (loggedInMember) {
|
||||||
|
loggedInMember.newsletters = updatedData.newsletters;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateCommentNotifications = async (enabled) => {
|
||||||
|
const updatedData = await updateMemberNewsletters({api, memberUuid: pageData.uuid, enableCommentNotifications: enabled});
|
||||||
|
setMember(updatedData);
|
||||||
|
// Keep the member data in sync if logged in
|
||||||
|
if (loggedInMember) {
|
||||||
|
loggedInMember.enable_comment_notifications = enabled;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const unsubscribeAll = async () => {
|
||||||
|
setSubscribedNewsletters([]);
|
||||||
|
onAction('showPopupNotification', {
|
||||||
|
action: 'updated:success',
|
||||||
|
message: t(`Unsubscribed from all emails.`)
|
||||||
|
});
|
||||||
|
const updatedMember = await api.member.updateNewsletters({uuid: pageData.uuid, newsletters: [], enableCommentNotifications: false});
|
||||||
|
setMember(updatedMember);
|
||||||
|
if (loggedInMember) {
|
||||||
|
loggedInMember.newsletters = [];
|
||||||
|
loggedInMember.enable_comment_notifications = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// This handles the url query param actions that ultimately launch this component/modal
|
// This handles the url query param actions that ultimately launch this component/modal
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const ghostApi = setupGhostApi({siteUrl: site.url});
|
const ghostApi = setupGhostApi({siteUrl: site.url});
|
||||||
|
@ -84,42 +116,15 @@ export default function UnsubscribePage() {
|
||||||
setSubscribedNewsletters(memberNewsletters);
|
setSubscribedNewsletters(memberNewsletters);
|
||||||
if (siteNewsletters?.length === 1 && !commentsEnabled && !pageData.newsletterUuid) {
|
if (siteNewsletters?.length === 1 && !commentsEnabled && !pageData.newsletterUuid) {
|
||||||
// Unsubscribe from all the newsletters, because we only have one
|
// Unsubscribe from all the newsletters, because we only have one
|
||||||
const updatedData = await updateMemberNewsletters({
|
await updateNewsletters([]);
|
||||||
api: ghostApi,
|
|
||||||
memberUuid: pageData.uuid,
|
|
||||||
newsletters: []
|
|
||||||
});
|
|
||||||
setSubscribedNewsletters(updatedData.newsletters);
|
|
||||||
// Update the member data in the context if logged in
|
|
||||||
if (loggedInMember) {
|
|
||||||
loggedInMember.newsletters = updatedData.newsletters;
|
|
||||||
}
|
|
||||||
} else if (pageData.newsletterUuid) {
|
} else if (pageData.newsletterUuid) {
|
||||||
// Unsubscribe link for a specific newsletter
|
// Unsubscribe link for a specific newsletter
|
||||||
const updatedData = await updateMemberNewsletters({
|
await updateNewsletters(memberNewsletters?.filter((d) => {
|
||||||
api: ghostApi,
|
|
||||||
memberUuid: pageData.uuid,
|
|
||||||
newsletters: memberNewsletters?.filter((d) => {
|
|
||||||
return d.uuid !== pageData.newsletterUuid;
|
return d.uuid !== pageData.newsletterUuid;
|
||||||
})
|
}));
|
||||||
});
|
|
||||||
setSubscribedNewsletters(updatedData.newsletters);
|
|
||||||
// Update the member data in the context if logged in
|
|
||||||
if (loggedInMember) {
|
|
||||||
loggedInMember.newsletters = updatedData.newsletters;
|
|
||||||
}
|
|
||||||
} else if (pageData.comments && commentsEnabled) {
|
} else if (pageData.comments && commentsEnabled) {
|
||||||
// Unsubscribe link for comments
|
// Unsubscribe link for comments
|
||||||
const updatedData = await updateMemberNewsletters({
|
await updateCommentNotifications(false);
|
||||||
api: ghostApi,
|
|
||||||
memberUuid: pageData.uuid,
|
|
||||||
enableCommentNotifications: false
|
|
||||||
});
|
|
||||||
|
|
||||||
setMember(updatedData);
|
|
||||||
if (loggedInMember) {
|
|
||||||
loggedInMember.enable_comment_notifications = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}, [commentsEnabled, pageData.uuid, pageData.newsletterUuid, pageData.comments, site.url, siteNewsletters?.length]);
|
}, [commentsEnabled, pageData.uuid, pageData.newsletterUuid, pageData.comments, site.url, siteNewsletters?.length]);
|
||||||
|
@ -241,33 +246,13 @@ export default function UnsubscribePage() {
|
||||||
notification={HeaderNotification}
|
notification={HeaderNotification}
|
||||||
subscribedNewsletters={subscribedNewsletters}
|
subscribedNewsletters={subscribedNewsletters}
|
||||||
updateSubscribedNewsletters={async (newsletters) => {
|
updateSubscribedNewsletters={async (newsletters) => {
|
||||||
setSubscribedNewsletters(newsletters);
|
await updateNewsletters(newsletters);
|
||||||
setHasInteracted(true);
|
setHasInteracted(true);
|
||||||
await api.member.updateNewsletters({uuid: pageData.uuid, newsletters});
|
|
||||||
if (loggedInMember) {
|
|
||||||
loggedInMember.newsletters = newsletters;
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
updateCommentNotifications={async (enabled) => {
|
|
||||||
const updatedMember = await api.member.updateNewsletters({uuid: pageData.uuid, enableCommentNotifications: enabled});
|
|
||||||
setMember(updatedMember);
|
|
||||||
if (loggedInMember) {
|
|
||||||
loggedInMember.enable_comment_notifications = enabled;
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
|
updateCommentNotifications={updateCommentNotifications}
|
||||||
unsubscribeAll={async () => {
|
unsubscribeAll={async () => {
|
||||||
|
await unsubscribeAll();
|
||||||
setHasInteracted(true);
|
setHasInteracted(true);
|
||||||
setSubscribedNewsletters([]);
|
|
||||||
onAction('showPopupNotification', {
|
|
||||||
action: 'updated:success',
|
|
||||||
message: t(`Unsubscribed from all emails.`)
|
|
||||||
});
|
|
||||||
const updatedMember = await api.member.updateNewsletters({uuid: pageData.uuid, newsletters: [], enableCommentNotifications: false});
|
|
||||||
setMember(updatedMember);
|
|
||||||
if (loggedInMember) {
|
|
||||||
loggedInMember.newsletters = [];
|
|
||||||
loggedInMember.enable_comment_notifications = false;
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
isPaidMember={member?.status !== 'free'}
|
isPaidMember={member?.status !== 'free'}
|
||||||
isCommentsEnabled={commentsEnabled !== 'off'}
|
isCommentsEnabled={commentsEnabled !== 'off'}
|
||||||
|
|
Loading…
Add table
Reference in a new issue