@@ -2,7 +2,7 @@ import { Args, Command } from "@effect/cli";
22import { Effect , Either , Redacted , Schema } from "effect" ;
33import { EventSource } from "eventsource" ;
44import { organizationLoginPrompt } from "../prompts/organizations" ;
5- import { ListenAck } from "../schemas/Events" ;
5+ import { ListenAck , ListenWebhookEvent } from "../schemas/Events" ;
66import * as OAuth from "../services/oauth" ;
77
88const LISTEN_BASE_URL = "https://api.polar.sh/v1/cli/listen" ;
@@ -31,21 +31,8 @@ export const listen = Command.make("listen", { url }, ({ url }) =>
3131 } ) ;
3232
3333 eventSource . onmessage = ( event ) => {
34- let parsed : {
35- payload : {
36- payload : unknown ;
37- } ;
38- headers : Record < string , string > ;
39- } ;
40-
41- try {
42- parsed = JSON . parse ( event . data ) ;
43- } catch {
44- console . error ( "Failed to parse event:" , event . data ) ;
45- return ;
46- }
47-
48- const ack = Schema . decodeUnknownEither ( ListenAck ) ( parsed ) ;
34+ const json = JSON . parse ( event . data ) ;
35+ const ack = Schema . decodeUnknownEither ( ListenAck ) ( json ) ;
4936
5037 if ( Either . isRight ( ack ) ) {
5138 const { secret } = ack . right ;
@@ -63,18 +50,27 @@ export const listen = Command.make("listen", { url }, ({ url }) =>
6350 console . log ( "" ) ;
6451 console . log ( ` ${ dim } Waiting for events...${ reset } ` ) ;
6552 console . log ( "" ) ;
53+
6654 return ;
6755 }
6856
69- console . log ( parsed ) ;
57+ const webhookEvent =
58+ Schema . decodeUnknownEither ( ListenWebhookEvent ) ( json ) ;
59+
60+ if ( Either . isLeft ( webhookEvent ) ) {
61+ console . error ( ">> Failed to decode event" ) ;
62+ return ;
63+ }
7064
7165 fetch ( url , {
7266 method : "POST" ,
73- headers : parsed . headers ,
74- body : JSON . stringify ( parsed . payload ? .payload ) ,
67+ headers : webhookEvent . right . headers ,
68+ body : JSON . stringify ( webhookEvent . right . payload . payload ) ,
7569 } )
7670 . then ( ( res ) => {
77- console . log ( `>> ${ res . status } ${ res . statusText } ` ) ;
71+ console . log (
72+ `>> '${ webhookEvent . right . payload . payload . type } ' >> ${ res . status } ${ res . statusText } ` ,
73+ ) ;
7874 } )
7975 . catch ( ( err ) => {
8076 console . error ( `>> Failed to forward event: ${ err } ` ) ;
0 commit comments