This commit is contained in:
Hongbo Wu
2023-08-02 22:00:09 +08:00
parent b403dea247
commit f3994a8a06

View File

@ -44,52 +44,61 @@ export const subscriptionsResolver = authorized<
SubscriptionsSuccessPartial,
SubscriptionsError,
QuerySubscriptionsArgs
>(async (_obj, { sort, type: subscriptionType }, { claims: { uid }, log }) => {
log.info('subscriptionsResolver')
>(
async (
_obj,
{ sort, type = SubscriptionType.Newsletter }, // default to newsletter
{ claims: { uid }, log }
) => {
log.info('subscriptionsResolver')
analytics.track({
userId: uid,
event: 'subscriptions',
properties: {
env: env.server.apiEnv,
},
})
analytics.track({
userId: uid,
event: 'subscriptions',
properties: {
env: env.server.apiEnv,
},
})
try {
const sortBy =
sort?.by === SortBy.UpdatedTime ? 'lastFetchedAt' : 'createdAt'
const sortOrder = sort?.order === SortOrder.Ascending ? 'ASC' : 'DESC'
const user = await getRepository(User).findOneBy({ id: uid })
if (!user) {
return {
errorCodes: [SubscriptionsErrorCode.Unauthorized],
}
}
const queryBuilder = getRepository(Subscription)
.createQueryBuilder('subscription')
.leftJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail')
.where({
user: { id: uid },
type,
})
// only return active subscriptions for newsletter
if (type === SubscriptionType.Newsletter) {
queryBuilder.andWhere({ status: SubscriptionStatus.Active })
}
const subscriptions = await queryBuilder
.orderBy('subscription.' + sortBy, sortOrder)
.getMany()
try {
const sortBy =
sort?.by === SortBy.UpdatedTime ? 'lastFetchedAt' : 'createdAt'
const sortOrder = sort?.order === SortOrder.Ascending ? 'ASC' : 'DESC'
const user = await getRepository(User).findOneBy({ id: uid })
if (!user) {
return {
errorCodes: [SubscriptionsErrorCode.Unauthorized],
subscriptions,
}
} catch (error) {
log.error(error)
return {
errorCodes: [SubscriptionsErrorCode.BadRequest],
}
}
const subscriptions = await getRepository(Subscription)
.createQueryBuilder('subscription')
.leftJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail')
.where({
user: { id: uid },
status:
subscriptionType == SubscriptionType.Newsletter
? SubscriptionStatus.Active
: undefined, // only return active subscriptions for newsletter
type: subscriptionType || SubscriptionType.Newsletter, // default to newsletter
})
.orderBy('subscription.' + sortBy, sortOrder)
.getMany()
return {
subscriptions,
}
} catch (error) {
log.error(error)
return {
errorCodes: [SubscriptionsErrorCode.BadRequest],
}
}
})
)
export type UnsubscribeSuccessPartial = Merge<
UnsubscribeSuccess,