Skip to content

Commit aae4852

Browse files
committed
Cleanup handleApiCall
1 parent 758d0c2 commit aae4852

1 file changed

Lines changed: 21 additions & 22 deletions

File tree

src/utils/api.mts

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@ export type HandleApiCallOptions = {
2424
spinner?: Spinner | undefined
2525
}
2626

27+
export type ApiCallResult<T extends SocketSdkOperations> = CResult<
28+
SocketSdkSuccessResult<T>['data']
29+
>
30+
2731
export async function handleApiCall<T extends SocketSdkOperations>(
2832
value: Promise<SocketSdkResult<T>>,
2933
options?: HandleApiCallOptions | undefined,
30-
): Promise<CResult<SocketSdkSuccessResult<T>['data']>> {
34+
): Promise<ApiCallResult<T>> {
3135
const { desc, spinner } = {
3236
__proto__: null,
3337
...options,
@@ -53,48 +57,43 @@ export async function handleApiCall<T extends SocketSdkOperations>(
5357
}
5458
} catch (e) {
5559
spinner?.stop()
60+
const socketSdkErrorResult: ApiCallResult<T> = {
61+
ok: false,
62+
message: 'Socket API returned an error',
63+
cause: messageWithCauses(e as Error),
64+
}
5665
if (desc) {
5766
logger.fail(`An error was thrown while requesting ${desc}`)
5867
debugFn('error', `caught: ${desc} error`)
5968
} else {
6069
debugFn('error', `caught: Socket API request error`)
6170
}
62-
debugDir('inspect', { error: e })
63-
return {
64-
ok: false,
65-
message: 'Socket API returned an error',
66-
cause: messageWithCauses(e as Error),
67-
}
71+
debugDir('inspect', { error: e, socketSdkErrorResult })
72+
return socketSdkErrorResult
6873
}
6974

7075
// Note: TS can't narrow down the type of result due to generics.
7176
if (sdkResult.success === false) {
7277
const errorResult = sdkResult as SocketSdkErrorResult<T>
7378
const message = `${errorResult.error || NO_ERROR_MESSAGE}`
7479
const { cause: reason } = errorResult
75-
76-
if (desc) {
77-
debugFn('error', `fail: ${desc} bad response`)
78-
} else {
79-
debugFn('error', 'fail: bad response')
80-
}
81-
debugDir('inspect', { sdkResult })
82-
83-
return {
80+
const socketSdkErrorResult: ApiCallResult<T> = {
8481
ok: false,
8582
message: 'Socket API returned an error',
8683
cause: `${message}${reason ? ` ( Reason: ${reason} )` : ''}`,
8784
data: {
8885
code: sdkResult.status,
8986
},
9087
}
91-
} else {
92-
const { data } = sdkResult as SocketSdkSuccessResult<T>
93-
return {
94-
ok: true,
95-
data,
96-
}
88+
debugFn('error', `fail:${desc ? ` ${desc}` : ''} bad response`)
89+
debugDir('inspect', { sdkResult })
90+
return socketSdkErrorResult
91+
}
92+
const socketSdkSuccessResult: ApiCallResult<T> = {
93+
ok: true,
94+
data: (sdkResult as SocketSdkSuccessResult<T>).data,
9795
}
96+
return socketSdkSuccessResult
9897
}
9998

10099
export async function handleApiCallNoSpinner<T extends SocketSdkOperations>(

0 commit comments

Comments
 (0)