Delete subscription if unsub

This commit is contained in:
Hongbo Wu
2023-01-18 14:36:23 +08:00
parent b3fafb0c75
commit e94f6de466
2 changed files with 10 additions and 8 deletions

View File

@ -52,7 +52,6 @@ export const saveSubscription = async ({
name,
newsletterEmail: { id: newsletterEmail.id },
user: { id: userId },
status: SubscriptionStatus.Active,
unsubscribeHttpUrl,
unsubscribeMailTo,
icon,
@ -63,9 +62,7 @@ export const saveSubscription = async ({
return result.identifiers[0].id as string
}
export const unsubscribe = async (
subscription: Subscription
): Promise<Subscription> => {
export const unsubscribe = async (subscription: Subscription) => {
if (subscription.unsubscribeMailTo) {
// unsubscribe by sending email first
await sendUnsubscribeEmail(
@ -79,9 +76,8 @@ export const unsubscribe = async (
throw new Error('No unsubscribe method defined')
}
// set status to unsubscribed
subscription.status = SubscriptionStatus.Unsubscribed
return getRepository(Subscription).save(subscription)
// delete the subscription
await getRepository(Subscription).delete(subscription.id)
}
export const unsubscribeAll = async (
@ -91,7 +87,6 @@ export const unsubscribeAll = async (
const subscriptions = await getRepository(Subscription).find({
where: {
user: { id: newsletterEmail.user.id },
status: SubscriptionStatus.Active,
newsletterEmail: { id: newsletterEmail.id },
},
relations: ['newsletterEmail'],

View File

@ -6,6 +6,7 @@ import 'mocha'
import { User } from '../../src/entity/user'
import { getRepository } from '../../src/entity/utils'
import { NewsletterEmail } from '../../src/entity/newsletter_email'
import { SubscriptionStatus } from '../../src/generated/graphql'
describe('Subscriptions API', () => {
let user: User
@ -31,6 +32,12 @@ describe('Subscriptions API', () => {
// create testing subscriptions
const sub1 = await createTestSubscription(user, 'sub_1', newsletterEmail)
const sub2 = await createTestSubscription(user, 'sub_2', newsletterEmail)
await createTestSubscription(
user,
'sub_3',
newsletterEmail,
SubscriptionStatus.Unsubscribed
)
subscriptions = [sub2, sub1]
})