From 04cb360c2fb3e76cc83107c6380010d8d6742552 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 8 Dec 2022 18:50:36 +0800 Subject: [PATCH] Fix some issue --- .../src/resolvers/recommendations/index.ts | 42 ++----------------- packages/api/src/services/groups.ts | 27 ++++++++++++ packages/api/src/services/labels.ts | 6 +-- packages/api/src/services/rules.ts | 7 ++-- 4 files changed, 36 insertions(+), 46 deletions(-) diff --git a/packages/api/src/resolvers/recommendations/index.ts b/packages/api/src/resolvers/recommendations/index.ts index 4b97cd652..bb1a48aac 100644 --- a/packages/api/src/resolvers/recommendations/index.ts +++ b/packages/api/src/resolvers/recommendations/index.ts @@ -25,6 +25,7 @@ import { } from '../../generated/graphql' import { createGroup, + createLabelAndRuleForGroup, getInviteUrl, getRecommendationGroups, joinGroup, @@ -38,9 +39,6 @@ import { In } from 'typeorm' import { getPageByParam } from '../../elastic/pages' import { enqueueRecommendation } from '../../utils/createTask' import { env } from '../../env' -import { createLabel } from '../../services/labels' -import { createRule } from '../../services/rules' -import { RuleActionType } from '../../entity/rule' export const createGroupResolver = authorized< CreateGroupSuccess, @@ -74,24 +72,7 @@ export const createGroupResolver = authorized< expiresInDays: input.expiresInDays, }) - // create a new label for the group - const label = await createLabel(userData, { name: input.name }) - - // create a rule to add the label to all pages in the group - await createRule(userData, { - name: input.name, - actions: [ - { - type: RuleActionType.AddLabel, - params: [label.id], - }, - { - type: RuleActionType.SendNotification, - params: [input.name], - }, - ], - filter: `recommendedBy:${group.name}`, - }) + await createLabelAndRuleForGroup(uid, group.name) const inviteUrl = getInviteUrl(invite) const user = userDataToUser(userData) @@ -285,24 +266,7 @@ export const joinGroupResolver = authorized< const group = await joinGroup(user, inviteCode) - // create a new label for the group - const label = await createLabel(user, { name: group.name }) - - // create a rule to add the label to all pages in the group - await createRule(user, { - name: group.name, - actions: [ - { - type: RuleActionType.AddLabel, - params: [label.id], - }, - { - type: RuleActionType.SendNotification, - params: [group.name], - }, - ], - filter: `recommendedBy:${group.name}`, - }) + await createLabelAndRuleForGroup(user.id, group.name) return { group, diff --git a/packages/api/src/services/groups.ts b/packages/api/src/services/groups.ts index 2cebfaa91..716ccdddc 100644 --- a/packages/api/src/services/groups.ts +++ b/packages/api/src/services/groups.ts @@ -8,6 +8,9 @@ import { RecommendationGroup, User as GraphqlUser } from '../generated/graphql' import { getRepository } from '../entity/utils' import { homePageURL } from '../env' import { userDataToUser } from '../utils/helpers' +import { createLabel } from './labels' +import { createRule } from './rules' +import { RuleActionType } from '../entity/rule' export const createGroup = async (input: { admin: User @@ -200,3 +203,27 @@ export const leaveGroup = async ( return true }) } + +export const createLabelAndRuleForGroup = async ( + userId: string, + groupName: string +) => { + // create a new label for the group + const label = await createLabel(userId, { name: groupName }) + + // create a rule to add the label to all pages in the group + await createRule(userId, { + name: groupName, + actions: [ + { + type: RuleActionType.AddLabel, + params: [label.id], + }, + { + type: RuleActionType.SendNotification, + params: [groupName], + }, + ], + filter: `recommendedBy:"${groupName}"`, + }) +} diff --git a/packages/api/src/services/labels.ts b/packages/api/src/services/labels.ts index 6d9ed14ef..d83287ec4 100644 --- a/packages/api/src/services/labels.ts +++ b/packages/api/src/services/labels.ts @@ -78,7 +78,7 @@ export const getLabelsByIds = async ( } export const createLabel = async ( - user: User, + userId: string, label: { name: string color?: string @@ -86,7 +86,7 @@ export const createLabel = async ( } ): Promise