mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Return canPost and canSeeMembers and topics and description in type group
This commit is contained in:
parent
54ceeb326a
commit
f5650acb69
3 changed files with 57 additions and 14 deletions
|
|
@ -32,4 +32,16 @@ export class Group {
|
|||
|
||||
@OneToMany(() => GroupMembership, (groupMembership) => groupMembership.group)
|
||||
members!: GroupMembership[]
|
||||
|
||||
@Column('text', { nullable: true })
|
||||
description?: string | null
|
||||
|
||||
@Column('text', { nullable: true })
|
||||
topics?: string | null
|
||||
|
||||
@Column('boolean', { default: false })
|
||||
onlyAdminCanPost!: boolean
|
||||
|
||||
@Column('boolean', { default: false })
|
||||
onlyAdminCanSeeMembers!: boolean
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,10 @@ export const createGroupResolver = authorized<
|
|||
name: input.name,
|
||||
maxMembers: input.maxMembers,
|
||||
expiresInDays: input.expiresInDays,
|
||||
description: input.description,
|
||||
topics: input.topics,
|
||||
onlyAdminCanPost: input.onlyAdminCanPost,
|
||||
onlyAdminCanSeeMembers: input.onlyAdminCanSeeMembers,
|
||||
})
|
||||
|
||||
analytics.track({
|
||||
|
|
@ -94,6 +98,10 @@ export const createGroupResolver = authorized<
|
|||
inviteUrl,
|
||||
admins: [user],
|
||||
members: [user],
|
||||
canSeeMembers: true,
|
||||
canPost: true,
|
||||
description: group.description,
|
||||
topics: group.topics?.split(','),
|
||||
},
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,10 @@ export const createGroup = async (input: {
|
|||
name: string
|
||||
maxMembers?: number | null
|
||||
expiresInDays?: number | null
|
||||
description?: string | null
|
||||
topics?: string[] | null
|
||||
onlyAdminCanPost?: boolean | null
|
||||
onlyAdminCanSeeMembers?: boolean | null
|
||||
}): Promise<[Group, Invite]> => {
|
||||
const [group, invite] = await AppDataSource.transaction<[Group, Invite]>(
|
||||
async (t) => {
|
||||
|
|
@ -32,6 +36,10 @@ export const createGroup = async (input: {
|
|||
const group = await t.getRepository(Group).save({
|
||||
name: input.name,
|
||||
createdBy: input.admin,
|
||||
description: input.description,
|
||||
topics: input.topics?.join(','),
|
||||
onlyAdminCanPost: input.onlyAdminCanPost ?? false,
|
||||
onlyAdminCanSeeMembers: input.onlyAdminCanSeeMembers ?? false,
|
||||
})
|
||||
|
||||
const code = nanoid(8)
|
||||
|
|
@ -71,13 +79,17 @@ export const getRecommendationGroups = async (
|
|||
return groupMembers.map((gm) => {
|
||||
const admins: GraphqlUser[] = []
|
||||
const members: GraphqlUser[] = []
|
||||
gm.group.members.forEach((m) => {
|
||||
const user = userDataToUser(m.user)
|
||||
if (m.isAdmin) {
|
||||
admins.push(user)
|
||||
}
|
||||
members.push(user)
|
||||
})
|
||||
const canSeeMembers = gm.group.onlyAdminCanSeeMembers ? gm.isAdmin : true
|
||||
if (canSeeMembers) {
|
||||
// Return all members
|
||||
gm.group.members.forEach((m) => {
|
||||
const user = userDataToUser(m.user)
|
||||
if (m.isAdmin) {
|
||||
admins.push(user)
|
||||
}
|
||||
members.push(user)
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
id: gm.group.id,
|
||||
|
|
@ -87,6 +99,10 @@ export const getRecommendationGroups = async (
|
|||
inviteUrl: getInviteUrl(gm.invite),
|
||||
admins,
|
||||
members,
|
||||
topics: gm.group.topics?.split(','),
|
||||
description: gm.group.description,
|
||||
canPost: gm.group.onlyAdminCanPost ? gm.isAdmin : true,
|
||||
canSeeMembers,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
@ -135,19 +151,26 @@ having count(*) < $4`,
|
|||
})
|
||||
const admins: GraphqlUser[] = []
|
||||
const members: GraphqlUser[] = []
|
||||
group.members.forEach((m) => {
|
||||
const user = userDataToUser(m.user)
|
||||
if (m.isAdmin) {
|
||||
admins.push(user)
|
||||
}
|
||||
members.push(user)
|
||||
})
|
||||
if (!group.onlyAdminCanSeeMembers) {
|
||||
// Return all members
|
||||
group.members.forEach((m) => {
|
||||
const user = userDataToUser(m.user)
|
||||
if (m.isAdmin) {
|
||||
admins.push(user)
|
||||
}
|
||||
members.push(user)
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
...group,
|
||||
inviteUrl: getInviteUrl(invite),
|
||||
admins,
|
||||
members,
|
||||
topics: group.topics?.split(','),
|
||||
description: group.description,
|
||||
canPost: !group.onlyAdminCanPost,
|
||||
canSeeMembers: !group.onlyAdminCanSeeMembers,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue