8
8
from codegen .extensions .events .interface import EventHandlerManagerProtocol
9
9
from codegen .extensions .clients .linear import LinearClient
10
10
11
- if TYPE_CHECKING :
12
- from codegen .extensions .events .app import CodegenApp
13
-
14
11
15
12
logger = logging .getLogger (__name__ )
16
13
@@ -20,7 +17,7 @@ class RegisteredWebhookHandler(BaseModel):
20
17
handler_func : Callable
21
18
22
19
class Linear (EventHandlerManagerProtocol ):
23
- def __init__ (self , app : CodegenApp ):
20
+ def __init__ (self , app : modal . App ):
24
21
self .app = app
25
22
self .access_token = os .environ ["LINEAR_ACCESS_TOKEN" ] # move to extensions config.
26
23
self .signing_secret = os .environ ["LINEAR_SIGNING_SECRET" ]
@@ -36,18 +33,19 @@ def subscribe_handler_to_webhook(self, web_url: str, event_name: str):
36
33
enabled = True ,
37
34
resource_types = [event_name ],
38
35
secret = self .signing_secret )
39
- return result . json ()
36
+ return result
40
37
41
38
def unsubscribe_handler_to_webhook (self , registered_handler : RegisteredWebhookHandler ):
42
39
webhook_id = registered_handler .webhook_id
43
40
44
41
client = LinearClient (access_token = self .access_token )
45
42
if webhook_id :
46
43
print (f"Unsubscribing from webhook { webhook_id } " )
47
- client .unregister_webhook (webhook_id )
44
+ result = client .unregister_webhook (webhook_id )
45
+ return result
48
46
else :
49
47
print ("No webhook id found for handler" )
50
-
48
+ return None
51
49
def unsubscribe_all_handlers (self ):
52
50
for handler in self .registered_handlers :
53
51
self .unsubscribe_handler_to_webhook (self .registered_handlers [handler ])
@@ -71,8 +69,8 @@ def decorator(func):
71
69
72
70
self .registered_handlers [func_name ] = RegisteredWebhookHandler (handler_func = modal_ready_func )
73
71
74
- self .subscribe_handler_to_webhook (web_url = web_url , event_name = event_name )
75
-
72
+ webhook_id = self .subscribe_handler_to_webhook (web_url = web_url , event_name = event_name )
73
+ self . registered_handlers [ func_name ]. webhook_id = webhook_id
76
74
@functools .wraps (func )
77
75
def wrapper (* args , ** kwargs ):
78
76
return func (* args , ** kwargs )
0 commit comments