Files
speckle-server/packages/server/test/speckle-helpers/inviteHelper.js
T
Kristaps Fabians Geikins 3ff772e342 fix: various server invites related improvements & fixes (#837)
* moving to invite token field, fixing comments & activity bugs I found, adding role prop to stream invite creation
* more fixes
* more tests
2022-07-25 11:02:22 +03:00

45 lines
1.3 KiB
JavaScript

const { Roles } = require('@/modules/core/helpers/mainConstants')
const {
buildUserTarget,
ResourceTargets
} = require('@/modules/serverinvites/helpers/inviteHelper')
const {
createAndSendInvite
} = require('@/modules/serverinvites/services/inviteCreationService')
/**
* Create a new invite. User & userId are alternatives for each other, and so
* are stream & streamId
* @param {{
* email?: string,
* user?: import("@/modules/core/helpers/userHelper").UserRecord,
* userId?: string,
* message?: string,
* stream?: Object,
* streamId?: string
* }} invite
* @param {string} creatorId
*
* @returns {Promise<{inviteId: string, token: string}>}
*/
function createInviteDirectly(invite, creatorId) {
const userId = invite.userId || invite.user?.id || null
const email = invite.email || null
if (!userId && !email) throw new Error('Either user/userId or email must be set')
const streamId = invite.streamId || invite.stream?.id || null
return createAndSendInvite({
target: email || buildUserTarget(userId),
inviterId: creatorId,
message: invite.message,
resourceTarget: streamId ? ResourceTargets.Streams : null,
resourceId: streamId || null,
role: streamId ? Roles.Stream.Contributor : null
})
}
module.exports = {
createInviteDirectly
}