@@ -2,11 +2,7 @@ import { useEffect, useMemo, useState } from "react";
22import { useAtomValue , useAtomSet } from "@effect/atom-react" ;
33import * as AsyncResult from "effect/unstable/reactivity/AsyncResult" ;
44import * as Exit from "effect/Exit" ;
5- import {
6- IntegrationSlug ,
7- type Connection ,
8- type Owner ,
9- } from "@executor-js/sdk/shared" ;
5+ import { IntegrationSlug , type Connection , type Owner } from "@executor-js/sdk/shared" ;
106import type { IntegrationAccountHandoff } from "@executor-js/sdk/client" ;
117import { toast } from "sonner" ;
128
@@ -84,10 +80,7 @@ function AccountRow(props: {
8480 < CardStackEntryTitle className = "flex min-w-0 items-center gap-2" >
8581 < span className = "truncate" > { displayLabel } </ span >
8682 { needsReconsent ? (
87- < Badge
88- variant = "outline"
89- className = "shrink-0 border-border text-muted-foreground"
90- >
83+ < Badge variant = "outline" className = "shrink-0 border-border text-muted-foreground" >
9184 Reconnect to grant access
9285 </ Badge >
9386 ) : null }
@@ -99,8 +92,7 @@ function AccountRow(props: {
9992 ) : null }
10093 { needsReconsent ? (
10194 < CardStackEntryDescription className = "mt-1 text-xs text-muted-foreground" >
102- This connection wasn't granted all the access this integration now
103- needs.
95+ This connection wasn't granted all the access this integration now needs.
10496 </ CardStackEntryDescription >
10597 ) : null }
10698 </ CardStackEntryContent >
@@ -129,11 +121,7 @@ function AccountRow(props: {
129121 < DropdownMenuItem className = "text-sm" onClick = { props . onReconnect } >
130122 Reconnect
131123 </ DropdownMenuItem >
132- < DropdownMenuItem
133- variant = "destructive"
134- className = "text-sm"
135- onClick = { props . onRemove }
136- >
124+ < DropdownMenuItem variant = "destructive" className = "text-sm" onClick = { props . onRemove } >
137125 Remove
138126 </ DropdownMenuItem >
139127 </ DropdownMenuContent >
@@ -155,9 +143,7 @@ function OwnerAccounts(props: {
155143 readonly declaredScopes : readonly string [ ] | undefined ;
156144} ) {
157145 const { integration, owner } = props ;
158- const connections = useAtomValue (
159- connectionsForIntegrationAtom ( { integration, owner } ) ,
160- ) ;
146+ const connections = useAtomValue ( connectionsForIntegrationAtom ( { integration, owner } ) ) ;
161147 const doRemove = useAtomSet ( removeConnectionOptimistic ( owner ) , {
162148 mode : "promiseExit" ,
163149 } ) ;
@@ -174,9 +160,7 @@ function OwnerAccounts(props: {
174160 startErrorMessage : "Failed to reconnect" ,
175161 } ) ;
176162
177- const rows : readonly Connection [ ] = AsyncResult . isSuccess ( connections )
178- ? connections . value
179- : [ ] ;
163+ const rows : readonly Connection [ ] = AsyncResult . isSuccess ( connections ) ? connections . value : [ ] ;
180164 if ( rows . length === 0 ) return null ;
181165
182166 const handleReconnect = async ( connection : Connection ) => {
@@ -185,8 +169,7 @@ function OwnerAccounts(props: {
185169 if ( reconnectMode ( connection ) === "oauth" ) {
186170 const method = props . methods . find (
187171 ( candidate : AuthMethod ) =>
188- candidate . kind === "oauth" &&
189- String ( candidate . template ) === String ( connection . template ) ,
172+ candidate . kind === "oauth" && String ( candidate . template ) === String ( connection . template ) ,
190173 ) ;
191174 if (
192175 method ?. oauth ?. supportsDynamicRegistration === true ||
@@ -293,18 +276,13 @@ function OwnerAccounts(props: {
293276
294277 return (
295278 < CardStack >
296- { props . showOwnerLabels ? (
297- < CardStackHeader > { ownerLabel ( owner ) } </ CardStackHeader >
298- ) : null }
279+ { props . showOwnerLabels ? < CardStackHeader > { ownerLabel ( owner ) } </ CardStackHeader > : null }
299280 < CardStackContent >
300281 { rows . map ( ( connection : Connection ) => (
301282 < AccountRow
302283 key = { `${ connection . owner } :${ connection . integration } :${ connection . name } ` }
303284 connection = { connection }
304- needsReconsent = { connectionNeedsReconsent (
305- connection ,
306- props . declaredScopes ,
307- ) }
285+ needsReconsent = { connectionNeedsReconsent ( connection , props . declaredScopes ) }
308286 showOwnerLabel = { props . showOwnerLabels }
309287 onEdit = { ( ) => props . onEdit ( connection ) }
310288 onReconnect = { ( ) => void handleReconnect ( connection ) }
@@ -335,14 +313,10 @@ export function AccountsSection(props: {
335313 removeCustomMethod,
336314 } = props ;
337315 const [ adding , setAdding ] = useState ( false ) ;
338- const [ editingConnection , setEditingConnection ] = useState < Connection | null > (
339- null ,
340- ) ;
341- const [ reconnectHandoff , setReconnectHandoff ] =
342- useState < IntegrationAccountHandoff | null > ( null ) ;
316+ const [ editingConnection , setEditingConnection ] = useState < Connection | null > ( null ) ;
317+ const [ reconnectHandoff , setReconnectHandoff ] = useState < IntegrationAccountHandoff | null > ( null ) ;
343318 const ownerDisplay = useOwnerDisplay ( ) ;
344- const canAddConnection =
345- methods . length > 0 || createCustomMethod !== undefined ;
319+ const canAddConnection = methods . length > 0 || createCustomMethod !== undefined ;
346320
347321 useEffect ( ( ) => {
348322 if ( accountHandoff ) {
@@ -364,9 +338,7 @@ export function AccountsSection(props: {
364338
365339 // Read both owners to decide between the grouped view and the empty CTA. The
366340 // grouped sub-components re-read these (effect-atom dedupes) and self-hide.
367- const orgConnections = useAtomValue (
368- connectionsForIntegrationAtom ( { integration, owner : "org" } ) ,
369- ) ;
341+ const orgConnections = useAtomValue ( connectionsForIntegrationAtom ( { integration, owner : "org" } ) ) ;
370342 const userConnections = useAtomValue (
371343 connectionsForIntegrationAtom ( { integration, owner : "user" } ) ,
372344 ) ;
@@ -377,18 +349,12 @@ export function AccountsSection(props: {
377349 useAtomSet ( addConnectionOptimistic ( "user" ) ) ;
378350
379351 const totalCount = useMemo ( ( ) => {
380- const orgRows = AsyncResult . isSuccess ( orgConnections )
381- ? orgConnections . value . length
382- : 0 ;
383- const userRows = AsyncResult . isSuccess ( userConnections )
384- ? userConnections . value . length
385- : 0 ;
352+ const orgRows = AsyncResult . isSuccess ( orgConnections ) ? orgConnections . value . length : 0 ;
353+ const userRows = AsyncResult . isSuccess ( userConnections ) ? userConnections . value . length : 0 ;
386354 return orgRows + userRows ;
387355 } , [ orgConnections , userConnections ] ) ;
388356
389- const loading =
390- ! AsyncResult . isSuccess ( orgConnections ) &&
391- ! AsyncResult . isSuccess ( userConnections ) ;
357+ const loading = ! AsyncResult . isSuccess ( orgConnections ) && ! AsyncResult . isSuccess ( userConnections ) ;
392358
393359 const modalState = reconnectHandoff ?? accountHandoff ;
394360 const modal = (
@@ -420,9 +386,7 @@ export function AccountsSection(props: {
420386 onClick = { ( ) => {
421387 trackEvent ( "connection_add_opened" , {
422388 integration_slug : String ( integration ) ,
423- has_oauth_method : methods . some (
424- ( m : AuthMethod ) => m . kind === "oauth" ,
425- ) ,
389+ has_oauth_method : methods . some ( ( m : AuthMethod ) => m . kind === "oauth" ) ,
426390 has_api_key_method : methods . some (
427391 ( m : AuthMethod ) => m . kind !== "oauth" && m . kind !== "none" ,
428392 ) ,
@@ -442,9 +406,7 @@ export function AccountsSection(props: {
442406 </ div >
443407 ) : totalCount === 0 ? (
444408 < div className = "rounded-lg border border-dashed border-border/60 px-6 py-8 text-center" >
445- < p className = "text-sm font-medium text-foreground" >
446- No connections yet
447- </ p >
409+ < p className = "text-sm font-medium text-foreground" > No connections yet</ p >
448410 < p className = "mt-1 text-sm text-muted-foreground" >
449411 Add a connection to make this integration's tools available.
450412 </ p >
@@ -455,9 +417,7 @@ export function AccountsSection(props: {
455417 onClick = { ( ) => {
456418 trackEvent ( "connection_add_opened" , {
457419 integration_slug : String ( integration ) ,
458- has_oauth_method : methods . some (
459- ( m : AuthMethod ) => m . kind === "oauth" ,
460- ) ,
420+ has_oauth_method : methods . some ( ( m : AuthMethod ) => m . kind === "oauth" ) ,
461421 has_api_key_method : methods . some (
462422 ( m : AuthMethod ) => m . kind !== "oauth" && m . kind !== "none" ,
463423 ) ,
0 commit comments