1- import { Webhook } from "svix" ;
2- import { headers } from "next/headers" ;
3- import { type WebhookEvent , clerkClient } from "@clerk/nextjs/server" ;
4- import Stripe from "stripe" ;
5- import { env } from "@/lib/env" ;
61import { db } from "@/lib/db" ;
2+ import { env } from "@/lib/env" ;
73import { users , videos } from "@/lib/schema" ;
8- import { tasks } from "@trigger.dev/sdk/v3" ;
94import type { videoDeletionTask } from "@/trigger/video-deletion" ;
5+ import { type WebhookEvent , clerkClient } from "@clerk/nextjs/server" ;
6+ import { tasks } from "@trigger.dev/sdk/v3" ;
107import { eq , sql } from "drizzle-orm" ;
8+ import { headers } from "next/headers" ;
9+ import Stripe from "stripe" ;
10+ import { Webhook } from "svix" ;
1111
1212export async function POST ( request : Request ) {
1313 const stripe = new Stripe ( env . STRIPE_SECRET_KEY ) ;
@@ -58,7 +58,13 @@ export async function POST(request: Request) {
5858 if ( event . type === "user.created" ) {
5959 const userPrimaryEmail = event . data . email_addresses . find (
6060 ( e ) => e . id === event . data . primary_email_address_id ,
61- ) ! ;
61+ ) ;
62+
63+ if ( ! userPrimaryEmail ) {
64+ return new Response ( "Error occured - no user primary email" , {
65+ status : 400 ,
66+ } ) ;
67+ }
6268
6369 const stripeCustomer = await stripe . customers . create ( {
6470 email : userPrimaryEmail . email_address ,
@@ -89,7 +95,9 @@ export async function POST(request: Request) {
8995 db . delete ( users ) . where ( eq ( users . id , event . data . id ) ) . returning ( ) ,
9096 ] ) ;
9197
92- const videoDeletionTasks = deletedVideos . map ( ( video ) => ( { payload : { videoId : video . id } } ) ) ;
98+ const videoDeletionTasks = deletedVideos . map ( ( video ) => ( {
99+ payload : { videoId : video . id } ,
100+ } ) ) ;
93101
94102 await Promise . all ( [
95103 stripe . customers . del ( deletedUser . stripeCustomerId ) ,
@@ -99,7 +107,13 @@ export async function POST(request: Request) {
99107 } else if ( event . type === "user.updated" ) {
100108 const userPrimaryEmail = event . data . email_addresses . find (
101109 ( e ) => e . id === event . data . primary_email_address_id ,
102- ) ! ;
110+ ) ;
111+
112+ if ( ! userPrimaryEmail ) {
113+ return new Response ( "Error occured - no user primary email" , {
114+ status : 400 ,
115+ } ) ;
116+ }
103117
104118 const [ updatedUser ] = await db
105119 . update ( users )
0 commit comments