Pro/business
This commit is contained in:
@@ -12,7 +12,12 @@ type ScoreReason =
|
||||
| 'onboarding_update'
|
||||
| 'qr_created'
|
||||
| 'scan_recorded'
|
||||
| 'subscription_changed';
|
||||
| 'subscription_changed'
|
||||
| 'subscription_created'
|
||||
| 'subscription_updated'
|
||||
| 'subscription_canceled_at_period_end'
|
||||
| 'subscription_deleted'
|
||||
| 'subscription_synced';
|
||||
|
||||
type UserForScoring = {
|
||||
id: string;
|
||||
@@ -159,7 +164,27 @@ export async function scoreUserLifecycle(userId: string, reason: ScoreReason) {
|
||||
},
|
||||
});
|
||||
|
||||
if (user.lifecycleStage !== nextStage) {
|
||||
const isSubscriptionReason = reason.startsWith('subscription_');
|
||||
const recentSubscriptionLog = isSubscriptionReason
|
||||
? await db.userLifecycleLog.findFirst({
|
||||
where: {
|
||||
userId,
|
||||
reason,
|
||||
createdAt: {
|
||||
gte: new Date(Date.now() - 10 * 60 * 1000),
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
},
|
||||
})
|
||||
: null;
|
||||
|
||||
const shouldLogLifecycleEvent =
|
||||
user.lifecycleStage !== nextStage ||
|
||||
(isSubscriptionReason && !recentSubscriptionLog);
|
||||
|
||||
if (shouldLogLifecycleEvent) {
|
||||
await db.userLifecycleLog.create({
|
||||
data: {
|
||||
userId,
|
||||
|
||||
Reference in New Issue
Block a user