mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-14 11:50:31 +00:00
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import axios from 'axios';
|
|
import config from '@/config';
|
|
import { IAuthSignUpVerifiedEventPayload } from '@/interfaces';
|
|
import events from '@/subscribers/events';
|
|
import { SystemUser } from '@/system/models';
|
|
|
|
export class LoopsEventsSubscriber {
|
|
/**
|
|
* Constructor method.
|
|
*/
|
|
public attach(bus) {
|
|
bus.subscribe(
|
|
events.auth.signUpConfirmed,
|
|
this.triggerEventOnSignupVerified.bind(this)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Once the user verified sends the event to the Loops.
|
|
* @param {IAuthSignUpVerifiedEventPayload} param0
|
|
*/
|
|
public async triggerEventOnSignupVerified({
|
|
email,
|
|
userId,
|
|
}: IAuthSignUpVerifiedEventPayload) {
|
|
// Can't continue since the Loops the api key is not configured.
|
|
if (!config.loops.apiKey) {
|
|
return;
|
|
}
|
|
const user = await SystemUser.query().findById(userId);
|
|
|
|
const options = {
|
|
method: 'POST',
|
|
url: 'https://app.loops.so/api/v1/events/send',
|
|
headers: {
|
|
Authorization: `Bearer ${config.loops.apiKey}`,
|
|
'Content-Type': 'application/json',
|
|
},
|
|
data: {
|
|
email,
|
|
userId,
|
|
firstName: user.firstName,
|
|
lastName: user.lastName,
|
|
eventName: 'USER_VERIFIED',
|
|
eventProperties: {},
|
|
mailingLists: {},
|
|
},
|
|
};
|
|
await axios(options);
|
|
}
|
|
}
|