diff --git a/.changeset/full-rooms-listen.md b/.changeset/full-rooms-listen.md new file mode 100644 index 00000000..3c9481bf --- /dev/null +++ b/.changeset/full-rooms-listen.md @@ -0,0 +1,5 @@ +--- +'@relayprotocol/relay-sdk': patch +--- + +Improve fast fills error handling diff --git a/demo/pages/api/fast-fill.ts b/demo/pages/api/fast-fill.ts index 1d7f1ad1..be81f1ab 100644 --- a/demo/pages/api/fast-fill.ts +++ b/demo/pages/api/fast-fill.ts @@ -63,18 +63,20 @@ export default async function handler( return res.status(200).json(fastFillData) } catch (error: any) { - // Handle APIError from the SDK if (error.statusCode) { - return res.status(error.statusCode).json({ - error: error.message || 'Fast fill failed' - }) + return res.status(400).json({ + message: error.message || 'Fast fill failed', + code: error?.rawError?.code ?? 'UNKNOWN_ERROR' + } as any) + } else { + throw error } - throw error } } catch (error: any) { console.error('Fast fill proxy error:', error) return res.status(500).json({ - error: error?.message || 'Internal server error' - }) + error: error?.message || 'Internal server error', + code: 'UNKNOWN_ERROR' + } as any) } } diff --git a/packages/sdk/src/actions/fastFill.ts b/packages/sdk/src/actions/fastFill.ts index 79ee2f64..2d38208c 100644 --- a/packages/sdk/src/actions/fastFill.ts +++ b/packages/sdk/src/actions/fastFill.ts @@ -36,14 +36,14 @@ export async function fastFill( data: parameters, headers: getApiKeyHeader(client) } - - const res = await axios.request(request) - if (res.status !== 200) { + try { + const res = await axios.request(request) + return res.data + } catch (error: any) { throw new APIError( - res?.data?.error || res?.data?.message, - res.status, - res.data + error?.message || 'Fast fill failed', + error?.statusCode || 500, + error ) } - return res.data } diff --git a/packages/sdk/src/utils/axios.ts b/packages/sdk/src/utils/axios.ts index 791d4465..dea99ec8 100644 --- a/packages/sdk/src/utils/axios.ts +++ b/packages/sdk/src/utils/axios.ts @@ -17,7 +17,7 @@ axios.interceptors.response.use( (error) => { return Promise.reject( new APIError( - error.response?.data?.message, + error.response?.data?.message || error.response?.data?.error, error.response?.data?.statusCode || 500, { ...error.response?.data,