mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 02:07:55 +00:00
fix: extract actual error from process-withdraw edge function response
Supabase JS client wraps non-2xx responses as generic FunctionsHttpError
("Edge Function returned a non-2xx status code"), hiding the real error.
Now reads the response body to show the actual error message.
Also adds migration to drop auth.users FK on p2p_withdrawal_limits
(already absent in production, added for migration completeness).
This commit is contained in:
+13
-2
@@ -1046,11 +1046,22 @@ export async function requestWithdraw(
|
|||||||
|
|
||||||
toast.info('Processing withdrawal...');
|
toast.info('Processing withdrawal...');
|
||||||
|
|
||||||
const { data, error } = await supabase.functions.invoke('process-withdraw', {
|
const { data, error, response } = await supabase.functions.invoke('process-withdraw', {
|
||||||
body: { userId, token, amount, walletAddress }
|
body: { userId, token, amount, walletAddress }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (error) throw error;
|
// Supabase client wraps non-2xx as generic FunctionsHttpError (data=null).
|
||||||
|
// Extract the actual error from the unread response body.
|
||||||
|
if (error) {
|
||||||
|
let errorMessage = 'Withdrawal failed';
|
||||||
|
if (response) {
|
||||||
|
try {
|
||||||
|
const body = await response.json();
|
||||||
|
errorMessage = body?.error || errorMessage;
|
||||||
|
} catch { /* response body already consumed or not JSON */ }
|
||||||
|
}
|
||||||
|
throw new Error(errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
if (!data?.success) {
|
if (!data?.success) {
|
||||||
throw new Error(data?.error || 'Withdrawal failed');
|
throw new Error(data?.error || 'Withdrawal failed');
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
-- Migration: Drop auth.users FK constraint on p2p_withdrawal_limits
|
||||||
|
-- This table was missed in 20260223120000 and 20260224050000 migrations.
|
||||||
|
-- user_id is now a deterministic UUID v5 derived from citizen/visa number,
|
||||||
|
-- not an auth.users entry. The FK causes check_withdrawal_limit() to fail
|
||||||
|
-- with a constraint violation on INSERT.
|
||||||
|
|
||||||
|
ALTER TABLE public.p2p_withdrawal_limits
|
||||||
|
DROP CONSTRAINT IF EXISTS p2p_withdrawal_limits_user_id_fkey;
|
||||||
|
|
||||||
|
-- Also drop the ON DELETE CASCADE since auth.users is no longer the source
|
||||||
|
-- The constraint name may vary; try the default naming convention too
|
||||||
|
ALTER TABLE public.p2p_withdrawal_limits
|
||||||
|
DROP CONSTRAINT IF EXISTS p2p_withdrawal_limits_pkey_fkey;
|
||||||
Reference in New Issue
Block a user