Adding features

This commit is contained in:
Jennie Robinson Faber 2025-10-05 16:15:09 +01:00
parent 600fef2b7c
commit 2b55ca4104
75 changed files with 9796 additions and 2759 deletions

View file

@ -2,9 +2,74 @@
import { getHelcimPlanId, requiresPayment } from '../../config/contributions.js'
import Member from '../../models/member.js'
import { connectDB } from '../../utils/mongoose.js'
import { getSlackService } from '../../utils/slack.ts'
const HELCIM_API_BASE = 'https://api.helcim.com/v2'
// Function to invite member to Slack
async function inviteToSlack(member) {
try {
const slackService = getSlackService()
if (!slackService) {
console.warn('Slack service not configured, skipping invitation')
return
}
console.log(`Processing Slack invitation for ${member.email}...`)
const inviteResult = await slackService.inviteUserToSlack(
member.email,
member.name
)
if (inviteResult.success) {
// Update member record based on the actual result
if (inviteResult.status === 'existing_user_added_to_channel' ||
inviteResult.status === 'user_already_in_channel' ||
inviteResult.status === 'new_user_invited_to_workspace') {
member.slackInviteStatus = 'sent'
member.slackUserId = inviteResult.userId
member.slackInvited = true
} else {
// Manual invitation required
member.slackInviteStatus = 'pending'
member.slackInvited = false
}
await member.save()
// Send notification to vetting channel
await slackService.notifyNewMember(
member.name,
member.email,
member.circle,
member.contributionTier,
inviteResult.status
)
console.log(`Successfully processed Slack invitation for ${member.email}: ${inviteResult.status}`)
} else {
// Update member record to reflect failed invitation
member.slackInviteStatus = 'failed'
await member.save()
console.error(`Failed to process Slack invitation for ${member.email}: ${inviteResult.error}`)
// Don't throw error - subscription creation should still succeed
}
} catch (error) {
console.error('Error during Slack invitation process:', error)
// Update member record to reflect failed invitation
try {
member.slackInviteStatus = 'failed'
await member.save()
} catch (saveError) {
console.error('Failed to update member Slack status:', saveError)
}
// Don't throw error - subscription creation should still succeed
}
}
export default defineEventHandler(async (event) => {
try {
await connectDB()
@ -44,6 +109,9 @@ export default defineEventHandler(async (event) => {
console.log('Updated member for free tier:', member)
// Send Slack invitation for free tier members
await inviteToSlack(member)
return {
success: true,
subscription: null,
@ -82,6 +150,9 @@ export default defineEventHandler(async (event) => {
{ new: true }
)
// Send Slack invitation even when no plan is configured
await inviteToSlack(member)
return {
success: true,
subscription: {
@ -193,6 +264,9 @@ export default defineEventHandler(async (event) => {
{ new: true }
)
// Send Slack invitation even when subscription setup fails
await inviteToSlack(member)
return {
success: true,
subscription: {
@ -234,6 +308,9 @@ export default defineEventHandler(async (event) => {
{ new: true }
)
// Send Slack invitation for paid tier members
await inviteToSlack(member)
return {
success: true,
subscription: {
@ -260,6 +337,9 @@ export default defineEventHandler(async (event) => {
{ new: true }
)
// Send Slack invitation even when subscription fetch fails
await inviteToSlack(member)
return {
success: true,
subscription: {