mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-21 23:47:56 +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...');
|
||||
|
||||
const { data, error } = await supabase.functions.invoke('process-withdraw', {
|
||||
const { data, error, response } = await supabase.functions.invoke('process-withdraw', {
|
||||
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) {
|
||||
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