refactor: clean up imports and enhance error logging in user workspace and team invitations actions
This commit is contained in:
@@ -6,6 +6,8 @@ import { redirect } from 'next/navigation';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { enhanceAction } from '@kit/next/actions';
|
||||
import { createNotificationsApi } from '@kit/notifications/api';
|
||||
import { getLogger } from '@kit/shared/logger';
|
||||
import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client';
|
||||
import { getSupabaseServerClient } from '@kit/supabase/server-client';
|
||||
|
||||
@@ -16,8 +18,6 @@ import { RenewInvitationSchema } from '../../schema/renew-invitation.schema';
|
||||
import { UpdateInvitationSchema } from '../../schema/update-invitation.schema';
|
||||
import { createAccountInvitationsService } from '../services/account-invitations.service';
|
||||
import { createAccountPerSeatBillingService } from '../services/account-per-seat-billing.service';
|
||||
import { createNotificationsApi } from '@kit/notifications/api';
|
||||
import { getLogger } from '@kit/shared/logger';
|
||||
|
||||
/**
|
||||
* @name createInvitationsAction
|
||||
@@ -32,48 +32,53 @@ export const createInvitationsAction = enhanceAction(
|
||||
const service = createAccountInvitationsService(client);
|
||||
const api = createNotificationsApi(serviceClient);
|
||||
|
||||
//TODO: This does not send email. It only creates invitations in the database.
|
||||
await service.sendInvitations(params);
|
||||
|
||||
const { invitations: invitationParams, accountSlug } = params;
|
||||
const personalCodes = invitationParams.map(({ personal_code }) => personal_code);
|
||||
const personalCodes = invitationParams.map(
|
||||
({ personal_code }) => personal_code,
|
||||
);
|
||||
|
||||
const { data: company, error: companyError } = await client
|
||||
.from('accounts')
|
||||
.select('id')
|
||||
.eq('slug', accountSlug);
|
||||
|
||||
logger.debug({ company, companyError, personalCodes })
|
||||
logger.debug({ company, companyError, personalCodes });
|
||||
|
||||
if (companyError || !company?.length || !company[0]) {
|
||||
throw new Error(`Failed to fetch company id: ${companyError?.message || 'not found'}`);
|
||||
throw new Error(
|
||||
`Failed to fetch company id: ${companyError?.message || 'not found'}`,
|
||||
);
|
||||
}
|
||||
|
||||
const { data: invitations, error: invitationError } = await serviceClient.rpc(
|
||||
'get_invitations_with_account_ids',
|
||||
{
|
||||
const { data: invitations, error: invitationError } =
|
||||
await serviceClient.rpc('get_invitations_with_account_ids', {
|
||||
company_id: company[0].id,
|
||||
personal_codes: personalCodes,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
logger.debug({ invitations, invitationError })
|
||||
logger.debug({ invitations, invitationError });
|
||||
|
||||
if (invitationError) {
|
||||
throw new Error(`Failed to fetch invitations with accounts: ${invitationError.message}`);
|
||||
throw new Error(
|
||||
`Failed to fetch invitations with accounts: ${invitationError.message}`,
|
||||
);
|
||||
}
|
||||
|
||||
const notificationPromises = invitations
|
||||
.map(({ invite_token, account_id }) =>
|
||||
const notificationPromises = invitations.map(
|
||||
({ invite_token, account_id }) =>
|
||||
api.createNotification({
|
||||
account_id: account_id!,
|
||||
body: `You are invited to join the company: ${accountSlug}`,
|
||||
link: `/join?invite_token=${invite_token}`,
|
||||
})
|
||||
);
|
||||
}),
|
||||
);
|
||||
|
||||
await Promise.all(notificationPromises);
|
||||
|
||||
logger.info('All invitation notifications are sent')
|
||||
logger.info('All invitation notifications are sent');
|
||||
revalidateMemberPage();
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user