From d821f26440471393b1db1fb87303289cafa869d2 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 13 May 2022 16:12:08 +0800 Subject: [PATCH] create reminder with page id --- packages/api/src/resolvers/reminders/index.ts | 91 +++++-------------- 1 file changed, 23 insertions(+), 68 deletions(-) diff --git a/packages/api/src/resolvers/reminders/index.ts b/packages/api/src/resolvers/reminders/index.ts index 7b11d9fe3..d6361a6a4 100644 --- a/packages/api/src/resolvers/reminders/index.ts +++ b/packages/api/src/resolvers/reminders/index.ts @@ -23,7 +23,6 @@ import { env } from '../../env' import { ReminderData } from '../../datalayer/reminders/model' import { DataModels } from '../types' import { DateTime } from 'luxon' -import { ArticleSavingRequestData } from '../../datalayer/article_saving_request/model' import { setLinkArchived } from '../../services/archive_link' import { getPageById } from '../../elastic/pages' import { Page } from '../../elastic/types' @@ -47,12 +46,7 @@ export const createReminderResolver = authorized< >(async (_, { input }, { models, claims: { uid }, log }) => { log.info('createReminderResolver') - const { - clientRequestId, - linkId: articleId, - archiveUntil, - sendNotification, - } = input + const { clientRequestId, linkId, archiveUntil, sendNotification } = input const scheduledTime = validScheduleTime(input.remindAt) if (!scheduledTime) { @@ -62,7 +56,8 @@ export const createReminderResolver = authorized< } } - if ((!clientRequestId && !articleId) || (clientRequestId && articleId)) { + const pageId = linkId || clientRequestId + if (!pageId) { log.error('client request id or link id is required') return { errorCodes: [CreateReminderErrorCode.BadRequest], @@ -77,57 +72,32 @@ export const createReminderResolver = authorized< remindAt: scheduledTime, archiveUntil, sendNotification, - linkId: articleId, + linkId, env: env.server.apiEnv, }, }) - let linkId = '' - let articleSavingRequestId = '' - try { - if (articleId) { - // saving from web - const page = await getPageById(articleId) - if (!page) { - log.error('page not found', articleId) + // saving from web + const page = await getPageById(pageId) + if (!page) { + log.error('page not found', pageId) - return { - errorCodes: [CreateReminderErrorCode.NotFound], - } - } - - if (page.userId !== uid) { - log.error('user not authorized', uid) - - return { - errorCodes: [CreateReminderErrorCode.Unauthorized], - } - } - linkId = page.id - if (archiveUntil) { - await archiveLinkOrRequest(uid, page, undefined) + return { + errorCodes: [CreateReminderErrorCode.NotFound], } } - if (clientRequestId) { - // saving from ios - const articleSavingRequest = await models.articleSavingRequest.get( - clientRequestId - ) - if (!articleSavingRequest) { - log.error('articleSavingRequest not found', clientRequestId) + if (page.userId !== uid) { + log.error('user not authorized', uid) - return { - errorCodes: [CreateReminderErrorCode.NotFound], - } - } - - articleSavingRequestId = articleSavingRequest.id - if (articleSavingRequest.articleId) { - await archiveLinkOrRequest(uid, undefined, articleSavingRequest) + return { + errorCodes: [CreateReminderErrorCode.Unauthorized], } } + if (archiveUntil) { + await archivePage(uid, page) + } const taskName = await groupReminders(scheduledTime, uid, models) console.log('scheduled task name', taskName) @@ -135,15 +105,12 @@ export const createReminderResolver = authorized< // insert reminder to db const reminder = await models.reminder.create({ userId: uid, - articleSavingRequestId: articleSavingRequestId - ? articleSavingRequestId - : undefined, taskName: taskName, archiveUntil: archiveUntil, sendNotification: sendNotification, createdAt: new Date(), remindAt: scheduledTime, - elasticPageId: linkId, + elasticPageId: pageId, }) console.log('created reminder', reminder) @@ -168,23 +135,11 @@ export const createReminderResolver = authorized< // It is possible that the link has not been created // yet if it is still in the saving process. In that // case it will be archived when the link is created. -const archiveLinkOrRequest = async ( - uid: string, - page: Page | undefined, - request: ArticleSavingRequestData | undefined -) => { - let target: Page | undefined = page || undefined - if (!page && request && request.articleId) { - // this linkId is actually an article.id - target = (await getPageById(request.articleId)) || undefined - } - console.log('archiving target', target) - if (target) { - try { - await setLinkArchived(uid, target.id, true) - } catch (e) { - console.log('error archiving link', e) - } +const archivePage = async (uid: string, page: Page) => { + try { + await setLinkArchived(uid, page.id, true) + } catch (e) { + console.log('error archiving link', e) } }